美文网首页推送iOS新手学习iOS Developer
iOS极光推送,后台和锁屏状态下播放推送过来的信息

iOS极光推送,后台和锁屏状态下播放推送过来的信息

作者: 190CM | 来源:发表于2017-03-05 21:05 被阅读2911次

    之前已经测试过这个方案了,可行但是仅限于测试,本身并未尝试上线,因为该需求已经改了,但是一直比较忙,现在贴上
    后台持续存活的方案
    找到的这个方案的实现原理就是后台定位(猜测审核很大程度过不去)

    首先,接到公司的设计,接入极光推送,这当然很简单,我也十分迅速的完成了,但是当产品看的时候又提出了新的设计,设计方案如下几点。

    1. 在登录状态下,可以接收推送的通知。
    2. 在退出登录时,不可以接收推送的通知。
    3. 在前台状态下,接收到通知播报推送内容,并打印内容。
    4. 在后台模式下,接收到通知播报推送内容,并打印内容。
    5. 在锁屏模式下,接收到通知播报推送内容,并打印内容。
    1. 我首先解决的是1、2问题,因为android文档中,直接给出了恢复和暂停的代理方法,但是iOS端缺没有,实现的方案只能是接入别名/Tag来对指定的设备来推送
      <pre>
      登录成功时->设置别名@"alias"
      [JPUSHService setTags:nil alias:@"alias" fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
      NSLog(@"rescode: %d, \ntags: %@, \nalias: %@\n", iResCode, iTags , iAlias);
      }];
      退出登录时->设置别名@""
      [JPUSHService setTags:nil alias:@"" fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
      NSLog(@"rescode: %d, \ntags: %@, \nalias: %@\n", iResCode, iTags , iAlias);
      }];
      </pre>

    2. 第一个问题很好解决,但是在解决第二个问题时,首先需要将文字转成声音,所以我使用了。

    文本转语音技术, 也叫TTS, 是Text To Speech的缩写. iOS如果想做有声书等功能的时候, 会用到这门技术.
    iOS7之后才有该功能
    需要 AVFoundation 库
    AVSpeechSynthesizer: 语音合成器, 可以假想成一个可以说话的人, 是最主要的接口
    AVSpeechSynthesisVoice: 可以假想成人的声音
    AVSpeechUtterance: 可以假想成要说的一段话
    
    // 简单实现播放
    AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:userInfo[@"aps"][@"alert"]];
    AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init];
    [synth speakUtterance:utterance];
    

    3 其实做到现在基本可以使先前个需求了,但是我们还同时需要在后台的时候也播放语音怎么做呢?

    3.1 首先要打开Remote notifications,并加入content-available: 1 这个参数.
    3.2 如下图:
    
    QQ20170305-0@2x

    3.3

    //后台播放音频设置  
    AVAudioSession *session = [AVAudioSession sharedInstance];    
    [session setActive:YES error:nil];    
    [session setCategory:AVAudioSessionCategoryPlayback error:nil];
    

    然后就可以真机测试了,这个实现了后台播放语音,但是iOS规定600s后程序会被挂起,到时还是不能够播放的,我开始寻找在后台一直偷偷运行的方案,�后台播放无声的音乐,�但是�审核没过,我建议还是在iOS 10之前的版本还是播放固定的声音在iOS 10之后播放语音播报的方案。

    注意事项:这张图是极光问答社区相关人员给出的 QQ20170305-1@2x

    不保证成功,所以出现收不到,丢单也是正常的范围。

    这期就是解决我题目的问题,后续我会整理一下推送的相关特性,方便大家和我查找使用,如果有iOS相关打印的问题也可以给我留言。如果喜欢请给我一个喜欢,谢谢!不会排版,多多见谅!

    相关文章

      网友评论

      • sennnnn:大神,您好可以加下我qq494313298吗,后台推送 播报不出声音
      • 8ac3b711dcdb:打印机的连接在长时间在后台会断连是要怎么处理
        190CM:我不知道你的情况,我的是网口打印机,需要打印是直接socket连接就可以,打完就断开了
      • 子先来:你好,我现在也是要做播放推送消息内容,但是我打开audio那个后台开关审核被拒了,原因是我的app没有音频输出,请问您最后是怎么做的后台播放呢?
        190CM:@子先来 好久没上了,这个文章比较老了 我也一直没更新 建议你使用iOS10之后的推送 是可以推送声音 视频和 文件的 在扩展里面可以操作 iOS10 以下建议播放固定语音,如果你是企业版 可以直接用Voip比较简单,如果你还没有解决的话 我可以去给你找找资料,我有时间会更新上
        子先来:@ZWP320 没有解决 看别的app也是有的能有的不可以。最后iOS10以上使用UINotificationserviceExtention播放,10以下的就没有了。请问关于这个你解决了吗?
        赵赵赵Mr:我也有这个审核被拒的问题,苹果说我app没有包含后台语音播放音频的功能,我录了视频过去,又说这个功能可以通过本地通知实现,但是本地通知那个通知声音是音频文件,我要的是直接通过字符串播放出声音的,我想问你这个问题是怎么解决了,跟苹果沟通好累,一天一份邮件(坑爹的是公司的另一个app也是有这个功能,审核可以通过,好坑爹)

      本文标题:iOS极光推送,后台和锁屏状态下播放推送过来的信息

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