在后台或关机模式下,我无法让我的应用程序接收通知。我遵循了Firebase指南,了解了如何在我的应用程序中实现Firebase消息传递。以前我使用过GCM(谷歌云消息),它运行得很好,但自从升级到Firebase后,我无法让它工作。一旦启动我的应用程序,我在后台或关机时发送的所有通知(通过firebase控制台通知)都会被发送。
我有:
值得一提的是,我已经通过在我的Info.plist文件中将FirebasApp委托ProxyEnable设置为NO来禁用swizzling。
相关代码:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let types: UIUserNotificationType = [UIUserNotificationType.Badge, UIUserNotificationType.Alert, UIUserNotificationType.Sound]
let settings: UIUserNotificationSettings = UIUserNotificationSettings( forTypes: types, categories: nil )
application.registerUserNotificationSettings( settings )
application.registerForRemoteNotifications()
FIRApp.configure()
}
func connectToFcm() {
FIRMessaging.messaging().connectWithCompletion { (error) in
if (error != nil) {
print("Unable to connect with FCM")
} else {
print("Connected to FCM.")
self.refreshToken()
}
}
}
func refreshToken(){
if let refreshedToken = FIRInstanceID.instanceID().token() {
gcmToken = refreshedToken
userDefaults.setValue(gcmToken, forKey: CONSTANTS.GCM_TOKEN)
if(userDefaults.boolForKey("UserLoggedIn")){
pushGcmToken() //push the token to server
}
}
}
func onTokenRefresh() {
refreshToken()
// Connect to FCM since connection may have failed when attempted before having a token.
connectToFcm()
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
NSLog("didReceiveRemoteNotification \(userInfo)")
FIRMessaging.messaging().appDidReceiveMessage(userInfo)
handleRemoteNotification(userInfo)
}
func handleRemoteNotification(userInfo: [NSObject : AnyObject]){
if let notification = userInfo["notification"] as? [NSObject : AnyObject]{
let bodyNot = notification["body"] as! String
var titleNot = "Ändring"
var category = "UNIFIED_OTHER_CATEGORY"
if(notification["title"] != nil){
titleNot = (notification["title"] as! String == "Call" ? "Inkomande samtal" : notification["title"]) as! String
category = "UNIFIED_CALL_CATEGORY"
}
let notis = UILocalNotification()
notis.alertTitle = titleNot
notis.alertBody = bodyNot
notis.soundName = UILocalNotificationDefaultSoundName // play default sound
notis.userInfo = ["UUID": "122" ] // assign a unique identifier to the notification so that we can retrieve it later
notis.category = category
notis.fireDate = NSDate()
UIApplication.sharedApplication().scheduleLocalNotification(notis)
}
}
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
NSLog("didRegisterForRemoteNotificationsWithDeviceToken \(deviceToken)")
FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Sandbox)
}
我甚至尝试过调酒。同样的事情发生了。我将非常感谢任何帮助或提示到正确的方向。
我配置下面的东西和它的工作罚款为我的应用程序,
info.plist两把钥匙
<key>FIRMessagingAutoRegisterEnabledflag</key>
<true/>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
测试通知开发模式的代码
[[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox];
从Firebase控制台下载GoogleService-Info.plist并将其放在应用程序中
我正在尝试使用Firebase Notification Composer向我的设备发送测试通知。我正在接收FCM令牌并将其打印到我的控制台,然后尝试向该令牌发送通知。 以下是我检查过的内容: 1) 我使用的是iOS 12.4.1 2) 我正在分配消息传递代理 3)我从委托方法接收FCM令牌 4) 我已经验证了通知是通过打印到控制台启用的,当提示我允许通知时,我单击了允许 5) 我已经验证了在Fi
和Firebase响应 {通知:{Title:测试标题,正文:测试通知文本},数据:{orderid:2,click_action:FLUTTER_NOTIFICATION_CLICK,订单名称:farhana}}
我使用FCM向单个iOS设备发送推送通知,触发http请求到Firebase云功能。在遵循FCM和APNs文档之后,当应用程序在后台运行时,一切都正常工作。我在所有情况下都成功地收到了通知。 唯一的问题是:推送通知不会从睡眠中点亮我的锁屏。我仍然收到推送通知,当我按下home按钮手动唤醒设备时,可以看到它。但是通知本身不会唤醒我的设备。 null 我已经打开了“后台模式”功能>同时选择了“远程通知
我可能已经阅读了所有其他与此相关的SO线程,但我找不到答案,而且在Android监视器中也没有日志跟踪。有人对此有提示吗?
我在ios的应用程序中使用Firebase云消息通知,但当我测试真正的机器时,我发现我无法接收任何推送消息。 我使用ios的Firebase Unity包。我检查了所有的步骤,但我不知道问题出在哪里。 我使用P8APNS文件,即keychain中的开发者标识和推送通知。 在xcode中,我打开了选项(推送通知和后台模式),但它无法接收推送消息、后台或前台。 以如下方式登录xcode控制台:
我试图在我正在开发的Cordova应用程序中获得推送通知。它们在Android应用程序中工作得很好,在iOS应用程序中,当应用程序处于前台时,它们也工作得很好,但当应用程序处于后台或终止时,我不会收到任何通知。 我启用了“推送通知”和“后台模式-远程通知”功能: 我100%肯定服务器有设备令牌(因为推送通知在前台工作,我可以在数据库中看到它)。 如果我在应用程序应该收到通知后启动它或将它带到前台,