2016-05-25 5 views

答えて

11

次の点を確認します。

  • バンドルIDが同じであることを、あなたはGoogleService-Infoで
  • コード署名のparamsを設定1(ターゲット=>設定を構築=>コード署名) Firebaseで設定したp12 certファイルと一致しています。 enter image description here

また、あなたはそれらのTUTOSに従わなければならない:

そして依頼するを忘れないでください許可ユーザー単に(例えばAppDelegateファイルで、または他のViewControllerで)自分のアプリでそれを追加する:

let notificationTypes: UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound] 
let pushNotificationSettings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil) 
application.registerUserNotificationSettings(pushNotificationSettings) 
application.registerForRemoteNotifications() 
+4

それでも問題が発生しました – alizx

+0

「AppDelegateファイルなど」に追加しないことをお勧めします。最初のアプリ起動時に誰もプッシュ通知のアクセス許可を受け入れないためです。 –

0

あなたはこのエラーを処理する前に、この行を修正する必要があります。

Failed to fetch default token Error Domain=com.firebase.iid Code=0 "(null)"

Here is an answer to fix this issue

+0

いつも他のSOの回答にリンクするのは良いですが、リンクを提供している回答には常に完全な回答を含めてください。 -1 – Tim

+0

が機能しませんでした。それを試してみました。 – mythicalcoder

26

Xcode8を使用して、機能でKeychain Sharingを有効にするだけでした。

app.xcworkspaceファイルを開き、Targetを選択します>機能>この問題の

+4

この機能を有効にした理由を明確にしてください。私は上記のようにしましたが、それでもFCMトークンは得られません。 – Suke

+0

この機能はなぜ必要ですか? –

+0

はまだ動作しません。 – mythicalcoder

22

考えられる理由「キーホルダーが共有する」有効にする:

  1. デバイスの日付は、現在の日付に設定されませんでした。
  2. バンドルIDは、GoogleService-Infoで設定したものと同じではありません。
  3. .p12 Firebaseコンソールにアップロードされた証明書が正しくありません。
+8

"1.デバイスの日付が現在の日付に設定されていませんでした。非常に重要で興味深い点です。あなたは私にいくつかの時間を救った!ありがとう!とにかく、デバイスの日付が現在の日付に設定されていないと誰もそれが動作しない理由を知っていますか? – vladiulianbogdan

+0

デバイスの日付が正しくない場合、Firebaseは定期的にトークンを取得しようとしているのを知っているので、次にデバイストークンをいつ取得するのか分かりません。 –

+1

@RachitRawatデバイスの日付は意味します。詳しく説明できますか? –

1

開発APN証明書をFirebaseにアップロードしたことを確認してください。プロジェクトの設定=> [クラウドメッセージ]タブに移動します。

1

これでしばらくは立ち往生したことがありますが、なぜ私がそれを動作させることができなかったのかという理由は、私がセカンダリfirebaseアプリケーションを使用していたことでした。 それは私のバグのようです。 回避策として、の前に追加のアプリケーションを初期化しなければなりませんでした(AppDelegateで)。M):

//initialise the secondary app, for example: 
NSString *logFirebaseOptionFile = [[NSBundle mainBundle] pathForResource:@"GoogleService-LOG-Info" ofType:@"plist"]; 
FIROptions *firebaseOptions = [[FIROptions alloc] initWithContentsOfFile:logFirebaseOptionFile]; 
NSString *logAppName = @"mybands_logs"; 
[FIRApp configureWithName:logAppName options:firebaseOptions]; 

//then the default app for FCM to work 
[FIRApp configure]; 
4

私のiphone時間があるこの に4時間を費やし、最終的に問題を持って、 thatsの私は同じ問題 が今日デフォルトトークンエラードメイン= com.firebase.iidコード= 501 を取得するために失敗しています間違っている(手動でテストするために差分時間を設定する)

あなたはfirebaseトークンを要求しているので一度チェックしてください。

0

まあ、私も同じ問題があります。他の投稿によって導入されたソリューションを使用して修正することはできません。クライアントのApp FCM SDKとFCMサーバー間の通信がうまくいかないようです。

私の修正は私のVPNにログインしたことです(これをしないと中国本土はGoogleサービスを使用できません)。その後、私はfirebaseトークンを得ることができました。

さらに、トークンを取得できなかった場合。次回は[[FIRInstanceID instanceID] token]を使ってfirebaseトークンにアクセスしようとします。 Firebase SDKは、まだnilの場合にトークンを再度フェッチしようとします。この試みが成功すると、トークンリフレッシュ通知(kFIRInstanceIDTokenRefreshNotification)がポストされます。

関連する問題