uniapp引用极光推送 插件

本文详细介绍了如何在uni-app中集成极光推送服务,包括安装插件、初始化、监听推送状态、获取注册ID、处理通知权限、接收推送消息及配置manifest.json等步骤。同时提供了ios和android的配置差异,确保推送功能正常工作。
摘要由CSDN通过智能技术生成

一. 导入所需要的插件 主要需要两个

  1. https://ext.dcloud.net.cn/plugin?id=4035(JPUSH)
  2. https://ext.dcloud.net.cn/plugin?id=4028 (JCORE)

二. 在App.Vue中的 onLaunch (或者onShow)中监听极光推送的状态

监听之前记得引入

var jpushModule = uni.requireNativePlugin("JG-JPush")

然后监听代码

//监听 极光推送连接状态
uni.$on('connectStatusChange',(connectStatus)=>{ 
   var connectStr = ''
   if (connectStatus == true) {
	   connectStr = '已连接'
	   this.getRegistrationID()
   }else {
	   connectStr = '未连接'
   }
   console.log('监听到了连接状态变化 --- ', connectStr) 
   this.connectStatus = connectStr
}) 

三 . 在onLaunch中初始化且获取registerID

jpushModule.initJPushService();
getRegistrationID() { //获取registerID
	jpushModule.getRegistrationID(result=>{
		let registerID = result.registerID
		console.log(registerID)
		this.registrationID = registerID
		uni.setStorageSync("registerID",registerID)
	})	
},

四 . 推送需要打开通知权限 ,所以可以写一个弹窗 去让用户去打开

  1. 首先要判断用户是否打开通知权限
//getNotificationEnabled 和 noticMsgTool 只是个方法名 可以随便起
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()
			}
		})
	}
},
  1. 如果没有打开 则可以 去 请求打开
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);
				}
			}
		});
	}
}

五. 接收推送消息

addNotificationListener可以获取到 极光推送的 消息回调,我的需求是推送 和消息 分开 ,推送是极光推送,但是 消息是从后台获取 所以没有用addNotificationListener , 如果没有其他需求的话 , 可以直接使用addNotificationListener 获取推送消息

jpushModule.addNotificationListener(result=>{//极光推送的消息通知回调
	console.log(result)
});

这样写 之后 就会获取到 一个 registerID ,且联通极光推送,在根据 registerID去发送推送消息 (后台的事就不操心了)。

六. 代码解决了 ,接下来 就是 极光的应用的配置了

  1. 极光推送的 账号注册 就不说了
  2. 首页右上角有一个创建应用 点击创建应用如下图
    应用名称 在 manifest.json → 基础配置中 找到 应用名称 填写
    应用图标也在 manifest.json中找
    在这里插入图片描述
  3. 选择消息推送 点击下一步
    在这里插入图片描述
  4. 选择通道 和 填写 包名
    应用包名 通过 hbuilder → 发行 → 原生app云打包 获取 android和ios包名
    通道可以全选
    在这里插入图片描述
    创建成功之后 返回到 应用管理 进入你刚刚创建的 应用管理中 ,界面如下图,记住 AppKey,在manifest.json需要用到
    在这里插入图片描述

上述流程是android的 流程 ios流程可在上图中 点击 ios集成进入,选择推送消息
ios第二步的 开发证书和生产证书 可通过证书获取流程去获取

七. manifest.json的配置

  1. 在App原生插件配置中 界面如下图
    JPUSH_APPKEY_ANDROID 和 JPUSH_APPKEY_IOS两个填极光推送的 appkey
    剩余的通道设置 可以选择示例,如下图填写方式
    在这里插入图片描述
  2. 在App模块配置中勾选 push ,但是不能勾选 uniPush,因为我们用的是极光推送 不是 uniPush推送 ,uniPush推送也比较好用,有兴趣可以去试一下
  3. ios打包的 证书 profile文件需要 带有push功能
    在这里插入图片描述
  4. 使用自定义基座打包
    hbuilder → 运行 → 运行到手机或模拟器 → 运行基座 → 自定义基座
    然后同级选择 制作自定义基座 ,等待打包完成之后 运行到手机或模拟器 。
    如此 我们 的 极光推送配置就完成了

八. 上述完成之后 ,接下来就是测试消息推送

进入极光推送官网创建的应用中,点击左侧 消息推送,点击右侧创建通知消息
填写 内容 和 标题 和选择发送平台
在这里插入图片描述
上面获取的Registration ID 填写在 下图中,然后点击 发送预览 确定。
在这里插入图片描述

结果如下图
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值