由于后端的要求,这是我第一次使用firebase,所以如果你不理解这个问题或者它没有任何意义,请告诉我。
我想要实现的是当用户注册时我需要Registration_ID
这是FCM令牌。这就是我在AppDelegate.swift
>中实现它的方式。 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 })
} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
之后在AppDelegate.swift
我添加了这三个功能:
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken as Data
}
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
print("Firebase registration token: \(fcmToken)")
}
func application(application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
Messaging.messaging().apnsToken = deviceToken as Data
}
问题在于,当它要求获得通知许可并且用户否认它时,我将如何获得FCM,当用户注册或登录时,我将发送给后端。
答案 0 :(得分:1)
如果用户未授予权限,您将无法发送推送通知。您使用的第三方无法更改此权限(亚马逊,firebase)。对于Firebase云消息传递推送通知权限是必须的。
答案 1 :(得分:0)
无论用户对授权请求的响应如何,都会生成FCM令牌 - 如果响应时间足够长,则会在给出响应之前生成FCM令牌。
在用户授予权限之前,通知无效,但生成FCM令牌不依赖于获取权限。
请注意:我没有在任何地方找到此文件,但通过我自己的测试。我已在iOS 10.3.1和11.0上测试过。
第一次生成令牌时,Messaging
委托didRefreshRegistrationToken
被调用,我怀疑问题是您没有设置委托
Messaging.messaging().delegate = self