uniapp 对接 极光推送

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);
						}
					}
				});
			}
		}
	},
}
推送通知信息

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Write λ Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值