【问题标题】:iphone - Push Notifications appear even after disabling themiphone - 即使禁用推送通知也会出现
【发布时间】:2012-03-27 09:54:25
【问题描述】:

我正在开发一个带有推送通知的应用程序。

但是发生了一些奇怪的事情。

第一个didRegisterForRemoteNotificationsWithDeviceToken 始终执行,即使在禁用通知之后也是如此。我也收到了。

我从来没有收到询问我是否允许推送通知的警报,即使我卸载应用程序,将日历向前移动 2 天并重新启动手机,它也没有要求允许,它假定我确实允许他们。

谁能告诉我为什么会发生这种奇怪的事情?

谢谢

【问题讨论】:

  • 如果您在应用程序的设置中禁用了推送警报视图,您实际上会显示它们吗?这听起来完全错误,如果这是真的,请为它归档一个雷达。
  • didRegisterForRemoteNotificationsWithDeviceToken 被回调大概是因为他正在调用 registerForRemoteNotificationTypes。它只是通过交还设备令牌来响应。他还说,即使在卸载并重新安装该应用程序之后,他也没有看到第一次“'FooApp' 希望向您发送推送通知”用户权限对话框。详情请见stackoverflow.com/questions/8033216/…

标签: iphone push-notification


【解决方案1】:

您究竟是如何禁用通知的? iOS 中的设置 UI 并不十分清晰。

我使用此代码在控制台中显示应用的远程推送通知设置。

UIRemoteNotificationType notificationSelection = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

if (notificationSelection == UIRemoteNotificationTypeNone)
{
    NSLog(@"Push Notifications : DISABLED (%0X)", notificationSelection);
}
else
{
    NSLog(@"Push Notifications : ENABLED (%0X)", notificationSelection);

    if (notificationSelection & UIRemoteNotificationTypeBadge)
    {
        NSLog (@"Push Notifications : Badge");
    }

    if (notificationSelection & UIRemoteNotificationTypeSound)
    {
        NSLog (@"Push Notifications : Sound");
    }

    if (notificationSelection & UIRemoteNotificationTypeAlert)
    {
        NSLog (@"Push Notifications : Alert");
    }

    if (notificationSelection & UIRemoteNotificationTypeNewsstandContentAvailability)
    {
        NSLog (@"Push Notifications : Newstand Content Availability");
    }

    sendMessage = YES;
}

【讨论】:

  • 我转到常规 -> 通知,然后禁用正在开发的应用程序。此外,我将手机的日期更改为 2 天后,然后重新启动手机。
  • 我在这里详细介绍只是为了帮助您...请注意,您只需要禁用所有单个选项。仅将“通知中心”设置为关闭是不够的。您还需要将警报样式设置为“无”,并将徽章图标设置为关闭,将声音设置为关闭,并将锁定屏幕中的查看设置为关闭。 任何这些选项都需要单独启用推送通知——这对我来说并不是很明显。我将在上面编辑我的答案以添加我用来在控​​制台中显示应用程序的远程通知设置的代码。
  • 另外,您希望更改时钟会产生什么效果?通知是由远程服务器根据布尔标志发送的,无论服务器应用程序使用什么其他标准 - iPhone 上的时间都不会产生影响。
  • 我在 stackoverflow 的另一个问题中读到,如果您不更改时间,手机不会询问您是否要“允许通知”,我想模拟第一个问题。此外,“didRegisterForRemoteNotificationsWithDeviceToken”每次都执行的事实不是一个奇怪的行为吗?它应该只执行一次吗?第一次?
  • 根据文档,设备应在每次运行时注册通知,因为设备令牌可能会更改。
猜你喜欢
  • 2019-05-03
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
相关资源
最近更新 更多