我已根据此演练设置推送通知:https://www.appcoda.com/firebase-push-notifications/
但是当我从Firebase发送测试消息时,它没有显示出来。我遵循了所有步骤,我有有效的证书:
为推送通知设置配置文件:
在我的App ID下,它显示已启用通知:
我已将证书上传到Firebase:
在AppDelegate
didFinishLaunchingWithOptions
:
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()
与AppDelegate
中的Firebase回调方法一起:
func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) {
print(remoteMessage.appData)
}
显然我已导入:
import UserNotifications
import FirebaseInstanceID
import FirebaseMessaging
我不确定为什么推送通知不起作用,似乎一切都已到位。我做的唯一不寻常的事情就是从Target中删除权利 - >代码签名,因为当我尝试运行应用程序时,它给了我一个无效的权利错误。现在它已被删除,应用程序运行正常。我对这个单独的问题有一个公开的问题但是现在我认为这不是我在这里遇到问题的原因。
要确认一下,添加通知后我不必重新下载Google plist吗?我在添加通知之前在我的项目中使用了Firebase,所以我已经有了一个。
感谢您提供有关通知的任何帮助!
答案 0 :(得分:1)
尝试添加FirebaseAppDelegateProxyEnabled type "Boolean" value "NO" in your info.plist
并可能添加Messaging.messaging().shouldEstablishDirectChannel to true in your AppDelegate
答案 1 :(得分:0)
如果启用了推送通知,您可以检查功能选项卡吗?此外,从Xcode 8开始,您需要使用aps-environment集添加权利文件。如果您从功能中禁用并启用推送通知,您将获得此文件。