gpt4 book ai didi

ios - 跟踪用户对推送通知的选择[允许/不允许]

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:31:47 25 4
gpt4 key购买 nike

当应用程序需要注册推送通知 (UIApplication registerForRemoteNotificationTypes) 时,弹出窗口显示允许/不选择。

有没有办法跟踪用户何时做出此选择?

因为解决方案:

NSUInteger rntypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

很好,但在用户触摸某些东西之前它默认为否。我应该只在用户做出选择后检查此配置。

结果是,在我的 EasyAPNS 服务器中,大多数应用程序都处于“禁用”模式,直到用户重新启动它们(因为第二次正确的配置将被推送到我的服务器)。因此,在首次启动时,可能不会考虑用户的真正选择(如果您接受得非常快,那么在我的应用程序注册到 EasyAPNS 之前,您的选择会在首次启动时反射(reflect)在服务器上)

有什么想法吗?

最佳答案

似乎无法确定是否已显示允许弹出窗口。我依靠用户默认值来跟踪这一点:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
BOOL didRegisterForPush = [[NSUserDefaults standardUserDefaults] boolForKey:@"didRegisterForPush"];
if (!didRegisterForPush) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"didRegisterForPush"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
// .. send deviceToken to server
}

现在您可以使用以下方式确定授权状态:

- (PushAuthorizationStatus)pushAuthorizationStatus
{
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types) {
return kPushAuthorizationStatusAuthorized;
}
BOOL didRegisterForPush = [[NSUserDefaults standardUserDefaults] boolForKey:@"didRegisterForPush"];
if (didRegisterForPush) {
return kPushAuthorizationStatusDenied;
}
return kPushAuthorizationStatusNotDetermined;
}

使用它,您可以将 NotDetermined 状态而不是 Denied 发送到服务器。

关于ios - 跟踪用户对推送通知的选择[允许/不允许],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12598955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com