2016-06-25 15 views
2

自分の電話機でリモートプッシュ通知が機能するようにしようとしています。私の電話機をコンピュータに接続し、私の電話機でシミュレータを実行すると、Firebaseコンソールから送信された通知は正常に機能します。しかし、私がTestflightにアップロードしてそれを私の電話にダウンロードしたとき、私のプッシュ通知は通っていません。Firebaseプッシュ通知は電話では機能しませんが、シミュレータでは機能します

私の証明書が正しくアップロードされ、以下の私のコードは

class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    override init() { 
     FIRApp.configure() 
     FIRDatabase.database().persistenceEnabled = true 
    } 

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     // Override point for customization after application launch. 
     let notificationTypes : UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound] 
     let notificationSettings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil) 
     application.registerForRemoteNotifications() 
     application.registerUserNotificationSettings(notificationSettings) 

     return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 
    } 

    func application(application: UIApplication, 
     openURL url: NSURL, 
     sourceApplication: String?, 
     annotation: AnyObject) -> Bool { 
      return FBSDKApplicationDelegate.sharedInstance().application(
       application, 
       openURL: url, 
       sourceApplication: sourceApplication, 
       annotation: annotation) 
    } 

    func applicationDidBecomeActive(application: UIApplication) { 
     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
     FBSDKAppEvents.activateApp() 
    } 

    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], 
        fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { 
     // If you are receiving a notification message while your app is in the background, 
     // this callback will not be fired till the user taps on the notification launching the application. 
     // TODO: Handle data of notification 

     // Print message ID. 
     print("Message ID: \(userInfo["gcm.message_id"]!)") 

     // Print full message. 
     print("%@", userInfo) 

     completionHandler(.NoData) 
    } 


    func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { 
     print(error) 
     print(error.description) 
    } 
} 

enter image description here

+0

プロダクション証明書でプッシュ通知をテストできましたか?私は同じ問題を抱えている。アドホックビルドはfirebaseからのプッシュ通知を受信しませんでした。 – sleepwalkerfx

+0

btw、スクリーンショットには開発証明書のみが表示されます。プロダクションSSL証明書を作成しましたか? – sleepwalkerfx

答えて

1

は、あなたが証明書のAPNs分布を作成し、Firebaseコンソールに提出したのでしょうか?

このガイドをご確認ください: https://firebase.google.com/docs/cloud-messaging/ios/certs#configure_an_app_id_for_push_notifications

「アプリは今、プッシュ通知の開発環境を使用することが有効になっているあなたは、あなたのアプリケーションをリリースする準備ができたら、あなたはプッシュ通知を使用するようにアプリケーションを有効にする必要があります。プロダクション環境の場合:これらの手順を繰り返しますが、SSL証明書の開発ではなく、プロダクションSSL証明書セクションの証明書の作成をクリックしてください。 setAPNSTokenを呼び出す場合は、typeの値が正しく設定されていることを確認してください:FIRInstanceIDAPNSTokenTypeSandbox for sandbox環境またはFIRInstanceIDAPNSTokenTypeProd for適切なタイプを設定しないと、メッセージはdelではありませんあなたのアプリに配信されました。

+0

私はそれを持っていると信じています:/ - 元の投稿を編集して画像を含む – Tim

0

他のフォーラムでこの解決策が見つかりました。あなたがFirebaseを使用する場合は、追加する必要がで:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
[[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox]; 
} 

制作:FirebaseAppDelegateProxyEnabled: YES

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
[[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd]; 
} 

...理論的には

TestFlight FirebaseAppDelegateProxyEnabled: NO付きこれは必要ではありません。

関連する問題