uniapp 应用集成极光推送(安卓应用)

安装极光插件

在 uniapp 应用市场极光推送插件页面open in new window点击试用,选择你要绑定的项目。

进入项目中的 manifest.json 配置插件。

选择云端插件-勾选对应的插件,点击确认

这里拿安卓端的配置举例,需要配置两个地方:

  • android_appkey 后面在极光后台创建应用获取
  • android_channel 暂未明白具体用途,照网上说的先填写 android

创建极光应用

登录极光后台open in new window - 应用管理 - 创建极光应用

填写应用名称,进入下一步

选择需要的服务,这里只选择消息推送,点击下一步

这里需要注意的是,应用包名需要与 uniapp 打包时的包名一致。

填写包名后点击下一步,极光应用创建完成,可以点击上面导航栏进入应用管理-应用设置中查看

这里的 AppKey 就是需要填入上面的 manifest.json 中的 android_appkey,填写完成后保存。

uniapp 应用中加入代码

在应用启动的时候,需要初始化以及监听极光消息推送

// App.vue
<script>
	export default {
		onLaunch: function() {
			console.log('App Launch')
			// #ifdef APP-PLUS
			this.initJyJPush()
			this.watchPush()
			this.watchPushClick()
			// #endif
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		},
		methods: {
			initJyJPush() {
				const jyJPush = uni.requireNativePlugin('JY-JPush');
				jyJPush.android_init(res => {
					//初始化成功之后设置别名
					setTimeout(() => {
						console.log('开始设置极光推送别名');
						this.setAlias()
					}, 1000 * 20) //20秒后再设置别名
					console.log('初始化极光推送完成:', JSON.stringify(res));
				})
			},
			//设置别名
			setAlias() {
				const jyJPush = uni.requireNativePlugin('JY-JPush');
				jyJPush.setJYJPushAlias({
						userAlias: 'someone666'
					},
					result => {
						console.log('设置极光推送别名结果:', JSON.stringify(result));
					});
			},
			//监听消息推送事件
			watchPush() {
				const jyJPush = uni.requireNativePlugin('JY-JPush');
				jyJPush.addJYJPushReceiveNotificationListener(result => {
					console.log('接收推送消息:', JSON.stringify(result));
				});
			},
			//监听推送点击事件
			watchPushClick() {
				const jyJPush = uni.requireNativePlugin('JY-JPush');
				jyJPush.addJYJPushReceiveOpenNotificationListener(result => {
					console.log('点击推送消息:', JSON.stringify(result));
				});
			}
		}
	}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

首先需要初始化,初始化成功后设置别名,这个别名在后面后台推送消息的时候用到。

这里的 #ifdef APP-PLUS 是 uniapp 的条件编译open in new window

测试推送消息

首先需要运行到手机上进行测试,这里使用真机进行测试,需要先制作一个自定义基座。
这里引用一个说明:

解释一下:平时我们测试,链接手机直接运行,他会在手机上安装一个APP,这个时候可以直接打开调试,这个被称为标准基座;标准基座包含了uniapp基础的一些框架内部的东西,但是如果我们要调试第三方的插件SDK,就需要自定义基座; 简单来说,自定义基座就是标准基座 + 第三方的插件SDK组成,执照方法如下:(截图用的是Mac电脑演示,Windows也类似哈)

在 HbuilderX 点击 运行-运行到手机或模拟器-制作自定义调试基座,确认弹出窗口的信息后,点击打包。

等待打包结束后,在 HbuilderX 顶部点击运行-运行到手机或模拟器-运行基座选择,选择自定义调试基座。然后再点击运行到 Android App 基座,选择你的设备进行运行。

在 HbuilderX 控制台查看日志。

19:03:32.149 正在同步手机端程序文件...
19:03:32.866 同步手机端程序文件完成
19:03:33.086 正在启动自定义基座...
19:03:37.740 如手机上自定义基座App未启动,请手动启动...
19:03:38.024 App Show at App.vue:12
19:03:38.178 App Launch at App.vue:4
19:03:38.212 App Show at App.vue:12
19:03:38.241 初始化极光推送完成:, {"errorCode":"0","msg":"调用完成"} at App.vue:26
19:03:38.272 requrest options, [Object] {"url":"/test","method":"GET"}  at utils/request.js:9
19:03:38.303 [Object] {"success":true,"code":0,"msg":"测试接口成功"}  at pages/index/index.vue:103
19:03:56.724 开始设置极光推送别名 at App.vue:23
19:03:57.753 设置极光推送别名结果:, {"seq":0,"iResCode":0,"errorCode":0,"alias":"someone666"} at App.vue:36
1
2
3
4
5
6
7
8
9
10
11
12

如果设置别名结果是错误码 6002 说明设置别名超时错误,检查上面的 AppKey 与包名是否设置正确。

启动完成后,在极光后台创建推送。

平台选择安卓,填写消息信息,下面目标人群选择设备别名,填写在uniapp 项目中初始化设置的别名,例如这里是 someone666。

点击发送预览,弹出确认框,预估人数为 1 说明可以正常发送。

点击确认,ok,可以在手机上确认一下了。

同时,可以在 HbuilderX 控制台看到打印日志

19:19:16.174 接收推送消息:, {"failedLink":"","showResourceList":[],"richType":0,"inAppMsgType":1,"_webPagePath":"","appkey":"03277468544ae45609f049df","notificationExtras":"{}","inAppMsgShowType":2,"inAppMsgContentBody":"","developerArg0":"","isWmDeepLink":false,"deeplink":"","notificationStyle":0,"notificationPriority":0,"notificationAlertType":7,"sspWmOriginId":"","notificationInbox":"","notificationId":511050606,"appId":"uni.UNI17F0069","targetPkgName":"","notificationNormalSmallIcon":"","failedAction":0,"isRichPush":false,"inAppType":0,"notificationChannelId":"","notificationTitle":"提示","notificationContent":"nice!你收到消息了!","sspWxAppId":"","displayForeground":"","notificationCategory":"","notificationSmallIcon":"","notificationType":0,"inAppMsgShowPos":0,"notificationBigPicPath":"","notificationBuilderId":0,"sspWmType":0,"msgId":"18100325450171977","platform":0,"inAppMsgTitle":"","notificationBigText":"","notificationLargeIcon":""} at App.vue:43
1