ios - Swift OneSignal 重复 PlayerId 和 PushToken
问题描述
我将 Onesignal 与 Firebase 一起使用,但我的问题是为所有用户生成了相同的 PlayerID 和 PushToken。下面的图片显示了 UserID 和 PushTokens 的打印输出。我从我的设备中删除了我的应用程序并重新安装了它。第一个打印输出来自 AppDelegate,我在其中得到“您想允许通知吗?”,然后第二个打印输出是我的“客户”正在创建配置文件的地方。第三个打印输出是在“客户”创建配置文件之后,但第三个用户 ID 和推送令牌不同,但不要这样保存。我究竟做错了什么?第二个打印输出是我为所有用户得到的。
应用委托
let notificationReceivedBlock: OSHandleNotificationReceivedBlock = { notification in
print("Received Notification: \(notification!.payload.notificationID)")
}
//OneSignal.add(self as! OSSubscriptionObserver)
let notificationOpenedBlock: OSHandleNotificationActionBlock = { result in
// This block gets called when the user reacts to a notification received
let payload: OSNotificationPayload = result!.notification.payload
var fullMessage = payload.body
print("Message = \(fullMessage)")
if payload.additionalData != nil {
if payload.title != nil {
let messageTitle = payload.title
print("Message Title = \(messageTitle!)")
}
let additionalData = payload.additionalData
if additionalData?["actionSelected"] != nil {
fullMessage = fullMessage! + "\nPressed ButtonID: \(additionalData!["actionSelected"])"
}
}
}
let onesignalInitSettings = [kOSSettingsKeyAutoPrompt: false,
kOSSettingsKeyInAppLaunchURL: true]
OneSignal.initWithLaunchOptions(launchOptions,
appId: "\(appID)",
handleNotificationReceived: notificationReceivedBlock,
handleNotificationAction: notificationOpenedBlock,
settings: onesignalInitSettings)
OneSignal.inFocusDisplayType = OSNotificationDisplayType.notification
let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
OneSignal.setSubscription(true)
let uid = Auth.auth().currentUser?.uid
print("##############################")
let userID = status.subscriptionStatus.userId
print("userID = \(userID)")
let pushToken = status.subscriptionStatus.pushToken
print("pushToken = \(pushToken)")
if pushToken != nil {
if let playerID = userID {
}
}
解决方案
推荐阅读
- jquery - 为什么 keyup 功能在 CKEDITOR 中不起作用?
- git - 子模块目录中 .git 文件的用途是什么?
- reactjs - axios POST 请求使用代理失败
- node.js - 如何使用 Windows 主机在 Azure 应用服务上运行 node.js 应用
- python - 映射两次 PySpark RDD 以按不同键分组
- firebase - Unity + Firebase:是否可以将数据附加到键值,还是每次都必须检索键数据?
- c - POSIX 消息队列连接问题:mq_open 没有这样的文件或目录
- python - 遍历列表时返回布尔值错误
- javascript - 如何重定向页面取决于角度 8 中的条件
- python - ssh 在终端中工作,但不能通过 Python