【问题标题】:Can you mute incoming Push Notifications from the App side [iOS]您可以从应用程序端静音传入的推送通知 [iOS]
【发布时间】:2013-11-15 15:26:48
【问题描述】:

我正在制作一个使用 Apple 推送通知的应用程序。我希望能够有一个“下班”模式,在这种模式下仍然会收到推送通知,但是当它进来时没有声音。有没有办法从应用程序内部静音这些推送通知?我知道我不能简单地从 JSON 消息中发送声音,但如果我可以从应用程序内部发送声音会更容易。我还想收到通知,所以我不想从推送通知中取消注册

【问题讨论】:

  • 您可以注册或不注册UIRemoteNotificationTypeSound 类型,具体取决于您的“职责”状态。但是,这样我认为你将不得不发送所有通知两次 - 一次有声音,一次无声 - 我什至不确定这是否会像我想象的那样工作:D。

标签: ios iphone push-notification apple-push-notifications mute


【解决方案1】:

如果您的应用程序在后台,静音推送的唯一方法是不发送 JSON 消息中的声音。

当你的应用在前台时,你会收到 application:didReceiveRemoteNotification: 的推送,这种情况下,无论你是否发送声音,应用都会静默接收推送。

【讨论】:

    【解决方案2】:

    您可以将注册更改为不包括声音。

    当您想发出通知时,请致电:

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
    

    当您想将通知静音时:

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)];
    

    这将只允许显示警报和徽章。声音不会播放。

    编辑:

    我相信以下quote 暗示如果有效负载包含未启用的类型,则不会过滤通知。设备根本不会显示/发出未启用的类型。

    如果您的应用未启用这些通知类型中的任何一种,即使在通知负载中指定了这些通知类型,系统也不会标记图标、显示警报消息或播放警报声音。

    您还应该注意,无论您的应用选择启用/禁用哪种类型的通知,用户都可以手动覆盖该决定:

    用户可以随时修改启用的通知类型,使用 iOS 中的设置或 OS X 中的系统偏好设置。

    【讨论】:

    • 不会过滤掉所有与声音捆绑在一起的通知吗?换句话说,一旦注册了没有声音的通知(你的第二个例子);用声音发送的通知会被完全忽略吗?
    • 是否必须取消注册远程通知才能再次调用 registerForRemoteNotificationTypes?每次调用该函数时,它是否还会询问用户是否要发送推送通知? Till 也提出了一个很好的观点
    • @Till 我相信它不会过滤掉有声音的通知,但我还没有测试过。值得一试。
    • @Eran 确实值得一试。
    • @Kevin 我不确定您是否必须在再次注册之前取消注册(您必须尝试找出答案),但我确信用户不会再次被要求允许推送通知(因为它们仅在应用程序第一次调用该方法时被询问)。
    猜你喜欢
    • 2012-10-24
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多