如果您在事先同意通知后禁用通知,Apple 如何处理推送令牌?
Posted
技术标签:
【中文标题】如果您在事先同意通知后禁用通知,Apple 如何处理推送令牌?【英文标题】:How does Apple handle push tokens if you disable notifications after agreeing to them prior? 【发布时间】:2018-08-18 17:33:12 【问题描述】:我正在与 Leanplum 合作,但在查找有关苹果推送令牌的文档时遇到了麻烦。主要问题是,如果用户最初在安装应用程序并生成推送令牌时接受通知,但后来禁用通知,手机本身是否限制通知,还是在苹果推送服务器上完成?主要是想了解流程。
据我所知,推送令牌是相同的,除非用户重置手机。因此,如果leaplum 有一个用户的推送令牌,我们尝试在他们离开后发送推送通知并禁用通知,实际会发生什么? leaplum 会删除令牌还是该令牌无效?我知道这很模糊,我只是想更多地了解苹果推送过程的幕后情况。谢谢你的帮助!
【问题讨论】:
【参考方案1】:总结
用户权限对远程推送通知没有影响,因此 APNs 注册(即令牌检索)不受影响。因此,您的服务器端推送通知逻辑不需要感受用户拒绝您的应用程序权限来呈现面向用户的推送通知的影响。即使用户不同意看到它们,您仍将继续收到远程推送通知。不同之处在于,如果没有权限,您的推送通知将被视为后台远程通知。继续阅读以获得进一步的解释。
远程推送通知与用户通知
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
单独使用远程通知(即后台)和用户通知的经验。
【讨论】:
【参考方案2】:Leanplum SDK 只是将推送令牌上传到 Leanplum 仪表板(服务器)。 Leanplum 将使用该令牌与 APNS(Apple 推送通知服务)对话,APNS 与设备对话以显示推送。如果令牌过期或失效,Leanplum 会移除令牌。
用户的设备不断与 APNS 通话。因此,当用户在他们的手机上禁用通知时,它只会忽略来自 Leanplum 的推送。它不会立即删除推送令牌。带上一粒盐,但我很确定令牌确实会在某个时候过期。
我们知道令牌失效的一种情况是用户卸载应用程序时。这就是 Leanplum 跟踪卸载的方式。这并不完全准确,因为同一用户可以重新安装应用程序并跟踪卸载,但这是我们得到的最接近的结果。
【讨论】:
以上是关于如果您在事先同意通知后禁用通知,Apple 如何处理推送令牌?的主要内容,如果未能解决你的问题,请参考以下文章
Apple Watch 通知:点击长通知中的图标时禁用打开应用程序