Flutter阿里云推送插件aliyun_push的使用
Flutter阿里云推送插件aliyun_push的使用
一、快速入门
-
创建应用
- 在EMAS平台中创建应用,与您要加载SDK的端应用进行关联。创建应用请参见快速入门。
-
应用配置
-
Android
-
iOS
- 证书配置:iOS应用推送需配置开发环境/生产环境推送证书,详细信息请参见iOS 配置推送证书指南。
-
二、安装
在pubspec.yaml
中加入依赖项:
dependencies:
aliyun_push: 0.1.7
三、配置
3.1 Android
-
AppKey、AppSecret配置
在Flutter工程的android模块下的
AndroidManifest.xml
文件中设置AppKey、AppSecret:<application android:name="*****"> <meta-data android:name="com.alibaba.app.appkey" android:value="*****"/> <meta-data android:name="com.alibaba.app.appsecret" android:value="****"/> </application>
com.alibaba.app.appkey
和com.alibaba.app.appsecret
为您在EMAS平台上的App对应信息。在EMAS控制台的应用管理中或在下载的配置文件中查看AppKey和AppSecret。AppKey和AppSecret请务必写在
<application>
标签下,否则SDK会报找不到AppKey的错误。 -
消息接收Receiver配置
创建消息接收Receiver,继承自
com.alibaba.sdk.android.push.MessageReceiver
,并在对应回调中添加业务处理逻辑,可参考以下代码:public class MyMessageReceiver extends MessageReceiver { // 消息接收部分的LOG_TAG public static final String REC_TAG = "receiver"; @Override public void onNotification(Context context, String title, String summary, Map<String, String> extraMap) { // TODO处理推送通知 Log.e("MyMessageReceiver", "Receive notification, title: " + title + ", summary: " + summary + ", extraMap: " + extraMap); } @Override public void onMessage(Context context, CPushMessage cPushMessage) { Log.e("MyMessageReceiver", "onMessage, messageId: " + cPushMessage.getMessageId() + ", title: " + cPushMessage.getTitle() + ", content:" + cPushMessage.getContent()); } @Override public void onNotificationOpened(Context context, String title, String summary, String extraMap) { Log.e("MyMessageReceiver", "onNotificationOpened, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap); } @Override protected void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap) { Log.e("MyMessageReceiver", "onNotificationClickedWithNoAction, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap); } @Override protected void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl) { Log.e("MyMessageReceiver", "onNotificationReceivedInApp, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap + ", openType:" + openType + ", openActivity:" + openActivity + ", openUrl:" + openUrl); } @Override protected void onNotificationRemoved(Context context, String messageId) { Log.e("MyMessageReceiver", "onNotificationRemoved"); } }
将该receiver添加到
AndroidManifest.xml
文件中:<!-- 消息接收监听器 (用户可自主扩展) --> <receiver android:name=".MyMessageReceiver" android:exported="false"> <!-- 为保证receiver安全,建议设置不可导出,如需对其他应用开放可通过android:permission进行限制 --> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </receiver>
-
辅助通道集成
对于国内Android生态中的设备管控较严的情况,分别接入了相应的设备厂商推送辅助通道以提高这些设备上的到达率。辅助通道的集成可参考辅助通道集成。
在Flutter工程的android模块下的
AndroidManifest.xml
文件中设置各个辅助通道的配置参数:<application android:name="*****"> <meta-data android:name="com.huawei.hms.client.appid" android:value="appid=xxxxx" /> <meta-data android:name="com.vivo.push.api_key" android:value="" /> <meta-data android:name="com.vivo.push.app_id" android:value="" /> <meta-data android:name="com.hihonor.push.app_id" android:value="" /> <meta-data android:name="com.oppo.push.key" android:value="" /> <meta-data android:name="com.oppo.push.secret" android:value="" /> <meta-data android:name="com.xiaomi.push.id" android:value="" /> <meta-data android:name="com.xiaomi.push.key" android:value="" /> <meta-data android:name="com.meizu.push.id" android:value="" /> <meta-data android:name="com.meizu.push.key" android:value="" /> <meta-data android:name="com.gcm.push.sendid" android:value="" /> <meta-data android:name="com.gcm.push.applicationid" android:value="" /> <meta-data android:name="com.gcm.push.projectid" android:value="" /> <meta-data android:name="com.gcm.push.api.key" android:value="" /> </application>
更多关于Flutter阿里云推送插件aliyun_push的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter阿里云推送插件aliyun_push的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter项目中集成并使用阿里云推送插件(aliyun_push)时,你可以按照以下步骤进行配置和实现。这里提供一个基本的代码案例,帮助你快速上手。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加aliyun_push
依赖:
dependencies:
flutter:
sdk: flutter
aliyun_push: ^最新版本号 # 请替换为最新的版本号
然后运行flutter pub get
来获取依赖。
2. 配置Android和iOS项目
Android配置
- 在
android/app/src/main/AndroidManifest.xml
中添加权限和配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<!-- 添加必要的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<!-- 阿里云推送服务配置 -->
<application
... >
<meta-data
android:name="com.aliyun.ams.AppId"
android:value="你的阿里云App ID"/> <!-- 替换为你的阿里云App ID -->
<service
android:name="com.aliyun.ams.message.impl.PushServiceImpl"
android:exported="true">
<intent-filter>
<action android:name="com.aliyun.push.ACTION_MESSAGE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
<receiver
android:name="com.aliyun.ams.message.impl.NotificationClickReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.aliyun.push.ACTION_NOTIFICATION_CLICKED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
<!-- 其他配置 -->
...
</application>
</manifest>
- 在
android/app/build.gradle
中配置阿里云SDK:
android {
...
defaultConfig {
...
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
manifestPlaceholders = [
AMS_APPKEY: "你的阿里云App Key", // 替换为你的阿里云App Key
AMS_APPSECRET: "你的阿里云App Secret" // 替换为你的阿里云App Secret
]
}
...
}
iOS配置
对于iOS,阿里云推送需要一些额外的配置,这通常涉及到在Xcode中进行设置,但由于篇幅限制和iOS配置的复杂性,这里只简要说明需要配置的步骤:
- 在Xcode中配置App ID和推送权限。
- 在Info.plist中添加阿里云推送相关的配置。
- 在AppDelegate中初始化阿里云推送SDK。
由于iOS配置相对复杂且多变,建议参考阿里云官方文档进行详细配置。
3. 初始化和使用aliyun_push插件
在你的Flutter代码中初始化并使用aliyun_push插件:
import 'package:flutter/material.dart';
import 'package:aliyun_push/aliyun_push.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
_initPush();
}
Future<void> _initPush() async {
// 初始化阿里云推送
try {
bool result = await AliyunPush.init(
appId: "你的阿里云App ID", // 替换为你的阿里云App ID
appKey: "你的阿里云App Key", // 替换为你的阿里云App Key
appSecret: "你的阿里云App Secret", // 替换为你的阿里云App Secret
);
print("Push init result: $result");
} catch (e) {
print("Failed to init push: $e");
}
// 监听推送消息
AliyunPush.onMessageReceived.listen((Map<String, dynamic> message) {
print("Received message: $message");
// 处理推送消息
});
// 监听通知点击事件
AliyunPush.onNotificationClicked.listen((Map<String, dynamic> notification) {
print("Notification clicked: $notification");
// 处理通知点击事件
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Aliyun Push Demo'),
),
body: Center(
child: Text('Waiting for push messages...'),
),
),
);
}
}
注意事项
- 确保你的阿里云推送服务已经正确配置并启用。
- 在发布应用前,请仔细检查并测试推送功能。
- 由于iOS和Android的配置差异较大,建议分别参考阿里云官方文档进行详细配置。
这个代码案例提供了一个基本的集成框架,你可以根据自己的需求进行扩展和修改。