写点什么

【Flutter 专题】120 Flutter & 腾讯移动通讯 TPNS,腾讯 Android 面试

用户头像
Android架构
关注
发布于: 刚刚

dependencies:flutter:sdk: fluttertpns_flutter_plugin:git:url: https://github.com/TencentCloud/TPNS-Flutter-Pluginref: V1.0.7


  • Android


app build.gradle 文件下配置 IDKEY 以及支持的 .so 库


defaultConfig {applicationId "com.ace.plugin.flutter_app07"minSdkVersion 16targetSdkVersion 28versionCode flutterVersionCode.toInteger()versionName flutterVersionNametestInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"ndk {abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a', 'arm6'}manifestPlaceholders = [XG_ACCESS_ID : "1500018481",XG_ACCESS_KEY : "AW8Y2K3KXZ38",]}

1.2 方法使用

小菜按照官网的介绍尝试了一些常用的 API 方式,主要分为应用类,账号类和标签类三种 API,小菜业务中没有应用账号和标签模块,暂未深入研究;



  • 应用接口 API

a. 注册推送服务

对于服务的注册初始化,可以在首次进入应用 initState() 中直接初始化,也可以根据业务逻辑在固定的位置进行初始化,需要传递申请的账号 IDKEY;注册成功之后会在 onRegisteredDone() 中进行回调,并获取对应设备的唯一 Token


XgFlutterPlugin().startXg("1500018481", "AW8Y2K3KXZ38");


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


// 注册回调 XgFlutterPlugin().addEventHandler(onRegisteredDone: (String msg) async {print("HomePage -> onRegisteredDone -> $msg");_showDialog('注册成功', msg);},);


b. 注销推送服务

服务的注销方法可以通过 stopXg() 进行处理,并在 unRegistered 进行回调监听;


XgFlutterPlugin().stopXg();


// 注销回调 XgFlutterPlugin().addEventHandler(unRegistered: (String msg) async {print("HomePage -> unRegistered -> $msg");},);

c. 设备推送标识

对于设备唯一标识的获取,可以通过注册初始化成功之后获取,也可以通过 XgFlutterPlugin.xgToken 获取唯一 Token


Future<void> getTPNSToken(title) async {try {String xgToken = await XgFlutterPlugin.xgToken;print('HomePage -> getTPNSToken -> $xgToken');_showDialog(title, xgToken);} catch (e) {print(e.toString());}}


d. 上报角标数

对于桌面角标,在通知类消息中 华为小米 设备在开启权限之后,接收通知会由桌面角标的更新;而 TPNS 提供的 setBadge() 只有在 iOS 环境下支持,对于 Android 环境下的透传类型或其他厂商设备的支持,可以通过 FlutterNative 通信来由原生实现;


e. SDK 版本

TPNS SDK 版本可以通过 XgFlutterPlugin.xgSdkVersion 获取;


Future<void> getTPNSSDKVersion(title) async {try {String sdkVersion = await XgFlutterPlugin.xgSdkVersion;print('HomePage -> getTPNSSDKVersion -> $sdkVersion');_showDialog(title, sdkVersion);} catch (e) {print(e.toString());}}



  • 账号接口 API


TPNS 提供了个性化服务,关于账号的绑定和解绑等功能,可以根据具体的业务逻辑进行处理;


String inputStr = "ACE_Flutter";// 设置账号 XgFlutterPlugin().setAccount(inputStr, AccountType.UNKNOWN);// 解绑账号 XgFlutterPlugin().deleteAccount(inputStr, AccountType.UNKNOWN);// 清空账号 XgFlutterPlugin().cleanAccounts();


XgFlutterPlugin().addEventHandler(xgPushDidBindWithIdentifier: (String msg) async {print("HomePage -> xgPushDidBindWithIdentifier -> inputStr', msg);},xgPushDidUnbindWithIdentifier: (String msg) async {print("HomePage -> xgPushDidUnbindWithIdentifier -> msg");_showDialog('解绑账号', msg);},xgPushDidClearAllIdentifiers: (String msg) async {print("HomePage -> xgPushDidClearAllIdentifiers -> msg");_showDialog('清除全部账号', msg);})


  • 标签接口 API


TPNS 的用户标签功能比较强大,可以针对性的进行地理围栏或标签分布的推送;TPNS 提供了绑定和解绑标签,更新和清理标签等功能,方便针对性的进行数据推送;


String inputStr = "ACE_Flutter";// 绑定标签 XgFlutterPlugin().addTags([inputStr]);// 解绑标签 XgFlutterPlugin().deleteTags([inputStr]);// 更新标签 XgFlutterPlugin().setTags([inputStr]);// 清除标签 XgFlutterPlugin().cleanTags();

2. 通知类消息

小菜在上一篇文章中介绍了 TPNS 消息发布后台,不管是哪种方式集成,发布后台是一致的;

2.1 接收 & 展示

通知类 Push 在设备开启权限时,接收消息后会自动展示通知,这是由 TPNS SDK 实现好的,与原生一致,通知类 Push 标题和内容也只能以通过消息后台发布为准,不能自由更改;其中 通知类 Push 接收通过 onReceiveNotificationResponse() 方法回调监听;


XgFlutterPlugin().addEventHandler(onReceiveNotificationResponse: (Map<String, dynamic> msg) async {print("HomePage -> onReceiveNotificationResponse -> $msg");_showDialog('通知类消息接收', msg.toString());},);



2.2 点击

通知类 Push 消息点击是通过 xgPushClickAction() 方法进行回调,之后的业务逻辑可以根据消息返回的信息进行处理;小菜为了适配其他的 Push 类型,调整了点击后的操作,默认为启动 app,小菜通常在【附加参数】中添加 Json 进行数据解析,在进行之后的业务处理;


XgFlutterPlugin().addEventHandler(xgPushClickAction: (Map<String, dynamic> msg) async {print("HomePage -> xgPushClickAction -> $msg");_showDialog('通知类消息点击', msg.toString());},);


3. 透传类消息

透传类 Push 相比 通知类 Push 要复杂一些,TPNS 只提供了 透传类 Push 接收,不会进行 Notification 通知展示;因此小菜通过 Flutter-Native 消息通信进行处理;其中 Notification 的展示点击需要 Native 方面进行配合处理;



用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
【Flutter 专题】120 Flutter & 腾讯移动通讯 TPNS,腾讯Android面试