2016-08-07 20 views
1

私は自分のデバイスにデモアプリケーションを送信しました。私は自分のデモアプリケーションデリゲートを使ってデモアプリケーションをセットアップし、プロビジョニングプロファイルでプッシュ通知を有効にし、私の.p12をfirebaseの管理パネルにアップロードしましたが、何を試みても(すべてを辞めるなど)、firebaseコンソールからプッシュメッセージを送信できません。 私はここで何が欠けていますか?Firebase&Push通知/クラウドメッセージ

編集:私は多分、私はあなたがsetAPNSTokenを呼び出していることがわかりません

import UIKit 
import Firebase 
import FirebaseInstanceID 
import FirebaseMessaging 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     // Register for remote notifications 
     if #available(iOS 8.0, *) { 
      // [START register_for_notifications] 
      let settings: UIUserNotificationSettings = 
       UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) 
      application.registerUserNotificationSettings(settings) 
      application.registerForRemoteNotifications() 
      // [END register_for_notifications] 
     } else { 
      // Fallback 
      let types: UIRemoteNotificationType = [.Alert, .Badge, .Sound] 
      application.registerForRemoteNotificationTypes(types) 
     } 

     FIRApp.configure() 

     // Add observer for InstanceID token refresh callback. 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.tokenRefreshNotification), 
                 name: kFIRInstanceIDTokenRefreshNotification, object: nil) 

     return true 
    } 

    // [START receive_message] 
    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) 
    } 
    // [END receive_message] 

    // [START refresh_token] 
    func tokenRefreshNotification(notification: NSNotification) { 
     let refreshedToken = FIRInstanceID.instanceID().token()! 
     print("InstanceID token: \(refreshedToken)") 

     // Connect to FCM since connection may have failed when attempted before having a token. 
     connectToFcm() 
    } 
    // [END refresh_token] 

    // [START connect_to_fcm] 
    func connectToFcm() { 
     FIRMessaging.messaging().connectWithCompletion { (error) in 
      if (error != nil) { 
       print("Unable to connect with FCM. \(error)") 
      } else { 
       print("Connected to FCM.") 
      } 
     } 
    } 
    // [END connect_to_fcm] 

    func applicationDidBecomeActive(application: UIApplication) { 
     connectToFcm() 
    } 

    // [START disconnect_from_fcm] 
    func applicationDidEnterBackground(application: UIApplication) { 
     FIRMessaging.messaging().disconnect() 
     print("Disconnected from FCM.") 
    } 
    // [END disconnect_from_fcm] 
} 
+0

このコードをデバイスに配備するか、シミュレータを使用していることを確認するだけですか?また、ログを投稿すると役立ちます。私はFirebaseを通じてAPNを使っているアプリを持っています。簡単なテストと同じように、 'FIRMessaging'に接続した後、どのトピックにも購読できますか?例: 'FIRMessaging.messaging()。subscribeToTopic("/topics/issues ")' – Mazyod

+0

ご意見ありがとうございますが、didRegisterRemoteNotificationを本当に忘れました。ああ、私は盲目だ。 –

答えて

3

を(コンソールに与えられた、idを持つ)全セグメントにしても、単一のデバイスに送信しようとしませんでしたそれはあなたが欠けているものですか?

// AppDelegate.m 
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
    [firebaseManager didRegisterRemoteNotifications:deviceToken]; 
} 

// FirebaseManager.swift 
func didRegisterRemoteNotifications(deviceToken: NSData) { 

    let type: FIRInstanceIDAPNSTokenType 
    #if DEBUG 
     type = .Sandbox 
    #else 
     type = .Prod 
    #endif 

    FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: type) 
} 
+0

ありがとうございました!私はそれを持っていることを誓うことができたが、それは欠けていた。私がdocs @ firebase.google.comに従ったように、迷惑を掛けていたのですが、とにかく彼らは吸います。私はfirebaseの古いGoogle以外のスタイルのドキュメントを好んだ<3.0もっと:) –

+1

@LucèBrùlèええ、本当に..ファイアベースの伝説のドキュメントは傑作だった。また、私は最近、その貧弱な新しい文書のために、ここで火器の基礎についての些細な質問に多く答えました。 – Mazyod

関連する問題