dc-push
·
/**
* 判断Push是否开启
*/
function isTurnedOnPush() {
var isOn = undefined;
try {
if ('iOS' == plus.os.name) {
var types = 0;
var app = plus.ios.invoke('UIApplication', 'sharedApplication');
var settings = plus.ios.invoke(app, 'currentUserNotificationSettings');
if (settings) {
types = settings.plusGetAttribute('types');
plus.ios.deleteObject(settings);
} else {
types = plus.ios.invoke(app, 'enabledRemoteNotificationTypes');
}
plus.ios.deleteObject(app);
isOn = (0 != types);
} else {
var main = plus.android.runtimeMainActivity();
var manager = plus.android.invoke('com.igexin.sdk.PushManager', 'getInstance');
isOn = plus.android.invoke(manager, 'isPushTurnedOn', main);
}
} catch (e) {
console.error('exception in isTurnedOnPush@dc-push!!');
}
return isOn;
}
/**
* 判断通知权限是否开启
*/
function isAreNotificationsEnabled() {
var isOn = undefined;
try {
if ('iOS' == plus.os.name) {
var UIApplication = plus.ios.import("UIApplication");
var app = UIApplication.sharedApplication();
var enabledTypes = 0;
if (app.currentUserNotificationSettings) {
var settings = app.currentUserNotificationSettings();
enabledTypes = settings.plusGetAttribute("types");
} else {
//针对低版本ios系统
enabledTypes = app.enabledRemoteNotificationTypes();
}
plus.ios.deleteObject(app);
if (0 == enabledTypes) {
console.log('----未开启通知权限');
isOn = false
} else {
console.log('++++已开启通知权限');
isOn = true
}
} else {
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var NotificationManagerCompat = plus.android.importClass("androidx.core.app.NotificationManagerCompat");
var packageNames = NotificationManagerCompat.from(main);
console.log(packageNames);
if (packageNames.areNotificationsEnabled()) {
console.log('++++已开启通知权限');
isOn = true
} else {
console.log('----未开启通知权限');
isOn = false
}
}
} catch (e) {
console.error('exception in isAreNotificationsEnabled!!', e);
}
return isOn;
}
/**
* 打开Push
* Android平台 - 打开个推(UniPush)的推送通道
* iOS平台 - 如果开启通知功能,则打开应用的设置页面引导用户开启通知
*/
function turnOnPush() {
try {
if ('iOS' == plus.os.name) {
// 如果设置中没有开启通知,则打开应用的设置界面
if (!isTurnedOnPush()) {
settingInIos();
}
} else {
var main = plus.android.runtimeMainActivity();
var manager = plus.android.invoke('com.igexin.sdk.PushManager', 'getInstance');
plus.android.invoke(manager, 'turnOnPush', main);
}
} catch (e) {
console.error('exception in turnOnPush@dc-push!!');
}
}
/**
* 关闭Push
* Android平台 - 关闭个推(UniPush)的推送通道
* iOS平台 - 不做任何操作
*/
function trunOffPush() {
try {
if ('iOS' == plus.os.name) {
// 这里不做任何操作(不引导用户关闭应用的推送能力),应该通知业务服务器不向此用户下发推送消息
} else {
var main = plus.android.runtimeMainActivity();
var manager = plus.android.invoke('com.igexin.sdk.PushManager', 'getInstance');
plus.android.invoke(manager, 'turnOffPush', main);
}
} catch (e) {
console.error('exception in trunOffPush@dc-push!!');
}
}
/**
* iOS平台打开应用设置界面
*/
function settingInIos() {
try {
if ('iOS' == plus.os.name) {
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);
}
} catch (e) {
console.error('exception in settingInIos@dc-push!!');
}
}
export default{
isOn: isTurnedOnPush,
iosSetting: settingInIos,
on: turnOnPush,
off: trunOffPush,
isNotOn: isAreNotificationsEnabled
}
更多推荐


所有评论(0)