Nicht erhalten push-Benachrichtigungen auf iOS-von der Feuerstellung 3.2.0 Themen
Ich folgte der Anleitung von google auf https://firebase.google.com/docs/notifications/ios/console-topics#receive_and_handle_topic_messages zu abonnieren Feuerstellung Thema auf meinem iOS-app.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
FIRMessaging.messaging().subscribeToTopic("/topics/Notifications")
let homeViewController = UINavigationController(rootViewController: HomeViewController())
UINavigationBar.appearance().translucent = false
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window?.rootViewController = homeViewController
window?.makeKeyAndVisible()
return true
}
Jedoch, wenn ich ein Thema push-Benachrichtigung aus der FB-Konsole. Ich konnte nicht empfangen von push-Benachrichtigungen. Aber wenn ich senden push-Benachrichtigung an Benutzer-segment, von der Konsole aus, der push funktioniert perfekt. Wenn ich die Xcode-Konsole, sehe ich dies FIRMessaging Fehler.
2016-05-31 11:11:47.893: <FIRMessaging/WARNING> Cannot subscribe to topic: /topics/Notifications with token: (null)
Ich habe versucht, die Suche für diesen Fehler aber haben kein Glück etwas zu finden. Ich bin nicht sicher, ob dies das problem verursacht meine app erhalten Sie keine push aus den Themen.
Kennt jemand dieses Problem und weiß wie es zu lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aussieht, vielleicht bist du aufrufen
subscribeToTopic
zu früh.Ersten, bevor Sie ein FB-Aufruf, stellen Sie sicher, Sie rufen
Werden, das sicherstellt, dass alle FB-Dienste ordnungsgemäß eingerichtet und initialisiert.
Weiter, Sie gehen zu müssen, warten Sie einfach ein bisschen zu abonnieren Themen. Ihr Kunde muss sich zuerst registrieren Ihrer app für beide APNs und FCM, um sicherzustellen, dass es kann Benachrichtigungen empfangen. Mit einem Netzwerk-call, das heißt, Sie können nicht abonnieren Sie Themen, wenn Sie Ihre app zum ersten mal startet.
Stattdessen würde ich empfehlen, dass code in Ihrem
application:didRegisterUserNotificationSettings
- handler statt. So etwas wie dieses:Edit: Und der Swift-version...
/topics/cool_users
statt nurcool_users
Den akzeptierte Lösung nicht für mich arbeiten. Das token ist nicht immer verfügbar, wenn
application:didRegisterUserNotificationSettings:
genannt wird.Zum Beispiel, wenn die Anwendung neu installiert wurde und zum ersten mal gestartet wird
FIRInstanceID.instanceID().token()
gibt es nil zurück.Müssen Sie sicherstellen, dass die Anwendung Aufrufe
subscribeToTopic:
nach die token zur Verfügung.Ich endete mit der Erstellung eines Helfer-Objekt, das reiht
subscribeToTopic:
,unsubscribeFrom:
ruft und führt diese in der Reihenfolge Ihres Eintreffens nach der token kommt.TokenReadyOperation wartet, bis der token wird angezeigt. AsynchronousOperation ist als Basisklasse zu minimieren, beschränken.
Paar Dinge im Auge zu behalten:
FIRApp.configure()
oderFIRApp.configureWithOptions(_:)
vor die alle FB-Aufrufe (wie Todd Kerpelman erwähnt)subscribeToTopic:
,unsubscribeFrom:
sind nicht thread-sicher und muss ausgeführt werden, auf der main-threadFIRApp.configureWithOptions(_:)
Dokumentation.kFIRInstanceIDTokenRefreshNotification
auf einer frischen Installation scheint der einzige Weg zu verhindern, dass Thema abonnieren Ausfälle.Mein problem wurde nicht gelöst durch aufrufen
subscribeToTopic
nachfunc application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
stattdessen arbeitete er durch den Aufruf
subscribeToTopic
nachdiese Funktion aufgerufen werden, wenn Sie Ihre push-token von APNS nicht FB.
Xcode 8.3.2
Swift 3.0