uni-app对接极光推送
一.官网配置
[极光官网](www.jiguang.cn/portal/#/de…)
1.进入【服务中心】-【开发者平台】
2创建应用:【概览】- 【创建应用】,填写应用名称和图
\
3.选择【消息推送】服务,点击下一步
4设置应用包名(图中仅为示例),点击下一步
5.查看应用信息:点击【设置】-【应用设置】查看AppKey和Master Secret,后续需要使用
二、安装和配置[uniapp]# 二、极光插件****
[安装JPush插件](ext.dcloud.net.cn/plugin?id=4…)
2. 安装JCore插件](ext.dcloud.net.cn/plugin?id=4…)
3. 导入插件到项目****
4. 插件配置 , **将在极光官网申请的key填写下面
打卡manifest.json的源码视图,找到 nativePlugins 节点
(1) 配置JG-JPUSH,设置Android和ios的应用包名
(2) 配置JG-JCore,设置Android和ios的应用包名和极光官网信息的AppKey
三、编写代码****
在App.vue中编写如下代码:
插件对应的API文档地址:github.com/jpush/jpush…
onLaunch: async function(options) {
// #ifdef APP-PLUS
jpushModule.setLoggerEnable(true);
// 初始化函数
jpushModule.initJPushService();
jpushModule.addConnectEventListener(result=>{
let connectEnable = result.connectEnable
console.log("jpush连接", connectEnable)
})
jpushModule.getRegistrationID(result => {
console.log("注册ID.....",result)
this.registerID = result.registerID
uni.showToast({
title:result.registerID,
icon:"success",
})
})
jpushModule.isPushStopped(result=>{
let code = result.code
console.log('连接状态回调',result)
});
// 设置别名
jpushModule.setAlias({
'alias' : 'coder',
'sequence': 1
})
jpushModule.addNotificationListener(result=>{
console.log('result--', result);
let notificationEventType = result.notificationEventType
let messageID = result.messageID
let title = result.title
let content = result.content
let extras = result.extras
console.log('通知事件回调',result)
// 推送一个本地通知
jpushModule.addLocalNotification({
messageID,
title,
content,
extras
})
if (notificationEventType === 'notificationOpened') {
console.log('点击跳转--');
uni.redirectTo({
// url: `/pages/index/test/test?id=${extras.testId}`,
url:`/pages/message/index?data=${extra}`
})
}
})//#endif
},
onShow: function() {
this.getNotificationEnabled()
// #ifdef APP-PLUS
jpushModule.addNotificationListener(result=>{
let extras = result.extras
console.log('onshow通知事件回调',result)
if (result.notificationEventType === 'notificationOpened') {
console.log('点击跳转--');
uni.navigateTo({
//点击手机后台消息要跳转的页面
url:`/pages/message/index?data=${extra}`
})
}
})
// #endif
},
Methods:{
// 对接极光推送
/* 1. 首先要判断用户是否打开通知权限 */
getNotificationEnabled(){
if(uni.getSystemInfoSync().platform == "ios"){
jpushModule.requestNotificationAuthorization((result)=>{
let status = result.status
if (status < 2) {
this.noticMsgTool()
}
})
}else{
jpushModule.isNotificationEnabled((result)=>{ //判断android是否打开权限
if(result.code == 0){//如果为0则表示 未打开通知权限
this.noticMsgTool()
}
})
}
},
noticMsgTool(){
if(uni.getSystemInfoSync().platform == "ios"){
//苹果打开对应的通知栏
uni.showModal({
title: '通知权限开启提醒',
content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
showCancel: false,
confirmText: '去设置',
success: function(res) {
if (res.confirm) {
var app = plus.ios.invoke('UIApplication', 'sharedApplication');
var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:');
plus.ios.invoke(app, 'openURL:', setting);
plus.ios.deleteObject(setting);
plus.ios.deleteObject(app);
}
}
});
}else{
//android打开对应的通知栏
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
uni.showModal({
title: '通知权限开启提醒',
content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
showCancel: false,
confirmText: '去设置',
success: function(res) {
if (res.confirm) {
var Intent = plus.android.importClass('android.content.Intent');
var Build = plus.android.importClass("android.os.Build");
//android 8.0引导
if (Build.VERSION.SDK_INT >= 26) {
var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);
} else if (Build.VERSION.SDK_INT >= 21) { //android 5.0-7.0
var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
intent.putExtra("app_package", pkName);
intent.putExtra("app_uid", uid);
} else { //(<21)其他--跳转到该应用管理的详情页
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
intent.setData(uri);
}
// 跳转到该应用的系统通知设置页
main.startActivity(intent);
}
}
});
}
}
// 对接极光推送
}
四、调试运行****
需要制作自定义调试基座或者app打包