我正在使用Firebase雲消息傳遞向我發送iOS應用程序中的推送通知。我正在收聽我的AppDelegate中的kFIRInstanceIDTokenRefreshNotification
通知。一旦應用程序委託獲取application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
中的設備令牌,我的選擇器方法kFIRInstanceIDTokenRefreshNotification
即被調用。Firebase雲消息傳遞未獲得第二次註冊
我的問題是,一旦用戶註銷並再次登錄,但是這次在application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
中接收到設備令牌後,我的選擇器方法kFIRInstanceIDTokenRefreshNotification
未被調用。
作爲觀察點,選擇器方法在第一次被調用後(即使用戶沒有註銷)不會被調用。
我在下面附上我需要的代碼。讓我知道是否有其他代碼部分是必要的。請有人可以解釋我在這裏出錯的地方。
class AppDelegate: UIResponder {
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(tokenRefreshNotification(_:)), name: kFIRInstanceIDTokenRefreshNotification, object: nil)
return true
}
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Unknown)
}
func tokenRefreshNotification(notification: NSNotification) {
print("Called only first time")
}
func loginFirebaseWithFacebookAccessToken(accessToken: String) {
let credential = FIRFacebookAuthProvider.credentialWithAccessToken(accessToken)
if let user = FIRAuth.auth()?.currentUser {
user.linkWithCredential(credential) { (user, error) in
print("Sign in done")
}
} else {
FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
print("Sign in done")
}
}
}
func signOutFromFirebase() {
do {
try FIRAuth.auth()?.signOut()
}
catch {
}
}
}
嗨,普拉薩德,我也面臨同樣的問題,它是否適合你的工作機會嗎? – Maheep
@Maheep,我還沒有得到任何解決方案。 – Prasad