119 lines
3.2 KiB
JavaScript
119 lines
3.2 KiB
JavaScript
|
/**
|
|||
|
* 判断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;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 打开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!!');
|
|||
|
}
|
|||
|
}
|
|||
|
/**
|
|||
|
* android打开应用设置页面
|
|||
|
*/
|
|||
|
function settingInAndroid(){
|
|||
|
if (uni.getSystemInfoSync().platform == "android") {
|
|||
|
var main = plus.android.runtimeMainActivity();
|
|||
|
var Intent = plus.android.importClass('android.content.Intent');
|
|||
|
var Settings = plus.android.importClass('android.provider.Settings');
|
|||
|
var intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
|||
|
// 安卓跳转设置页面详细查看(https://ask.dcloud.net.cn/question/14732)
|
|||
|
main.startActivity(intent);
|
|||
|
}
|
|||
|
}
|
|||
|
/**
|
|||
|
* 打开应用设置界面
|
|||
|
*/
|
|||
|
function setting(){
|
|||
|
if (uni.getSystemInfoSync().platform == "ios") {
|
|||
|
settingInIos();
|
|||
|
}
|
|||
|
if (uni.getSystemInfoSync().platform == "android") {
|
|||
|
settingInAndroid();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
export default {
|
|||
|
isOn: isTurnedOnPush,
|
|||
|
iosSetting: settingInIos,
|
|||
|
on: turnOnPush,
|
|||
|
off: trunOffPush,
|
|||
|
setting:setting
|
|||
|
}
|