你可以静音来自App侧的传入推送通知

我正在制作一个使用苹果推送通知的应用程序。 我想能够有一个“下class”模式,其中推送通知仍然收到,但没有声音播放时,是否有一种方法来禁止从应用程序内的推送通知? 我知道我可以简单地不发送来自JSON消息的声音,但是如果我能从应用程序内部完成,它会更容易。 我还想收到通知,所以我不想从推送通知取消注册

如果您的应用程序处于后台,则将推送静音的唯一方法是不从JSON消息发送声音。

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

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

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

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

当您要将通知静音时:

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

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

编辑:

我相信下面的引用意味着如果有效载荷包含未启用的types,则通知将不被过滤。 设备根本不会显示/发出未启用的types。

如果您的应用程序未启用任何通知types(即使通知有效内容中指定了这些通知types),系统也不会标记图标,显示警报消息或播放警报声音。

您还应该注意,无论您的应用程序select启用/禁用哪种types的通知,用户都可以手动覆盖该决定:

用户可以随时使用iOS中的“设置”或OS X中的“系统偏好设置”来修改已启用的通知types。