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

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

  1. 在登录状态下,可以接收推送的通知。
  2. 在退出登录时,不可以接收推送的通知。
  3. 在前台状态下,接收到通知播报推送内容,并打印内容。
  4. 在后台模式下,接收到通知播报推送内容,并打印内容。
  5. 在锁屏模式下,接收到通知播报推送内容,并打印内容。
  1. 我首先解决的是1、2问题,因为android文档中,直接给出了恢复和暂停的代理方法,但是iOS端缺没有,实现的方案只能是接入别名/Tag来对指定的设备来推送

    登录成功时->设置别名@"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);
    }];
  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

然后就可以真机测试了。

注意事项:这张图是极光问答社区相关人员给出的

QQ20170305-1@2x

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

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

IT文库 » iOS极光推送,后台和锁屏状态下播放推送过来的信息
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址