apicloud apicloud

注册
查看: 66227|回复: 297

[模块教程] 官方版极光推送(ajpush)demo

 

主题:
16
帖子:
6100
云币:
4724

[模块教程] 官方版极光推送(ajpush)demo

 
66227 297 | 发表于 2015-1-24 18:55:34 |阅读模式 | |
本帖最后由 常山赵子云 于 2019-8-16 10:00 编辑


1、20180130更新:增加自定义声音支持
2、20190715更新:新增jpushVip模块-极光推送vip版本,支持手机厂商通道推送,成功率更高(需在极光官方开通vip)

注意:使用极光推送,必须到官网编译正式版本并且勾选极光推送模块,apploader中目前暂时未包含极光推送模块,所以无法在apploader中直接使用,通常会报类似:cannot call method 'init' of undefind at xxx.html 的错误。您也可以使用自定义loader进行调试。


附件为官方版极光推送模块各个api的简单代码示例。使用前请将config中的appkey换成你的app的。

###### 使用步骤 ######

1、在APICloud云端新建app并获取应用包名:预览-》端开发-》证书-》获取ios和android相应的包名(ID)。
2、登录极光推送官网http://www.jiguang.cn,注册成为开发者,然后进入控制台,新建应用,并将在APICloud网站获取的应用包名填入对应位置,完成,在“应用信息”界面即可获取该到appKey,将该appKey复制,并写入本demo中的config文件中的app_key字段。
3、将代码提交到1中新建的app中,编译,安装,使用。注:在进行推送之前,app应该至少启动一次。
4、登录极光推送官网,进入控制台,选择2中新建的应用,开始发消息/通知等。

###### 问题补充 ######

1)、有开发者提到推送无法弹出通知到状态栏的问题,原因:在极光网站控制台发送“通知”类型的推送时,会直接弹出通知到状态栏;发送“消息”类型推送时,如果你的代码中已经通过setListeenr监听了消息,将不会自动弹出通知到状态栏,消息会直接交到回调函数中,开发者自行处理(即通常说的“透传”)。如果没有监听,会自动弹出通知到状态栏。
2)、如果中途你的app更新包名了,那么你需要将新的包名更新至极光网站,并获取新的appKey填写到config文件中,重新编译app,并且在推送之前,app应该至少启动一次。
3)、init可能受手机当前网络环境或者极光服务器响应速度的影响,存在延迟,从而导致getRegistrationId延迟,建议在getRegistrationId的回调中做操作,getRegistrationId能返回正确的值,则说明init肯定成功了。

###### 所有开发者都有的疑惑,统一回复 ######

极光推送Android版本,包括官方push模块推送在内的推送服务,都支持退出应用后还能收到推送,但不支持应用进程被强杀后收到推送(比如安全软件强杀,长按home键清除进程等)。

任何Android app包括原生开发的app,在强制杀死app进程后同样收不到(因为众所周期的原因,系统自带的Google推送服务无法使用,所以Android推送都是APP内置实现,因此容易被杀死),在部分android原生系统的手机上,过段时间后会自动恢复,能继续接收推送(APICloud上也同样能收到)。诸如小米,魅族,华为以及安装了安全软件的手机,杀死后,你的app就永远死了,无法接收推送,除非用户再次点击桌面图标将app开启。
一定有人会说,微信,QQ都可以啊
微信,QQ之所以能收到,是因为系统或安全软件根本就没杀死它,小米,魅族,华为等手机以及各大安全软件,都会有一个白名单,与其进行商务沟通,app进入这个白名单,你的app就不会被杀死,即使当时杀死了,也会再次把你自动调起来,接着就能收到推送了。
知乎上有帖,有兴趣的可以阅读一下:http://www.zhihu.com/question/29826231
目前极光已经接入了厂商通道推送,在应用被杀死情况下也能接收推送,可更大限度的提高推送成功率,可通过jpushVip模块使用。

###### 如何自定义推送消息的提醒声音 ######

注意:极光推送SDK的自定义声音只支持消息类型推送,通知类型推送依然走系统默认提示。

》将音频文件放置在你的代码包目录下,比如widget/res/目录下,本case放置文件为:widget/res/horse.ogg。
》提交代码,云编译自定义loader或者新的APP。
》在极光控制台(或者业务服务器调用极光的rest api)发起“消息”类型推送,并在可选设置中增加sound字段,值为你的本地音频文件地址,只支持widget://协议,比如widget://res/horse.ogg,如图[android自定义声音]。IOS类似,区别是不用传sound字段,极光已做处理,参考该帖:https://community.apicloud.com/bbs/thread-25615-1-1.html。如图[ios自定义声音]。
》音频文件最好为mp3格式,并且在300kb以内

本帖子中包含更多资源    您需要 登录 才可以下载或查看,没有帐号?立即注册

2

查看全部评分

主题:
16
帖子:
6100
云币:
4724
 楼主| 发表于 2017-7-12 15:39:35 |
明亮哥 发表于 2017-7-12 12:08
如果android退出应用(应用被杀死)不能收到推送消息,那android的推送存在还有什么意义呢?推送就是我没打 ...

这是你的想法,站在你的角度的意愿,你希望用户收到推送,有事没事就给他发推送,管他喜不喜欢,美其名曰增强用户黏性,这也是绝大多数流氓软件的思维。
然而用户不希望你的app有事没事打搅他,长时间跑在后台,占着内存,占着CPU,影响别的app运行,这是流氓软件,用户希望直接把你的app杀死,退出就拉倒,别还在后台偷偷跑,别没事发推送弹通知发广告。
所以手机厂商和安全软件厂商就满足用户这个需求:让用户去决定要不要杀死你的app,允不允许你的app发推送。所以,你的app要么去努力做到微信QQ的体量,让手机厂商都把你当爷,要么引导你的用户不要杀死你的app,这是你唯一能做的,讨论意义的问题对你意义不大。

驾校小白

UID:84398

主题:
1
帖子:
6
云币:
17
发表于 2015-5-27 16:50:06 |
endian86 发表于 2015-2-9 13:59
这里接收不到。。擦。

在极光后台发送的时候  有两种消息类型   一种是消息  一种是  通知
你换另一种发送试试看。这个setLister的方法是接受消息的,对通知无效。

实习司机

UID:20052

主题:
12
帖子:
68
云币:
14

你吃屎!女朋友

发表于 2015-1-25 11:52:55 |
强,好迅速~~

主题:
46
帖子:
166
云币:
168
发表于 2015-1-26 12:01:06 |
应用关闭后,收到推送消息能透传吗?怎么做?

主题:
16
帖子:
6100
云币:
4724
 楼主| 发表于 2015-1-26 14:03:11 |
davylaker 发表于 2015-1-26 12:01
应用关闭后,收到推送消息能透传吗?怎么做?

透传见index.html页面的监听appintent的代码。

主题:
46
帖子:
166
云币:
168
发表于 2015-1-26 15:08:22 |
常山赵子云 发表于 2015-1-26 14:03
透传见index.html页面的监听appintent的代码。

以前root是main.html,换为index.html后在android下好了。
但是在ios下,又有问题:

应用关闭时,能收到推送,但没有透传消息,应用前台时收不到推送。

主题:
46
帖子:
166
云币:
168
发表于 2015-1-26 15:52:55 |
davylaker 发表于 2015-1-26 15:08
以前root是main.html,换为index.html后在android下好了。
但是在ios下,又有问题:

解决了,在ios下还是得用setlistener

驾校小白

UID:23542

主题:
5
帖子:
13
云币:
19
发表于 2015-1-26 18:05:24 |
<param name="channel" value="15e45ec768f44f795442535d" />  这个VALUE用默认的吗

驾校小白

UID:23542

主题:
5
帖子:
13
云币:
19
发表于 2015-1-26 18:05:41 |
我按照你写的配置了,推送不了晕

主题:
39
帖子:
164
云币:
533
发表于 2015-2-2 11:18:50 |
按例子测了,没推送成功

主题:
39
帖子:
164
云币:
533
发表于 2015-2-2 12:31:35 |
推送成功了,要等用户统计的数字生效,就能推了
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表