2017-06-10 11 views
0

通知は受信されません。アンドロイドへの送信 は、iOSへの送信、細かいiOS(Firebase通知あり、すべて動作していません)

私はここに、フォアグラウンドまたはバックグラウンド通知

を受信して​​いない

私はFirebaseコンソールから送信しています失敗をAppDelegate.swift

import UIKit 
import Firebase 
import FirebaseMessaging 
import UserNotifications 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate { 

    var window: UIWindow? 


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     // Override point for customization after application launch. 

     if #available(iOS 10.0, *) { 
      UIView.appearance().semanticContentAttribute = .forceLeftToRight 
     } 

     FirebaseApp.configure() 

     // [START set_messaging_delegate] 
     Messaging.messaging().delegate = self as? MessagingDelegate 
     // [END set_messaging_delegate] 

     //create the notificationCenter 
     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 }) 

      // For iOS 10 data message (sent via FCM) 
      //FIRMessaging.messaging().remoteMessageDelegate = self 

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

     application.registerForRemoteNotifications() 

     return true 
    } 

    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("Registration succeeded! Token: ", token) 

     let topicName = "/topics/ChaclateOnMobile" 
     Messaging.messaging().subscribe(toTopic: topicName) 
    } 

    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { 
     print("Registration failed! \(error)") 
    } 

    // Firebase notification received 
    @available(iOS 10.0, *) 
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (_ options: UNNotificationPresentationOptions) -> Void) { 

     // custom code to handle push while app is in the foreground 
     print("Handle push from foreground\(notification.request.content.userInfo)") 

     let dict = notification.request.content.userInfo["aps"] as! NSDictionary 
     let d : [String : Any] = dict["alert"] as! [String : Any] 
     let body : String = d["body"] as! String 
     let title : String = d["title"] as! String 
     print("Title:\(title) + body:\(body)") 
     self.showAlertAppDelegate(title: title,message:body,buttonTitle:"ok",window:self.window!) 

    } 

    @available(iOS 10.0, *) 
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 
     // if you set a member variable in didReceiveRemoteNotification, you will know if this is from closed or background 
     print("Handle push from background or closed\(response.notification.request.content.userInfo)") 
    } 

    func showAlertAppDelegate(title: String,message : String,buttonTitle: String,window: UIWindow){ 
     let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert) 
     alert.addAction(UIAlertAction(title: buttonTitle, style: UIAlertActionStyle.default, handler: nil)) 
     window.rootViewController?.present(alert, animated: false, completion: nil) 
    } 
    // Firebase ended here 
される予定です

}

+0

チェックで受信されます。 – PGDev

+0

1. Xcode機能から**プッシュ通知**を有効にしましたか? 2.バックグラウンドモード(Xcode機能も含む)から**リモート通知**を有効にしましたか?必要なものの一覧については、[こちら](https://stackoverflow.com/questions/42275060/what-is-difference-between-remote-notification-and-silent-notification-in-ios/42302369)をご覧ください。 #42302369) – Honey

答えて

1
  1. あなたがあるかどうか確認して下さい通知の送信に正しいtokenを使用してください。
  2. registeredPush Notificationsを受け取るアプリがありますか?あなたは

アプリはnot runningあるAppDelegate.に適切なメソッドを実装している場合

  • チェックは、通知がdidFinishLaunchingWithOptionsで受信されます。

    は、あなたのコード内でdidFinishLaunchingWithOptionsにこれを追加します。

    if let notification = launchOptions?[.remoteNotification] as? [String: AnyObject] 
    { 
        //Your code 
    } 
    

    をあなたのアプリがbackground/foregroundであるときは、通知を送信するための正しいトークンを使用している場合は、通知がdidReceiveRemoteNotification

    func application(
        _ application: UIApplication, 
        didReceiveRemoteNotification userInfo: [AnyHashable : Any], 
        fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 
    { 
        //Your code 
    } 
    
  • 関連する問題