Flutter消息收件箱管理插件moengage_inbox_2的使用

注意 #

此插件已过时且未维护。为了更大程度上帮助Flutter开发者社区,我不得不介入并将其升级以支持Flutter 3.0,并进行了一些其他维护工作。

如果MoEngage的任何人正在阅读这篇帖子,请告诉我是否需要在官方插件中贡献。

感谢。

MoEngage 收件箱插件 #

这是为MoEngage平台提供的收件箱插件。

SDK 安装 #

要在您的应用程序中添加MoEngage Flutter SDK,请编辑您的应用程序的pubspec.yaml文件,并添加以下依赖项:

下载

dependencies:
  moengage_inbox: $latestSdkVersion

$latestSdkVersion替换为最新的SDK版本。

运行flutter packages get来安装SDK。

注意:此插件依赖于moengage_flutter插件。确保您已经安装了moengage_flutter插件。参阅文档。

Android 安装 #

MavenBadge

一旦安装了Flutter插件,还需要将MoEngage的原生Android SDK依赖项添加到您的应用程序的Android项目中。 导航到android --> app --> build.gradle。在dependencies块中添加MoEngage Android SDK的依赖项:

dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])
  implementation("com.moengage:addon-inbox:$sdkVersion")
}

其中$sdkVersion应替换为最新的MoEngage SDK版本。

参阅文档获取完整的集成指南。

```

example/README.md

注意: 不要删除此文件。 #

此文件用于解决以下错误信息: The plugin "moengage_inbox" requires your app to be migrated to the Android embedding v2. Follow the steps on https://flutter.dev/go/android-project-migration and re-run this command.

看起来插件包含一个/example文件夹的概念已经被硬编码到Flutter工具中,当找不到该文件夹时会抛出错误。创建一个空的'/example'文件夹是一个临时解决方案。

[Flutter问题链接] (https://github.com/flutter/flutter/issues/66561)

```

示例代码

import 'package:flutter/material.dart';
import 'package:moengage_inbox/moengage_inbox.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<dynamic> _messages = [];

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化MoEngage收件箱插件
    MoEngageInbox.init('YOUR_APP_ID');
    // 获取收件箱中的所有消息
    MoEngageInbox.getInboxMessages().then((value) {
      setState(() {
        _messages = value;
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('MoEngage收件箱'),
        ),
        body: ListView.builder(
          itemCount: _messages.length,
          itemBuilder: (context, index) {
            return ListTile(
              title: Text(_messages[index]['title']),
              subtitle: Text(_messages[index]['message']),
            );
          },
        ),
      ),
    );
  }
}

更多关于Flutter消息收件箱管理插件moengage_inbox_2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter消息收件箱管理插件moengage_inbox_2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


moengage_inbox_2 是 MoEngage 提供的一个 Flutter 插件,用于在应用中集成消息收件箱功能。通过该插件,开发者可以轻松地在应用中展示用户收到的消息,并提供相关的管理功能。

以下是使用 moengage_inbox_2 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 moengage_inbox_2 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  moengage_inbox_2: ^1.0.0  # 请根据最新版本号进行更新

然后运行 flutter pub get 来获取依赖。

2. 初始化 MoEngage

在使用 moengage_inbox_2 之前,需要先初始化 MoEngage SDK。通常在 main.dart 文件中进行初始化:

import 'package:moengage_flutter/moengage_flutter.dart';

void main() {
  MoEngageFlutter.initialize(
    appId: 'YOUR_APP_ID',  // 替换为你的 MoEngage App ID
    dataCenter: DataCenter.data_center_1,  // 选择合适的数据中心
  );
  runApp(MyApp());
}

3. 集成收件箱功能

在需要使用消息收件箱的页面中,使用 MoEngageInbox 来获取和展示消息。

import 'package:flutter/material.dart';
import 'package:moengage_inbox_2/moengage_inbox_2.dart';

class InboxScreen extends StatefulWidget {
  @override
  _InboxScreenState createState() => _InboxScreenState();
}

class _InboxScreenState extends State<InboxScreen> {
  List<MoEngageInboxMessage> _messages = [];

  @override
  void initState() {
    super.initState();
    _fetchMessages();
  }

  Future<void> _fetchMessages() async {
    try {
      List<MoEngageInboxMessage> messages = await MoEngageInbox.getMessages();
      setState(() {
        _messages = messages;
      });
    } catch (e) {
      print('Error fetching messages: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Message Inbox'),
      ),
      body: ListView.builder(
        itemCount: _messages.length,
        itemBuilder: (context, index) {
          MoEngageInboxMessage message = _messages[index];
          return ListTile(
            title: Text(message.title),
            subtitle: Text(message.message),
            onTap: () {
              // 处理消息点击事件
              MoEngageInbox.trackMessageClick(message);
            },
          );
        },
      ),
    );
  }
}

4. 处理消息点击事件

当用户点击某个消息时,可以通过 MoEngageInbox.trackMessageClick(message) 来跟踪消息点击事件。这有助于 MoEngage 分析用户与消息的互动情况。

5. 刷新收件箱

如果需要手动刷新收件箱,可以再次调用 MoEngageInbox.getMessages() 方法。

Future<void> _refreshMessages() async {
  try {
    List<MoEngageInboxMessage> messages = await MoEngageInbox.getMessages();
    setState(() {
      _messages = messages;
    });
  } catch (e) {
    print('Error refreshing messages: $e');
  }
}

6. 删除消息

如果需要删除某条消息,可以使用 MoEngageInbox.deleteMessage(message) 方法。

Future<void> _deleteMessage(MoEngageInboxMessage message) async {
  try {
    await MoEngageInbox.deleteMessage(message);
    _fetchMessages();  // 删除后刷新收件箱
  } catch (e) {
    print('Error deleting message: $e');
  }
}

7. 标记消息为已读

可以通过 MoEngageInbox.markMessageAsClicked(message) 方法来标记消息为已读。

Future<void> _markAsRead(MoEngageInboxMessage message) async {
  try {
    await MoEngageInbox.markMessageAsClicked(message);
  } catch (e) {
    print('Error marking message as read: $e');
  }
}
回到顶部