我正在使用OneSignal进行推送通知。
在订阅列表中,某些设备/用户标有No (No Push Token)
。说明:This user has no push token and cannot be targeted.
适用于iOS devices
以及Android devices
。
这是什么意思?为什么会这样?如何改变?
答案 0 :(得分:1)
这意味着OneSignal没有从设备获得pushToken,但设备能够注册您的OneSignal帐户。在iOS上,pushToken被称为设备令牌,在Android上,这是Google注册ID。
根据您正在使用的OneSignal SDK,在调用OneSignal init以添加其他日志记录之前,可以调用setLogLevel
函数。这将打印在iOS的Xcode日志或Android的adb logcat中。还要确保使用的是最新的OneSignal SDK。
您还可以在登录后通过页面底部的帮助提示与OneSignal联系,他们可以检查您的帐户以帮助诊断问题。
答案 1 :(得分:1)
确保您的Xcode项目已启用"Push Notifications" and "Remote notifications"。
答案 2 :(得分:1)
你能检查一下"推送通知"能力是否开启?如果不是,请将其打开并查看是否有效,否则继续阅读。
确保您正在运行最新版本的OneSignal SDK(2.1.14) 因为这个版本应该已经解决了这个问题。接下来,尝试以下修复:
修复1
从导航面板中,选择您的顶级蓝色项目。然后选择目标并导航到“构建设置”。搜索其他链接器标志并添加以下条目:-ObjC
清理项目并再次运行,看它是否有效。
修复2
在您的桥接标题(如果有的话)或App Delegate可见的任何头文件中,为OneSignal类创建一个扩展,您可以在其中定义以下接口方法:
+ (void)didRegisterForRemoteNotifications:(UIApplication*)app deviceToken:(NSData*)inDeviceToken;
接下来,覆盖应用委托中的didRegisterForRemoteNotifications
委托方法,并在OneSignal上调用上述方法,并将这两个参数传递给SDK。
答案 3 :(得分:1)
请注意,在XCode 8版本2.1.10中使用时,OneSignal SDK存在一个相当严重的缺陷,当使用Cocoapods包含该软件包时,导致iOS设备的这些No push token
注册(推荐方法) 。确保更新您的广告连播。
修正了2.1.10中的“无推送令牌”问题,当OneSignal通过CocoaPods下载并包含其他使用-ObjC标志的pod时会发生。
答案 4 :(得分:0)
正如其他答案所提到的,2.1.10中有一个CocoaPods设置的错误。所以我改变了
这
VS2010, Windows 10 OS and IE10
到
pod 'OneSignal' ## points to 2.1.10