flutter APP 极光推送引入后 权限问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter APP 极光推送引入后 权限问题相关的知识,希望对你有一定的参考价值。
参考技术A 没有引用极光推送包 之前得权限:-访问网络
-修改/删除SDK卡中的内容
-拍照
-控制震动器
-查看网络状态
-查看WLANK状态
-读取手机状态和身份【去掉 tx_device_id 包 该权限没有 】
极光推送包引入后 手机权限多了以下这些:
-修改全局系统设置
-装载和卸载文件系统
-显示系统及警报
-大概位置
-更改WLAN状态
-精准的(GPS)位置
-访问额外的位置信息提供程序命令
-更改网络连接性
-检索当前运行的应用程序
Flutter 使用极光推送进行api和本地定时推送
极光推送在国内的App的覆盖率比较高,在第一时间就更新了对flutter
的支持,使用极光简单配置后就可以进行远端推送和本地定时推送,非常方便。
推荐使用
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: "以上是关于flutter APP 极光推送引入后 权限问题的主要内容,如果未能解决你的问题,请参考以下文章