我正在与Leanplum合作,无法找到有关苹果推送令牌的文档。主要问题是,用户最初是在安装该应用程序时生成通知,还是在生成推送令牌后又在以后禁用通知,那么手机本身是否会限制通知,还是在苹果推送服务器上完成通知?主要只是试图了解流程。
根据我的理解,推送令牌是相同的,除非用户重置手机。因此,如果leanplum为用户提供了推送令牌,并且我们尝试在用户离开后发送推送通知并禁用了通知,那么实际上会发生什么? leanplum会删除令牌还是该令牌无效?我知道这很模糊,我只是想了解更多有关苹果推送过程中幕后情况的信息。谢谢你的帮助!
答案 0 :(得分:1)
用户权限对远程推送通知无效,因此APNs注册(即令牌检索)不受影响。因此,您的服务器端推送通知逻辑不需要感觉到用户拒绝您的应用程序权限来呈现面向用户的推送通知的影响。即使用户不同意您看到远程推送通知,您也将继续收到。区别在于,由于缺少权限,您的推送通知被视为 background 远程通知。继续阅读以获取进一步的解释。
APNs是一项服务,它能够将有效负载远程发送到特定设备,如注册远程通知时所提供的特定于应用程序设备的令牌所标识的那样。用户看到的推送通知不一定与普通的远程推送通知相同。远程通知不需要用户明确授予的权限。但是,如果要向用户显示推式通知,则只有这样才需要权限。
要直接回答您的问题:启动应用程序时,您应该注册以获取远程通知。该调用将从APN中获取应用程序设备令牌,然后将其返回给您。如果由于某种原因阻止注册成功,则调用另一个委托方法。注册了远程通知后,只有在那时,您才应该请求用户权限才能向他们显示通知。用户权限仅用于显示通知,因此APN仍将按预期工作,而无需在服务器端进行任何更改。唯一的区别是设备如何显示信息。
- (void)applicationDidFinishLaunching:(UIApplication *)app {
// Configure the user interactions first.
[self configureUserInteractions];
// Register for remote notifications.
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
// Handle remote notification registration.
- (void)application:(UIApplication *)app
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
// Forward the token to your provider, using a custom method.
// Setup user notifications.
[self enableRemoteNotificationFeatures];
[self forwardTokenToServer:devTokenBytes];
}
- (void)application:(UIApplication *)app
didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
// The token is not currently available.
NSLog(@"Remote notification support is unavailable due to error: %@", err);
[self disableRemoteNotificationFeatures];
}
Local and Remote Notification Programming Guide – Configuring Remote Notification Support
仅使用远程通知(即后台)和用户通知的经验。
答案 1 :(得分:0)
Leanplum SDK只需将推送令牌上传到Leanplum仪表板(服务器)。 Leanplum将使用该令牌与APNS(Apple Push Notification Service)进行对话,而APNS与设备进行对话以显示推送。如果令牌过期或无效,Leanplum将删除该令牌。
用户的设备一直在与APNS通信。因此,当用户禁用手机通知时,它只会忽略Leanplum的推送。它不会立即删除推送令牌。把它和盐一起吃,但是我很确定令牌确实在某个时候过期了。
我们知道令牌失效的一种情况是用户卸载应用程序的时间。这就是Leanplum跟踪卸载的方式。这不是完全准确,因为同一用户可以重新安装该应用程序并进行卸载跟踪,但这是我们得到的最接近的东西。