uniapp对接极光推送

609 阅读2分钟

uni-app对接极光推送

一.官网配置

[极光官网](www.jiguang.cn/portal/#/de…)

1.进入【服务中心】-【开发者平台】
image.gif
2创建应用:【概览】- 【创建应用】,填写应用名称和图\
image.gif

3.选择【消息推送】服务,点击下一步

image.gif
4设置应用包名(图中仅为示例),点击下一步
image.gif
5.查看应用信息:点击【设置】-【应用设置】查看AppKey和Master Secret,后续需要使用
image.gif

二、安装和配置[uniapp]# 二、极光插件****

[安装JPush插件](ext.dcloud.net.cn/plugin?id=4…)

image.gif

2. 安装JCore插件](ext.dcloud.net.cn/plugin?id=4…)

image.gif
3. 导入插件到项目****
image.gif

image.gif

4. 插件配置 **将在极光官网申请的key填写下面

打卡manifest.json的源码视图,找到 nativePlugins 节点
(1) 配置JG-JPUSH,设置Android和ios的应用包名

image.gif

(2) 配置JG-JCore,设置Android和ios的应用包名极光官网信息的AppKey

image.gif

image.gif

三、编写代码****

在App.vue中编写如下代码:

插件对应的API文档地址:github.com/jpush/jpush…

onLaunchasync 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

},

onShowfunction() {

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'您还没有开启通知权限,无法接受到消息通知,请前往设置!',

showCancelfalse,

confirmText'去设置',

successfunction(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'您还没有开启通知权限,无法接受到消息通知,请前往设置!',

showCancelfalse,

confirmText'去设置',

successfunction(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打包

image.gif image.gif

五、测试推送****

image.gif image.gif