iOS 极光推送 不同通知播放不用声音

今天遇到的产品需求是类似美团外卖,当有订单推送的时候,提示“您有新订单了”这样的提示音。一般的通知还是用的系统的提示音。本来以为一会会就搞定,结果用了快两小时的时间。不多说,上代码:

1.项目用的是极光推送。所以直接在这个方法中,将收到的通知内容进行解析。我们的需求是当后台给的字段“extrasparam”等于2的时候是订单,播放自定义声音。别的类型播放系统声音。系统声音列表详见:iOS 系统提示音列表,小伙伴们不要忘了将你们的自定义声音,改成和后台配置的“sound”字段的值一致,拖入工程中,记得要是caf格式的,切记切记。(我们用的是sound.caf, 哈哈)

iOS 极光推送 不同通知播放不用声音_第1张图片
极光的代理方法中获取通知内容


iOS 极光推送 不同通知播放不用声音_第2张图片
播放自定义声音

2.但是这样做的话,只有在App出于前台的时候才会播放自定义声音。因为将自定义声音的名称改为和后台小哥哥配置的值一致,导致App后台的时候,不管什么类型的通知,播放的都是自定义声音,难受~

尝试一:在- (void)jpushNotificationCenter:(UNUserNotificationCenter*)center didReceiveNotificationResponse:(UNNotificationResponse*)response withCompletionHandler:(void(^)())completionHandler;方法中,调用更改通知声音方法,结果失败。原因是这个方法是在用户点击声音的时候才会调用。但是我不要啊,我要推送过来的时候就播放自定义声音啊!

尝试二:让后台小哥哥给我推送消息,然后在收到自定义消息的时候在发送一个本地通知。结果还没实施就看到极光的官方文档中写到:

因为推送消息的话是不经过苹果的APNs,相当于是App内部的消息。

解决办法:

自己找了好多文档和博客看,都没有很好的解决我的问题。灵机一动,让后台小哥哥给我传sound的值的时候加个判断呗。也就是当extrasparam = 2的时候,sound的值是“sound.caf”,其他的时候值是“normal.caf”。我工程里的声音命名为“sound.caf”,哈哈,简单粗暴,完美解决。

你可能感兴趣的:(iOS 极光推送 不同通知播放不用声音)