Flutter消息通信插件infobip_mobilemessaging的使用

发布于 1周前 作者 sinazl 来自 Flutter

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 插件。

  1. 确保在 Infobip 平台上设置应用(如果尚未设置)。
  2. pubspec.yaml 文件中添加 infobip_mobilemessaging 插件依赖项:
dependencies:
  infobip_mobilemessaging: '^6.1.0'
  1. 运行 flutter pub get 安装插件。
  2. 配置平台:
    • iOS: 更新 ios/Podfile 以设置 iOS 部署目标平台 12.0,如果需要的话,在 Terminal 中执行 cd ios &amp;&amp; pod update。 导入 MobileMessaging 和在 <ProjectName>/ios/Runner/AppDelegate.m 中添加 [MobileMessagingPluginApplicationDelegate install];(这要求 OS 回调如 didRegisterForRemoteNotifications 被原生 MobileMessaging SDK 捕获):
@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()
        ...
    }
}
...
  1. 配置您的项目以支持推送通知,详情请参阅 iOS 整合快速启动指南中的第 2 步。

  2. 将 Notification Service Extension 集成到您的应用中,以便获得:

    • 更准确的消息处理和交付统计
    • 锁屏上的丰富通知支持
  3. Android

    • 添加 com.google.gms:google-servicesandroid/build.gradle 文件中。
    • android/app/build.gradle 文件末尾添加 apply plugin: 'com.google.gms.google-services' 以应用 Google Services Gradle 插件。
    • 设置 Firebase 为您的项目,并将 Firebase 配置文件(google-services.json)添加到 app 目录下。通常需要添加到 android/app 目录中。
  4. 如果您想以不同的方式提供 Firebase 配置,请参阅 Applying Firebase configuration in MobileMessaging Flutter plugin。

  5. 从 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

1 回复

更多关于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密钥和配置。

注意事项

  1. 权限处理:确保在Android和iOS项目中正确配置了必要的权限,例如网络权限、接收推送通知的权限等。
  2. 错误处理:在实际应用中,应该添加更多的错误处理逻辑,以确保应用的健壮性。
  3. 安全性:不要在客户端代码中硬编码敏感信息,如API密钥等。这些信息应该在服务器端安全地存储和处理。

希望这个示例代码能帮助你在Flutter应用中集成和使用infobip_mobilemessaging插件。如果你有任何进一步的问题,欢迎继续提问!

回到顶部