i had implement Firebase with FirebaseAuth/FCM etc and did sent notification successfully through Firebase Console.
However i would need to push the notification from my own app server.
i am wondering below which way is correct way to retrieve the registration id for the device:-
1) retrieve registration id token from didRegisterForRemoteNotificationWithDeviceToken
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
var token = ""
for i in 0..<deviceToken.count {
token += String(format: "%02.2hhx", arguments: [deviceToken[i]])
}
print("Registration succeeded!")
print("Token: ", token)
Callquery(token)
}
2) Retrieve Registration token from firebase (Based on Firebase document which retrieve the current registration token)
let token = FIRInstanceID.instanceID().token()!
i was using the first way, the push notification is not being received even the registration id is stored on my app server database accordingly and i get this CURL session result :-
{"multicast_id":6074293608087656831,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
i had also tried the second way and get fatal error while running the app as below:-
appreciated if anyone could point me the right way, thanks!
The tokenRefreshNotification
function doesn't always get called when launching the app.
However, when placing the code inside the regular didRegisterForRemoteNotificationsWithDeviceToken
delegate function, I can get the token every time:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
if let refreshedToken = InstanceID.instanceID().token() {
print("InstanceID token: \(refreshedToken)")
}
}
(Swift 3 + Firebase 4.0.4)