使用OneSignal进行推送通知:什么是“无推送令牌”?

12

我正在使用OneSignal进行推送通知。

在订阅列表中,一些设备/用户被标记为No (没有Push Token)。解释是:该用户没有推送令牌,无法接收通知。

这种情况出现在和上。

这是什么意思?为什么会发生这种情况?如何更改它?

5个回答

1

1
请检查是否已开启“推送通知”功能。如果没有,请打开并查看是否有效,否则请继续阅读。
确保您正在运行最新版本的OneSignal SDK(2.1.14),因为这个版本应该已经解决了问题。接下来,尝试以下修复方法:
修复方法1
从导航面板中选择您的顶部蓝色项目。然后选择您的目标并导航到构建设置。搜索其他链接器标志并添加以下条目:-ObjC 进行项目清理并重新运行,看看是否有效。
修复方法2
在您的桥接头文件(如果有)或任何可见于您的App Delegate的头文件中,创建一个OneSignal类的扩展,在其中定义以下接口方法:
+ (void)didRegisterForRemoteNotifications:(UIApplication*)app deviceToken:(NSData*)inDeviceToken;

接下来,覆盖你的应用程序委托中的didRegisterForRemoteNotifications代理方法,并在OneSignal上调用上述方法并将两个参数传递给SDK。

谢谢Joseph,升级后问题已经解决了(现在是2.1.15版本)。以前从来没有遇到过OneSignal的问题! - ben_the_builder

1
请注意,在XCode 8版本中,OneSignal SDK在使用Cocoapods(推荐的方法)包含时,版本2.1.10存在一个相当重要的缺陷,导致iOS设备出现No push token注册问题。确保更新您的pod。
请参见2.1.11版本发布说明

修复了2.1.10版本中的“无推送令牌”问题,该问题会在通过CocoaPods下载OneSignal并包含其他使用-ObjC标志的pod时发生。


1
这意味着OneSignal未从设备获取到推送令牌,但设备能够注册到您的OneSignal帐户。在iOS上,推送令牌称为设备令牌,在Android上,这是Google注册ID。
根据您使用的OneSignal SDK,可以在调用OneSignal init之前调用setLogLevel函数以添加其他日志记录。这将在iOS的Xcode日志或Android的adb logcat中打印出来。还请确保您正在使用最新的OneSignal SDK。
您还可以在登录后通过页面底部的帮助气泡联系OneSignal,他们可以检查您的帐户以帮助诊断问题。

7
我也遇到了同样的问题。按照所有疑难解答中提到的步骤都尝试了一遍,但没有成功。iOS SDK在iOS 10、Xcode 8、Swift 3上无法订阅用户。 - GIJOW

0
正如其他答案所提到的,2.1.10版本存在CocoaPods设置中的一个错误。因此我进行了更改。

pod 'OneSignal' ## points to 2.1.10

pod 'OneSignal', :git => 'https://github.com/OneSignal/OneSignal-iOS-SDK.git', :branch => 'master'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接