首页 > 其他 > 详细

基于unipush实现直播开播提醒功能

时间:2020-09-24 17:48:08      阅读:87      评论:0      收藏:0      [点我收藏+]

1、unipush的使用以及注意事项

https://www.cnblogs.com/huihuihero/p/13711909.html

2、开播提醒功能说明

用户点击直播间“开播提醒”按钮,作如下判断

1、判断用户是否登录,未登录则引导用户去登录,因为直播推送需要用户id

2、判断用户手机是否开启通知权限,若没有则引导其开启,若已开启则请求接口设置开播提醒

技术分享图片

3、功能实现

1、引入此插件 https://ext.dcloud.net.cn/plugin?id=594

在main.js里引入
import permission from ‘@/js_sdk/wa-permission/permission.js‘
Vue.prototype.$perJudge=permission

2、修改permission.js,添加以下代码(添加判断安卓通知权限的函数以及暴露此函数)

//判断android通知权限是否开启
function judgeAndroidPermissionPush(){
	var result = false;
	var main = plus.android.runtimeMainActivity();
	var pkName = main.getPackageName();
	var uid = main.getApplicationInfo().plusGetAttribute("uid");
	var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat");
	var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled();  
	if (!areNotificationsEnabled) {  //未开启通知权限
		result = false
		uni.showModal({  //进一步处理,提示并引导用户去设置中心开启通知权限
			title: ‘提示‘,  
			content: ‘您尚未开启通知权限,我们无法及时提醒到您,是否前往开启‘,   
			success: function (res) {  
				if (res.confirm) {  
					var Intent = plus.android.importClass(‘android.content.Intent‘);
					var Build = plus.android.importClass("android.os.Build");
	
					//判断当前安卓系统
					if (Build.VERSION.SDK_INT >= 26) {  //android 8.0+  
						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 {  //其他android版本
						var Settings = plus.android.importClass("android.provider.Settings");
						var Uri = plus.android.importClass("android.net.Uri");
						var intent = new Intent();
						intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
						var uri = Uri.fromParts("package", main.getPackageName(), null);
						intent.setData(uri);
					}
					
					// 跳转到该应用的系统通知设置页  
					main.startActivity(intent); 
				}  
			}
		});
	}else{  //已开启通知权限
		result = true
	}
	return result  //返回状态:false为未开启,true为开启,反馈给调用此函数的页面
}



module.exports = {
	judgeIosPermission: judgeIosPermission,
	requestAndroidPermission: requestAndroidPermission,
	checkSystemEnableLocation: checkSystemEnableLocation,
	gotoAppPermissionSetting: gotoAppPermissionSetting,
	judgeAndroidPermissionPush: judgeAndroidPermissionPush   //添加此行代码,将判断安卓通知权限是否开启的函数暴露
}

3、在直播间页面调用

//设置开播提醒
			setStartremind(){
				if(this.userToken){  //是否登录
					if(this.$platform==‘ios‘){  //iOS端
						let res=this.$perJudge.judgeIosPermission(‘push‘)  //判断用户是否开通了推送权限
						if(res){
							//设置开播提醒,请求接口
						}else{
							//iOS判断未开启通知权限时,封装函数中未做相关处理,所以这里做一下处理,引导用户去开启
							uni.showModal({
								title: ‘提示‘,
								content: "您尚未开启通知权限,我们无法及时提醒到您,是否前往开启",
								success: res => {
									if (res.confirm) {
										this.$perJudge.gotoAppPermissionSetting()
									}
								}
							});
						}
					}else{  //Android端
						let res=this.$perJudge.judgeAndroidPermissionPush()
						if(res){
							//设置开播提醒,请求接口
						}else{
							//安卓判断未开启通知权限时,已直接在封装函数中引导用户去开启了,所以这里无需做处理
						}
					}
				}else{
					this.loginPopRemind="登录后即可设置开播提醒,是否登录?"
					this.$refs.noLoginPopup.open()
				}
			},

基于unipush实现直播开播提醒功能

原文:https://www.cnblogs.com/huihuihero/p/13725326.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!