2017-10-17 26 views
1

私はFirebaseクラウドメッセージを使用します。私はポッド 'FirebaseInstanceID'、 '= 1.0.2'を持っていて、それを2.0.4に更新しました。今はInstanceID.instanceID()。token()とAPNを取得しています。プッシュ通知が機能しない

FirebaseInstanceIDのバージョンを更新した後、私の通知が機能しなくなりましたが、その理由を理解できません。

「GoogleService-Info.plist」も追加しました。

私のポッド
ポッド 'Firebase /コア'
ポッド 'FirebaseInstanceID'、 '= 2.0.4'
ポッド 'Firebase /メッセージング'
私AppDelegate:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Use Firebase library to configure APIs 
     FirebaseConfiguration.shared.setLoggerLevel(.min) 
     FirebaseApp.configure() 

    Messaging.messaging().remoteMessageDelegate = self 
    if #available(iOS 10.0, *) { 
     // For iOS 10 display notification (sent via APNS) 
     UNUserNotificationCenter.current().delegate = self 

     let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] 
     UNUserNotificationCenter.current().requestAuthorization(
      options: authOptions, 
      completionHandler: {_, _ in }) 
    } else { 
     let settings: UIUserNotificationSettings = 
      UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) 
     application.registerUserNotificationSettings(settings) 
    } 

    application.registerForRemoteNotifications() 
} 

//Notifiction 
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) { 
    if let messageID = userInfo[gcmMessageIDKey] { 
     print("Message ID: \(messageID)") 
    } 

    openScreenFromPush(userInfo: userInfo) 
    print(userInfo) 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], 
       fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 

    if let messageID = userInfo[gcmMessageIDKey] { 
     print("Message ID: \(messageID)") 
    } 

    openScreenFromPush(userInfo: userInfo) 

    print(userInfo) 
    completionHandler(UIBackgroundFetchResult.newData) 
} 

// [END receive_message] 
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { 
    print("Unable to register for remote notifications: \(error.localizedDescription)") 
} 

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 

    var token = "" 
    for i in 0..<deviceToken.count { 
     token = token + String(format: "%02.2hhx", arguments: [deviceToken[i]]) 
    } 
    print("APNs token retrieved: \(token)") 
} 

// [START ios_10_message_handling] 
@available(iOS 10, *) 

extension AppDelegate : UNUserNotificationCenterDelegate { 

    // Receive displayed notifications for iOS 10 devices. 
    func userNotificationCenter(_ center: UNUserNotificationCenter, 
           willPresent notification: UNNotification, 
           withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 
     let userInfo = notification.request.content.userInfo 

     if let messageID = userInfo[gcmMessageIDKey] { 
      print("Message ID: \(messageID)") 
     } 

     print(userInfo) 

     // Change this to your preferred presentation option 
     completionHandler([.alert, .badge, .sound]) 
    } 

    func userNotificationCenter(_ center: UNUserNotificationCenter, 
           didReceive response: UNNotificationResponse, 
           withCompletionHandler completionHandler: @escaping() -> Void) { 
     let userInfo = response.notification.request.content.userInfo 
     // Print message ID. 
     if let messageID = userInfo[gcmMessageIDKey] { 
      print("Message ID: \(messageID)") 
     } 

     openScreenFromPush(userInfo: userInfo) 

     // Print full message. 
     print(userInfo) 

     completionHandler() 
    } 
} 
// [END ios_10_message_handling] 
extension AppDelegate : MessagingDelegate { 
    // [START refresh_token] 
    func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) { 
     print("Firebase registration token: \(fcmToken)") 
    } 
    // [END refresh_token] 
    // [START ios_10_data_message] 
    func application(received remoteMessage: MessagingRemoteMessage) { 
     print("Received data message: \(remoteMessage.appData)") 
    } 
    // [END ios_10_data_message] 
} 

enter image description here

enter image description here

0あなたが(FirebaseApp.configure前UIApplication.shared.registerForRemoteNotifications()を配置する必要が何らかの理由で

答えて

0

func application(_ application: UIApplication, 
        didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

     // Register for remote notifications. This shows a permission dialog on first run, to 
     // show the dialog at a more appropriate time move this registration accordingly. 
     // [START register_for_notifications] 




     UIApplication.shared.registerForRemoteNotifications() 

     FirebaseApp.configure() 

     // [START set_messaging_delegate] 
     Messaging.messaging().delegate = self 
     // [END set_messaging_delegate] 
     // Register for remote notifications. This shows a permission dialog on first run, to 
     // show the dialog at a more appropriate time move this registration accordingly. 
     // [START register_for_notifications] 
     if #available(iOS 10.0, *) { 
      let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] 
      UNUserNotificationCenter.current().requestAuthorization(
       options: authOptions, 
       completionHandler: {_, _ in }) 

      // For iOS 10 display notification (sent via APNS) 
      UNUserNotificationCenter.current().delegate = self 
      // For iOS 10 data message (sent via FCM) 
      Messaging.messaging().remoteMessageDelegate = self 

     } else { 
      let settings: UIUserNotificationSettings = 
       UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) 
      application.registerUserNotificationSettings(settings) 
     } 




     // [END register_for_notifications] 
     return true 
    } 
+0

ありがとう、私はしたが、助けなかった –

0

私は中InstanceID.instanceID().setAPNSToken(deviceToken, type: InstanceIDAPNSTokenType.unknown)

を追加します。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
    var token = "" 
    for i in 0..<deviceToken.count { 
     token = token + String(format: "%02.2hhx", arguments: [deviceToken[i]]) 
    } 

    print("APNs token retrieved: \(token)") 
} 

方法。そしてそれは動作します

関連する問題