Firebase Cloud Messagingを使用して、iOSアプリケーションでプッシュ通知を送信しています。私はAppDelegateのkFIRInstanceIDTokenRefreshNotification
の通知を聞いています。アプリケーションデリゲートがapplication(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
にデバイストークンを取得すると、kFIRInstanceIDTokenRefreshNotification
のセレクタメソッドが呼び出されます。Firebase Cloudメッセージが2回目に登録されない
私が問題になるのは、ユーザーがサインアウトしてサインインした後、今度はデバイストークンが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