Created
October 29, 2019 02:34
-
-
Save FaiChou/fb2e9abcd43d9ec3253ef7f8d75392cb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
initJpush() { | |
const navigation = this.refs.app_root_nav._navigation; | |
console.log("navigation", navigation); | |
// 新版本必需写回调函数 | |
if (!isIos) { | |
JPushModule.notifyJSDidLoad((resultCode) => { | |
if (resultCode === 0) { | |
console.log(resultCode) | |
} | |
}); | |
} | |
// 接收自定义消息 | |
JPushModule.addReceiveCustomMsgListener((message) => { | |
console.log("receive notification: " + message); | |
}); | |
//应用没有启动情况 ; | |
JPushModule.addOpenNotificationLaunchAppListener(message => { | |
launchedApp = true; | |
console.log("addOpenNotificationLaunchAppListener=====>NO", message); | |
let params = Platform.OS === "android" ? JSON.parse(message.extras) : message; | |
openPage(navigation, params); | |
if (Platform.OS == "ios") { | |
JPushModule.getBadge((badge) => { | |
badges = badge; | |
console.log("jpush-", typeof badges, badges); | |
if (badges > 0) { | |
badges--; | |
console.log("jpush----", badges); | |
JPushModule.setBadge(badges, (success) => { | |
console.log("jpush", success); | |
}); | |
} | |
}); | |
} | |
}); | |
// 接收推送通知&&iOS 10 以下的系统点击推送回调; | |
JPushModule.addReceiveNotificationListener(message => { | |
if (launchedApp) { | |
return launchedApp = false | |
} | |
console.log("接收到消息=====>", message,Platform.OS == "ios" && Platform.Version.split(".")[0] > 10,Platform.Version); | |
//处理iOS10以下APP打开状态接收推送消息的状态; | |
if (Platform.OS == "ios" && message.localNotice && AppState.currentState == "active") { | |
return false | |
} | |
//解决APP打开状态接收到消息不增加消息徽标 | |
if (Platform.OS == "ios" && Platform.Version.split(".")[0] >= 10) { | |
//因为iOS10以下APP打开状态时接收到消息但是不显示在通知栏所以暂时先这样处理; | |
let sumbagde = message.aps.badge; | |
console.log("jpush----", message.aps.badge); | |
JPushModule.setBadge(sumbagde, (success) => { | |
console.log("jpush", success); | |
}); | |
} | |
if (Platform.OS == "ios" && Platform.Version.split(".")[0] < 10 && AppState.currentState !== "active") { | |
console.log("addReceiveNotificationListener<10=====>", message) | |
let params = Platform.OS === "android" ? JSON.parse(message.extras) : message; | |
openPage(navigation, params); | |
JPushModule.getBadge((badge) => { | |
badges = badge; | |
console.log("jpush-", typeof badges, badges); | |
if (badges > 0) { | |
badges--; | |
console.log("jpush----", badges); | |
JPushModule.setBadge(badges, (success) => { | |
console.log("jpush", success); | |
}); | |
} | |
}); | |
} | |
if (Platform.OS == "ios" && Platform.Version.split(".")[0] < 10 && AppState.currentState == "active") { | |
let params = Platform.OS === "android" ? JSON.parse(message.extras) : message; | |
console.log("xxxx", params); | |
let cdate = new Date(); | |
JPushModule.sendLocalNotification({ | |
fireTime: cdate.getTime() + 500, | |
content: params.aps.alert, | |
badge: params.aps.badge, | |
extra: {localNotice: true,...params} | |
}) | |
} | |
}); | |
//点击推送消息打开应用回调 | |
JPushModule.addReceiveOpenNotificationListener(message => { | |
if (launchedApp) { | |
return launchedApp = false | |
} | |
console.log("addReceiveOpenNotificationListener10=====>", message); | |
let params = Platform.OS === "android" ? JSON.parse(message.extras) : message; | |
openPage(navigation, params); | |
if (Platform.OS == "ios") { | |
JPushModule.getBadge((badge) => { | |
badges = badge; | |
console.log("jpush-", typeof badges, badges); | |
if (badges > 0) { | |
badges--; | |
console.log("jpush----", badges); | |
JPushModule.setBadge(badges, (success) => { | |
console.log("jpush", success); | |
}); | |
} | |
}); | |
} | |
}); | |
} | |
//极光统计; | |
initJAnalytics() { | |
if (isIos) { | |
JAnalyticsModule.setup({appKey: "申请的APPKey"}); | |
JAnalyticsModule.setDebug({enable: true}); | |
JAnalyticsModule.crashLogON(); | |
console.log("极光分析----"); | |
} | |
} | |
//jpush绑定设备到alias | |
jpushSetAlias(user_id) { | |
console.log("jpush当前用户的登录信息", user_id, typeof user_id); | |
JPushModule.setAlias(user_id, (map) => { | |
console.log("jpush当前用户的登录信息", map); | |
if (map.errorCode === 0) { | |
console.log("jpush-android注册成功", map); | |
AsyncStorage.setItem("alias", map.alias) | |
} else { | |
console.log("jpushios注册成功", map); | |
AsyncStorage.setItem("alias", map.alias) | |
} | |
}); | |
} | |
//删除掉alias | |
jpushDeteleAlias() { | |
JPushModule.deleteAlias((map) => { | |
if (map.errorCode === 0) { | |
console.log("jpush android删除成功", map); | |
AsyncStorage.removeItem("alias"); | |
} else { | |
console.log("jpush ios删除成功", map); | |
AsyncStorage.removeItem("alias"); | |
} | |
}); | |
} | |
componentDidMount() { | |
this.initJpush(); | |
this.initJAnalytics(); | |
let that = this; | |
//防止在登录或者其他入口使用时没有绑定到alias的处理; | |
AsyncStorage.getItem("user_id", (err, res) => { | |
user_id = res; | |
AsyncStorage.getItem("alias", (err, res) => { | |
alias = res; | |
console.log("jpush-root外", err, user_id, alias, typeof user_id); | |
if (!_.isEmpty(alias)) { | |
if (_.isEmpty(user_id)) { | |
console.log("jpush-root内1", user_id, alias); | |
that.jpushDeteleAlias(); | |
} | |
} | |
if (!_.isEmpty(user_id)) { | |
if (_.isEmpty(alias)) { | |
console.log("jpush-root内2", user_id, alias); | |
that.jpushSetAlias(user_id); | |
} | |
} | |
}) | |
}); | |
} | |
componentWillUnmount() { | |
//取消; | |
JPushModule.removeReceiveCustomMsgListener(); | |
JPushModule.removeReceiveNotificationListener(); | |
JPushModule.removeOpenNotificationLaunchAppEventListener(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment