Flutter集成激光推送的主要步骤有以下几点:
1,到极光推送官网注册账号,创建应用,获取应用的APPKey;
2,点击创建的应用下面的推送设置,主要是ios需要设置开发环境和生产环境的证书,证书需要使用苹果开发者账号在苹果开发者网站申请,申请的时候注意证书的类型,极光需要的是推送证书(分为开发环境和生产环境);
3,按照官网的教程,集成jpush_flutter到项目中,按照官网教程分别配置Android和ios项目。
4,项目中的代码设置:
JPush jpush = new JPush();
jpush.addEventHandler(
// 接收通知回调方法。
onReceiveNotification: (Map<String, dynamic> message) async {
print("flutter onReceiveNotification: $message");
},
// 点击通知回调方法。
onOpenNotification: (Map<String, dynamic> message) {
jpush.clearAllNotifications(); //清除通知栏上所有通知
print("flutter onOpenNotification: $message");
spikToDetailJpush(message['bizId']);//点击推送通知后,跳转到对对应的页面
},
);
jpush.setup(
appKey: "在极光官网注册应用时获取的APPKey",
channel: "theChannel",
production: false,//设置是开发环境还是生产环境
debug: false, // 设置是否打印 debug 日志
);
//推送设置
if (Platform.isIOS) {
jpush.applyPushAuthority(
new NotificationSettingsIOS(
sound: true,
alert: true,
badge: true)
);
}
spikToDetailJpush(massageId) async{
Navigator.of(context).push(MaterialPageRoute(builder: (context){
return JPUSHMessageDetail(id: massageId);
}));
}
这里主要想讲一下onOpenNotification方法:当用户点击推送过来的这条消息时,会执行此方法。
这个方法返回过来的message本身就已经是个map了,不需要再进行decode,我刚开始就是没注意到这点,使用json.decode方法后也不报错,但是页面也不会进行跳转。