2017-05-17 13 views
1

私のプロジェクトの一環として、iOSのfirebaseクラウドメッセージングに取り組んでいます。次のように部分的に私の問題がある:iOSアプリのAppDelegateには、次のコードが含まれていますXamarin iOS firebaseの問題

 // Monitor token generation 
     InstanceId.Notifications.ObserveTokenRefresh((sender, e) => 
     { 
      // Note that this callback will be fired everytime a new token is generated, including the first 
      // time. So if you need to retrieve the token as soon as it is available this is where that 
      // should be done. 
      var refreshedToken = InstanceId.SharedInstance.Token; 
      Console.WriteLine(refreshedToken); 

      if (refreshedToken != null) 
      { 
       if (credentialsService.Email.Equals("") && credentialsService.Password.Equals("")) 
       { 
        credentialsService.SaveCredentials(refreshedToken); 
       } 
       else 
       { 
        credentialsService.SaveCredentials(credentialsService.Email, credentialsService.Password, refreshedToken, credentialsService.Token); 
       } 
      } 
      else 
      { 
       Console.WriteLine("error, token is empty"); 
      } 
     }); 

トークンが必要なときはいつでも、このコールバック関数が呼び出されます。それで、credentialsServiceは、ユーザーがログインしたときにそのトークンを収集してサーバーに送信するために使用されます。しかし、問題は、トークンがすぐには準備できていないことです。このアプリのスプラッシュ画面が読み込まれる前に、これのアンドロイド版(ほぼ同じ動作)にトークンが割り当てられます。しかし、iOSアプリは、トークンが生成されるまでにかなりの時間(約20〜30秒)を要します。ユーザーはこの時点で既にログに記録することができ、その後生成されるトークンは、ユーザーが再ログアウトするとサーバーにのみ送信されます。

トークンがより速く生成されるようにするソリューションはありますか?私はインターネット上で珍しいことではない、次のエラーを取得します。しかし、ソリューションのためのグーグルは本当に役に立たなかった。

は= APNSトークンエラードメインの取得に失敗しました

FIRMessaging登録が認証資格情報

と準備ができていないコード= 1001 "(ヌル)" をcom.firebase.iid、 リッカルドありがとう

+0

誰かが同じ問題を解決しますか? –

答えて

0

私は解決策を持っていますが、醜いです:

  while (string.IsNullOrEmpty(token)) 
     { 
      _taskToken.Wait(1000); 
      this.token = InstanceId.SharedInstance.Token; 
     } 

あなたは60または90秒後にリフレッシュを待ってからトークンを得ることができます。

関連する問題