php 极光定时推送,关于前端:Flutter-使用极光推送进行api和本地定时推送

极光推送在国内的App的覆盖率比拟高,在第一工夫就更新了对flutter的反对,应用极光简略配置后就能够进行远端推送和本地定时推送,十分不便。

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元

举荐应用android进行测试,配置简略,ios须要证书,绝对比较复杂。我也是用的安卓端进行演示。

注册极光

先到极光官网,注册账号,配置一下flutter我的项目的包名,如果不记得了,能够到flutter我的项目下的 android/app/build.gradle 中找一下,defaultConfig 下的 applicationId 就是包名,这个配置文件不要关,后续咱们还会再回来。

在极光配置好安卓的包名后,咱们会失去 AppKey,到这就算注册实现。

我的项目配置

持续关上,android/app/build.gradle 文件。

将 defaultConfig 中 minSdkVersion 批改为 17,flutter创立后默认是16,无奈应用极光推送。

defaultConfig 中增加 manifestPlaceholders。

上面是我的配置,大家依据本人的状况批改即可:

defaultConfig {

applicationId "cn.idiocy66.fe_mp" // 包名

minSdkVersion 17 // 批改为17

targetSdkVersion 28

versionCode flutterVersionCode.toInteger()

versionName flutterVersionName

// 极光配置

manifestPlaceholders = [

JPUSH_PKGNAME : applicationId,

JPUSH_APPKEY : "9bf4f58ea9471001e0a4d66d", // 极光中的appkey

JPUSH_CHANNEL : "developer-default", // 默认即可.

]

}

初始化

配置实现,能够运行推送性能了。

应用极光推送性能前,必须先执行初始化函数:

final JPush jpush = new JPush();

jpush.setup(

appKey: "9bf4f58ea9471001e0a4d66d", // 极光中的appkey

channel: "theChannel",

production: false,

debug: true,

);

如果不进行初始化操作,在极光后盾无奈查问到对应的机器信息,也就无奈应用推送性能。

取得惟一 rid

在同一个极光利用中,每个设施都领有惟一的一个id,用于身份验证,后盾也能够独自向这个rid进行音讯推送。

应用getRegistrationID函数获取以后设施的rid:

jpush.getRegistrationID().then((rid) {

print("以后设施的rid: ${rid}");

});

本地推送

本地推送并不会收到极光的条数限度:

var localNotification = LocalNotification(

id: 234,

title: "本地推送",

buildId: 1,

content: "😁 轻易写点内容,工夫 ${DateTime.now().toIso8601String()}",

fireTime: DateTime.now(), // 立刻发送

subtitle: "副标题 123456",

badge: 1,

extra: {"myInfo": "推送信息balabla"} // 携带数据

);

jpush.sendLocalNotification(localNotification);

本地定时推送

定时本地推送,传入DateTime,相对工夫。

// 3秒后进行本地推送

var fireDate = DateTime.fromMillisecondsSinceEpoch(DateTime.now().millisecondsSinceEpoch + 3000);

var localNotification = LocalNotification(

id: 1,

title: '定时推送',

buildId: 1,

content: '三秒后本地推送',

fireTime: fireDate,

subtitle: '子标题',

badge: 5,

extra: {"data": "附带数据"}

);

jpush.sendLocalNotification(localNotification);

近程推送

近程推送,咱们临时能够应用极光后盾进行,当然有后盾能力也能够间接应用api调用。

默认优先级的音讯不会弹窗显示,须要调高优先级则能够在屏幕顶部弹出。

跳转零碎推送设置

跳转到零碎设置中的推送设置(以后利用),点击返回能够间接返回以后利用。

常常用于用户敞开推送后的再揭示。

jpush.openSettingsForNotification();

通常须要和权限获取相配合:

jpush.isNotificationEnabled().then((bool value) {

// 返回是否开启告诉

});

当用户禁止告诉时,提醒跳转系统配置进行开启告诉操作。

音讯监听

举荐在 初始化函数 setup 前进行告诉监控:

jpush.addEventHandler(

onReceiveNotification: (Map message) async {

print("接管到推送: $message");

},

onOpenNotification: (Map message) async {

print("通过点击推送进入app: $message");

},

onReceiveMessage: (Map message) async {

print("接管到自定义音讯: $message");

},

onReceiveNotificationAuthorization: (Map message) async {

print("告诉权限状态: $message");

}

);

推送和音讯不同,推送是会显示在设施告诉栏中,而音讯不会。

音讯是由后端api发送给设施上的,不会有任何提醒,只能靠这里的监听来接管。

ios 推送是须要用户确认受权的,与安卓有差别,须要独自调用 applyPushAuthority 办法,弹出受权。如果用户不批准,后续无奈再次弹出,只能跳转系统配置页面开启推送权限。

其余

推送的弱小不仅如此,还有设置标签、设置别名等性能,能够将每个用户都进行精密划分,做到更精准的推送。

更多内容欢送关注公众号:《前端拾遗》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Flutter集成极光推送的步骤: 1. 在极光官网注册账号并创建应用,获取AppKey。 2. 在Flutter项目中添加极光推送插件,如:jpush_flutter。 3. 在AndroidManifest.xml文件中添加以下代码: ```xml <!-- 极光推送权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 极光推送服务 --> <service android:name="cn.jpush.android.service.PushService" android:enabled="true" android:exported="false" android:process=":pushcore" > <intent-filter> <action android:name="cn.jpush.android.intent.REGISTER" /> <action android:name="cn.jpush.android.intent.REPORT" /> <action android:name="cn.jpush.android.intent.PushService" /> <action android:name="cn.jpush.android.intent.PUSH_TIME" /> </intent-filter> </service> <receiver android:name="cn.jpush.android.service.PushReceiver" android:enabled="true" android:exported="false" > <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <category android:name="你的包名" /> </intent-filter> <intent-filter> <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED_PROXY" /> <category android:name="你的包名" /> </intent-filter> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTRATION" /> <category android:name="你的包名" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <category android:name="你的包名" /> </intent-filter> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <category android:name="你的包名" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <data android:scheme="package" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> ``` 4. 在iOS项目中,到极光官网下载JPush SDK并导入到项目中,在AppDelegate.m文件中添加以下代码: ```objective-c #import "JPUSHService.h" // iOS 10 及以上需导入 UserNotifications.framework #import <UserNotifications/UserNotifications.h> // Override point for customization after application launch. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 初始化 JPush SDK [JPUSHService setupWithOption:launchOptions appKey:@"your_appkey" channel:nil apsForProduction:NO]; return YES; } // 注册APNs成功并上报DeviceToken - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [JPUSHService registerDeviceToken:deviceToken]; } // 实现注册APNs失败接口 - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error); } // 添加处理APNs通知回调方法 #ifdef NSFoundationVersionNumber_iOS_9_x_Max // iOS 10之前收到通知 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // Required, iOS 7 Support [JPUSHService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); } // iOS 10之前收到本地通知 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { // Required, iOS 7 Support [JPUSHService showLocalNotificationAtFront:notification identifierKey:nil]; } // iOS 10及以上收到通知 - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler { NSDictionary * userInfo = notification.request.content.userInfo; if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) { [JPUSHService handleRemoteNotification:userInfo]; } completionHandler(UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound); } // iOS 10及以上收到本地通知 - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { NSDictionary * userInfo = response.notification.request.content.userInfo; if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) { [JPUSHService handleRemoteNotification:userInfo]; } completionHandler(); } #endif ``` 5. 在Flutter代码中,初始化JPush并监听推送事件: ```dart import 'package:jpush_flutter/jpush_flutter.dart'; // 初始化JPush JPush jpush = new JPush(); // 监听推送事件 jpush.addEventHandler( onReceiveNotification: (Map<String, dynamic> message) async { print("Flutter onReceiveNotification: $message"); }, onOpenNotification: (Map<String, dynamic> message) async { print("Flutter onOpenNotification: $message"); }, onReceiveMessage: (Map<String, dynamic> message) async { print("Flutter onReceiveMessage: $message"); }, ); // 启动JPush jpush.setup( appKey: "your_appkey", // 极光官网申请的AppKey channel: "developer-default", // 渠道,默认值为“developer-default” production: false, // 是否生产环境 debug: true, // 是否开启调试模式 ); ``` 以上就是Flutter集成极光推送的步骤,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值