2016-09-08 18 views
0

こんにちは私はGoogleのFirebase経由でプッシュ通知を送信するiPhoneアプリを作っています。私はプログラミングのためにSwiftとXcodeを使っています。私がアプリケーションを開くと、プッシュ通知を許可するように求められますが、Firebaseコンソールから通知を受け取ったときには通知が届きません。あなたが私を助けることができるかどうか疑問に思っていました。 Ad Hocのエクスポートを使用して、.isaを友人のiPhoneに転送し、そのようにテストします。私はFirebaseのチュートリアルに正確に従った.plist、cocoaポッドを追加し、プロジェクト設定で証明書をアップロードした。私は有料のリンゴ開発者アカウントを持っています。Firebase経由のiOSプッシュ通知が機能しない

+0

すべてこのhttp://shubhank101.github.io/iOSAndroidChaosOverFlow/2016/07/Push-Notification-in-iOS-using-FCM-(Swiftに従う) – Shubhank

答えて

0

必要な操作がもう少しあります。 registerForRemoteNotificationsになると、Firebaseに与える必要があるAPNSトークンが届きます。これはapplication didRegisterForRemoteNotificationsWithDeviceTokenで行われます。

import UIKit 
import CoreData 
import Firebase 
import FirebaseMessaging 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    override init() { 

     super.init() 

     FIRApp.configure() 
    } 

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

     application.registerForRemoteNotifications() 
     application.registerUserNotificationSettings(
      UIUserNotificationSettings(
       forTypes: [.Alert, .Badge, .Sound], 
       categories: nil 
      ) 
     ) 

     NSNotificationCenter.defaultCenter().addObserver(self, 
      selector: #selector(tokenRefreshNotification), 
      name: kFIRInstanceIDTokenRefreshNotification, 
      object: nil 
     ) 

     return true 
    } 

    func applicationDidEnterBackground(application: UIApplication) { 

     FIRMessaging.messaging().disconnect() 
    } 

    func applicationDidBecomeActive(application: UIApplication) { 

     FIRMessaging.messaging().connectWithCompletion { (error) in 

      switch error { 
      case .Some: 
       print("Unable to connect with FCM. \(error)") 
      case .None: 
       print("Connected to FCM.") 
      } 
     } 
    } 

    func applicationWillResignActive(application: UIApplication) {} 

    func applicationWillEnterForeground(application: UIApplication) {} 

    func applicationWillTerminate(application: UIApplication) {} 

    func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 

     FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: .Sandbox) 
    } 

    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], 
        fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { 

     print("MessageID : \(userInfo["gcm.message_id"]!)") 
     print("%@", userInfo) 
    } 

    func tokenRefreshNotification(notification: NSNotification) { 

     if let refreshedToken = FIRInstanceID.instanceID().token() { 
      print("Instance ID token: \(refreshedToken)") 
     } 

     applicationDidBecomeActive(UIApplication.sharedApplication()) 
    } 
} 
+0

は答えをいただき、ありがとうございます。あなたの解決策を試してみて、スレッド1:EXC_BAD_INSTRUCTION(コード= EXC_I386_INVOP、サブコード= 0x0)を取得し、このコード行を赤色で表示します: 'print(" MessageID:\(userInfo ["gcm_message_id"]!) ")' アイデア? –

+0

'print(" MessageID:\(userInfo ["gcm.message_id"]!) ")' – Callam

関連する問題