uniapp推荐使用 uniPush,奈何公司用的极光推送,功能还是要实现,好大脑不如烂笔头,因此记录
注册登录并创建应用
Android申请
IOS申请(项目目前没上架苹果商店),缺啥弄啥申请就完事了
安装和配置uniapp官方的极光推送插件
极光推送 JCore 官方 SDK - DCloud 插件市场
极光推送 JPush 官方 SDK - DCloud 插件市场
在对应项目中 找到 manifest.json=>App原生插件配置进行集成和配置,安装云打包就从云中集成本地则选择当前项目nativeplugins对应插件
配置 : 选择=>源码视图=>修改图中框选部分
uniapp 集成 极光推送官网 demo github访问慢,自行解决
代码部分
单纯使用推送只需要看App.vue 和index.vur中的代码就够用
这是官网给出的常用 JGPush-API文档 自行查看
以下代码仅供参考
const jpushModule = uni.requireNativePlugin('JG-JPush');
export default {
onLaunch() {
// #ifdef APP-PLUS
jpushModule.initJPushService();
jpushModule.setLoggerEnable(true);
// // 设置别名
// jpushModule.setAlias({
// alias: '',
// sequence: 1
// });
this.getNotificationEnabled();
//监听 极光推送连接状态
jpushModule.addConnectEventListener((result) => {
console.log('监听 极光推送连接状态', result);
let connectEnable = result.connectEnable;
uni.$emit('connectStatusChange', connectEnable);
});
//极光推送的消息通知回调
jpushModule.addNotificationListener((result) => {
jpushModule.setBadge(0);
plus.runtime.setBadgeNumber(0);
let notificationEventType = result.notificationEventType;
// let woopId = result.extras && result.extras.dataType === 'woop' && result.extras.value;
console.log('通知', result, notificationEventType);
// 点击事件
if (notificationEventType == 'notificationOpened') {
uni.navigateTo({
url: '/pages/mine-merchant/order-management/order-management'
});
}
});
uni.$on('connectStatusChange', (connectStatus) => {
var connectStr = '';
if (connectStatus == true) {
connectStr = '已连接';
this.getRegistrationID();
} else {
connectStr = '未连接';
}
console.log('监听到了连接状态变化 --- ', connectStr);
});
//#endif
},
methods: {
getRegistrationID() {
jpushModule.getRegistrationID((result) => {
let registerID = result.registerID;
console.log('获取registerID', registerID);
this.setSto('registerID', registerID);
});
},
getNotificationEnabled() {
if (uni.getSystemInfoSync().platform == 'ios') {
jpushModule.requestNotificationAuthorization((result) => {
let status = result.status;
if (status < 2) {
this.noticMsgTool();
}
});
} else {
jpushModule.isNotificationEnabled((result) => {
console.log('判断android是否打开权限1:true,0:false', result);
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);
}
}
});
}
}
},
}