0

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 { 
     } 
    } 
} 
+0

こんにちは、プラサドは、私も同じ問題に直面し、それはあなたのための任意のチャンスを仕事でしたか? – Maheep

+0

@Maheep、まだ解決策はありませんでした。 – Prasad

答えて

0

ログアウトを強制しようとしましたか? 試してみてください! FIRAUTH.auth()!サインアウト()

+0

はい。それは役に立たない。 – Prasad

+0

このコードはどこで使うべきですか? – Maheep

1

実際に私はこのラインを試してみました、私の作品: -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    [[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError * _Nullable error) { 
     // Add observer for InstanceID token refresh callback. 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshNotification:) name:kFIRInstanceIDTokenRefreshNotification object:nil]; 
    }]; 
    return true; 
} 
関連する問題