美文网首页
接入极光推送实现前台语音播报后台锁屏自定义消息并适配版本

接入极光推送实现前台语音播报后台锁屏自定义消息并适配版本

作者: 190CM | 来源:发表于2017-03-07 17:38 被阅读272次

    接入极光推送实现前台语音播报后台锁屏自定义消息并适配版本

    1.首先实现语音播报,请看我的iOS 文字转语音的三种方案
    2.如何实现自定义声音
    对应音频文件格式是 aiff,wav,caf 文件,文件也必须放到 app 的 mainBundle 目录中。

    自定义通知声音的播放时间必须在 30s 内,如果超过这个限制,则将用系统默认通知声音替代。

    可以使用 afconvert 工具来处理音频文件格式,在终端中敲入如下命令就可以将一个 mp3 文件转换成 caf 文件:

    $ afconvert sound.mp3 sound.caf -d ima4 -f caff -v
    
    14888787859072.jpg

    自己在极光测试,在上图填写。

    3.主要实现着3个回调函数
    <pre>
    iOS 10会调用下面的的函数3.2/3.3 其他调用3.1
    在iOS 10默认不提示弹框、声音所以不需要做处理,3.2需要做处理处理 completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以设置 (内参数任意删除,这里我只去除了声音)

    3.1///基于iOS 7 及以上的系统版本
    -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^) (UIBackgroundFetchResult))completionHandler
    3.2
    ifdef NSFoundationVersionNumber_iOS_9_x_Max
    pragma mark- JPUSHRegisterDelegate
    -(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler

    3.3
    -(void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
    </pre>

    4.实现之后还会出现一个问题重复播报,需要记录一下内容,重复返回,以下是我简单实现的方法
    <pre>
    if (self.recordDict.allKeys.count > 10) {
    [self.recordDict removeAllObjects];
    }
    if (self.recordDict[string] != nil && [self.recordDict[string] isEqualToString:string]) {
    return;
    } else {
    [self.recordDict setValue:string forKey:string];
    }
    </pre>

    相关文章

      网友评论

          本文标题:接入极光推送实现前台语音播报后台锁屏自定义消息并适配版本

          本文链接:https://www.haomeiwen.com/subject/coomgttx.html