Skip to content

Instantly share code, notes, and snippets.

@FaiChou
Created October 29, 2019 02:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FaiChou/fb2e9abcd43d9ec3253ef7f8d75392cb to your computer and use it in GitHub Desktop.
Save FaiChou/fb2e9abcd43d9ec3253ef7f8d75392cb to your computer and use it in GitHub Desktop.
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