Flutter消息通信插件infobip_mobilemessaging的使用
Flutter消息通信插件infobip_mobilemessaging的使用
Mobile Messaging SDK 插件介绍
Mobile Messaging SDK 是为您的移动应用程序设计和开发的,旨在轻松启用推送通知通道。几乎在实施过程中,您就可以在应用程序中获取推送通知,并访问 Infobip IP Messaging Platform 的功能。
本文档描述了将插件集成到您的 Flutter 项目中的步骤。
需求
- Flutter 3.3.0+
- iOS 项目:
- Xcode 116.x
- 最小部署目标 12.0
- Android 项目:
- Android Studio
- 支持的 API 级别:21 (Android 5.0 - Lollipop) - 34 (Android 14)
快速启动指南
此指南旨在帮助您快速上手 Flutter 中的 Mobile Messaging SDK 插件。
- 确保在 Infobip 平台上设置应用(如果尚未设置)。
- 在
pubspec.yaml
文件中添加infobip_mobilemessaging
插件依赖项:
dependencies:
infobip_mobilemessaging: '^6.1.0'
- 运行
flutter pub get
安装插件。 - 配置平台:
- iOS:
更新
ios/Podfile
以设置 iOS 部署目标平台 12.0,如果需要的话,在 Terminal 中执行cd ios && pod update
。 导入MobileMessaging
和在<ProjectName>/ios/Runner/AppDelegate.m
中添加[MobileMessagingPluginApplicationDelegate install];
(这要求 OS 回调如didRegisterForRemoteNotifications
被原生 MobileMessaging SDK 捕获):
- iOS:
更新
@import MobileMessaging;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[MobileMessagingPluginApplicationDelegate install];
...
}
...
参考 Swift 代码:
import MobileMessaging
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
...
MobileMessagingPluginApplicationDelegate.install()
...
}
}
...
-
配置您的项目以支持推送通知,详情请参阅 iOS 整合快速启动指南中的第 2 步。
-
将 Notification Service Extension 集成到您的应用中,以便获得:
- 更准确的消息处理和交付统计
- 锁屏上的丰富通知支持
-
Android:
- 添加
com.google.gms:google-services
到android/build.gradle
文件中。 - 在
android/app/build.gradle
文件末尾添加apply plugin: 'com.google.gms.google-services'
以应用 Google Services Gradle 插件。 - 设置 Firebase 为您的项目,并将 Firebase 配置文件(google-services.json)添加到 app 目录下。通常需要添加到
android/app
目录中。
- 添加
-
如果您想以不同的方式提供 Firebase 配置,请参阅 Applying Firebase configuration in MobileMessaging Flutter plugin。
-
从 Android 13 开始,Google 要求用户授予通知权限。请遵循 Android 13 通知权限处理指南。
使用插件示例代码
import 'package:flutter/material.dart';
import 'package:infobip_mobilemessaging/infobip_mobilemessaging.dart';
import 'package:infobip_mobilemessaging/models/configurations/configuration.dart' as mmconfiguration;
import 'screens/homepage.dart';
import 'widgets/page.dart';
void main() async {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State createState() => _MyAppState();
}
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
Future<void> initPlatformState() async {
if (!mounted) return;
await InfobipMobilemessaging.init(mmconfiguration.Configuration(
applicationCode: 'Your Application Code',
inAppChatEnabled: true,
fullFeaturedInAppsEnabled: false,
defaultMessageStorage: true,
iosSettings: mmconfiguration.IOSSettings(
notificationTypes: ['alert', 'badge', 'sound'],
forceCleanup: false,
logging: true,
withoutRegisteringForRemoteNotifications: false),
webRTCUI: mmconfiguration.WebRTCUI(
configurationId: 'Your WEBRTC push configuration id'),
));
// Comment out to automatically enable WebRTC
// try {
// await InfobipMobilemessaging.enableChatCalls();
// print('Calls enabled.');
// } catch (err) {
// print('Calls enable error: $err');
// }
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Infobip Flutter Example',
routes: Map.fromEntries(pages.map((d) => MapEntry(d.route, d.builder))),
home: const HomePage(),
navigatorKey: navigatorKey,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.white),
scaffoldBackgroundColor: const Color(0xfff4ff22),
useMaterial3: true,
fontFamily: 'RobotoMono',
),
);
}
}
更多关于Flutter消息通信插件infobip_mobilemessaging的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter消息通信插件infobip_mobilemessaging的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter应用中使用infobip_mobilemessaging
插件进行消息通信的示例代码。这个插件允许你集成Infobip的Mobile Messaging SDK,以便在Flutter应用中处理短信、推送通知等。
首先,确保你已经在pubspec.yaml
文件中添加了infobip_mobilemessaging
依赖:
dependencies:
flutter:
sdk: flutter
infobip_mobilemessaging: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来获取依赖。
接下来,你需要按照Infobip的文档配置你的项目,包括在iOS和Android项目中添加必要的配置和权限。这里假设你已经完成了这些配置。
初始化Mobile Messaging SDK
在你的Flutter应用的入口文件(通常是main.dart
)中,初始化infobip_mobilemessaging
插件:
import 'package:flutter/material.dart';
import 'package:infobip_mobilemessaging/infobip_mobilemessaging.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Mobile Messaging SDK
MobileMessaging.instance.init(
projectId: '你的项目ID',
authKey: '你的认证密钥',
region: Region.eu, // 根据你的区域选择适当的Region,例如eu, us等
).then((_) {
runApp(MyApp());
}).catchError((error) {
// 处理初始化错误
print('Initialization error: $error');
});
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Infobip Mobile Messaging Demo'),
),
body: Center(
child: Text('Check the console for incoming messages'),
),
);
}
@override
void initState() {
super.initState();
// 监听收到的消息
MobileMessaging.instance.onMessageReceived.listen((message) {
print('Received message: ${message.toJson()}');
});
// 监听推送通知点击事件
MobileMessaging.instance.onPushOpened.listen((pushOpenedData) {
print('Push notification opened: ${pushOpenedData.toJson()}');
});
}
}
发送消息(示例代码,通常在服务器端完成)
虽然发送消息通常是在服务器端完成的,但这里提供一个发送消息的API调用的示例,以帮助你理解整个流程。以下是一个使用Infobip API发送短信的伪代码示例(注意,这需要在服务器端实现,而不是在Flutter客户端):
import requests
url = "https://api.infobip.com/sms/1/text/single"
headers = {
"Authorization": "Basic Your-Base64-Encoded-Auth-String",
"Content-Type": "application/json"
}
payload = {
"from": "YourSenderID",
"to": ["+385911223344"],
"text": "Hello, this is a test message!"
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
请注意,上述Python代码仅用于说明目的,并且需要在服务器端环境中运行,同时需要适当的API密钥和配置。
注意事项
- 权限处理:确保在Android和iOS项目中正确配置了必要的权限,例如网络权限、接收推送通知的权限等。
- 错误处理:在实际应用中,应该添加更多的错误处理逻辑,以确保应用的健壮性。
- 安全性:不要在客户端代码中硬编码敏感信息,如API密钥等。这些信息应该在服务器端安全地存储和处理。
希望这个示例代码能帮助你在Flutter应用中集成和使用infobip_mobilemessaging
插件。如果你有任何进一步的问题,欢迎继续提问!