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];
}