静默推送之个推iOS版

因为公司业务关系,希望在iOS在后台的时候能存活去做某些业务操作(其实就是流氓的后台保活=。=)
最早是使用后台定位实现的,信心满满的去上架,结果被苹果爸爸锤的头都破了。连续被拒3次,申请打电话苹果代表也锤了我一顿,申请苹果审核申诉又被锤了一顿。想一想我真是头铁啊emmm
闲话不多说,开始这篇博客的主题
我们的业务其实很简单,就是后台有业务数据来了,客户端哪怕在后台也要处理。

苹果的保活无非三种方式

1.后台播放无声音乐

2.后台定位

3.推送唤醒

播放音乐

直接被我pass了,我觉得机审都会把我拒了。。。压根不考虑

后台定位

正好我们的业务吐过硬扯还能和业务办公场所扯上关系,头铁就是上!通过后台定位让app保活,成功实现了。不过被爸爸锤了。方案二,pass

推送唤醒

那这时候,就剩这最后一种方式了。
推送分两种,本地推送和远程推送。

本地推送

本地推送其实类似于一个定时器,到了触发的时候就会触发。一般有很多用来做闹钟或者提示用户签到一类的场景。不过根据我的测试,当应用在后台三分钟后,被挂起以后这个本地推送就不再继续推送了。(也不知道是不是我的测试问题,反正我是没能保活成功。)

静默推送(不用voip,有的个推运营人员是非技术,回答让你搞voip,别被忽悠了)

静默推送其实是远程推送的一种。在个推中,都属于透传消息(建议看一下这一篇)个推:什么是普通推送?什么是透传消息?
相信在看我这个前老哥们肯定也搜过其他的博客文章
无一例外肯定提到了:

{
    "aps": {
        "content-available": 1,
        "sound": "com.gexin.ios.silence"
    }
}

这个东西,不过万一有没搜到的呢emmm我还是再说一遍
content-available属性。0是非静默,1是静默
个推中,无声,sound属性:com.gexin.ios.silence(其他的推送是不是如此我就不太清楚了)

alert,body切记不要写东西,要传值往最后看

接下来是傻瓜式教程

准备工作

1.推送证书准备好

这部分太多教程了,随便搜一个搞一下就差不多了,不上图了。记得导出的p12要放到个推平台哟。

2.打开开关

静默推送之个推iOS版_第1张图片
推送开关
静默推送之个推iOS版_第2张图片
允许后台推送

3.代码部分

静默推送之个推iOS版_第3张图片
静默推送回调

就在这个里面了,当被挂起的时候,收到推送,执行这里的代码,唤醒app30s左右的时间,让你尽情的做自己想做的事。
我把生命周期写在下面,也好复制粘贴去搜索,我是不是很体贴=。=

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler

接下来怎么处理就是你们自己去做业务处理了~

如何不要后台配合自行测试?

个推官网是干什么用的啊?
小伙子来来来,又是两篇傻瓜式教程(内容如标题,如果都会了就不用看了~)
个推-开发环境推送测试
个推-iOS特定人群推送

打开个推官网

创建推送
静默推送之个推iOS版_第4张图片
图1

静默推送之个推iOS版_第5张图片
图2

然后推就完事了~~~~

这时候你应该能确定是可行的了。
接下来就更简单了,让后台加入联调。

如果后台是java

简单:

payload.setContentAvailable(1);
payload.setSound("com.gexin.ios.silence");

如果你还想传值,有自定义设置key-value方法

payload.addCustomMsg("key","value");

就完事了。
祝各位老哥顺利完成需求,不用砍死产品经理~

你可能感兴趣的:(静默推送之个推iOS版)