import Firebase import FirebaseInstanceID import FirebaseMessaging func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { registerForPushNotifications(application) FIRApp.configure() // Add observer for InstanceID token refresh callback. NSNotificationCenter .defaultCenter() .addObserver(self,selector: #selector(AppDelegate.tokenRefreshNotificaiton),name: kFIRInstanceIDTokenRefreshNotification,object: nil) // Override point for customization after application launch. return true } func registerForPushNotifications(application: UIApplication) { let settings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: [.Alert,.Badge,.Sound],categories: nil) application.registerUserNotificationSettings(settings) application.registerForRemoteNotifications() } func application(application: UIApplication,didReceiveRemoteNotification userInfo: [NSObject : AnyObject],fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { print("===== didReceiveRemoteNotification ===== %@",userInfo) } func tokenRefreshNotificaiton(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() } func connectToFcm() { FIRMessaging.messaging().connectWithCompletion { (error) in if (error != nil) { print("Unable to connect with FCM. \(error)") } else { print("Connected to FCM.") } } }
还要在Info.plist中完成FirebaseAppDelegateProxyEnabled = NO
我现在不知道,但是我在didReceiveRemoteNotification中打印了(…),但是没有弹出.我从Firebase发送消息 – >控制台 – >通知 – >单个设备,并复制我从xCode控制台获取的令牌 – > func tokenRefreshNotificaiton
获取下一个在控制台,但不要弹出
<FIRAnalytics/INFO> Firebase Analytics enabled InstanceID token: TOKEN_ID Connected to FCM. ===== didReceiveRemoteNotification ===== %@ [notification: { body = test; e = 1; },collapse_key: com.pf.app,from: 178653764278]
解决方法
在AppDelegate.m中设置以下代码
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // for development [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandBox]; // for production // [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd]; }