Flutter快速到达功能插件rapidoreach的使用

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

Flutter快速到达功能插件rapidoreach的使用

初始化插件

该RapidoReach插件必须使用RapidoReach API密钥进行初始化。您可以在创建新应用时从RapidoReach仪表板获取API密钥。

使用方法

初始化RapidoReach

首先,您需要通过init调用初始化RapidoReach实例。

// 导入RapidoReach包
import 'package:rapidoreach/RapidoReach.dart';

RapidoReach.instance.init(apiKey: 'YOUR_API_TOKEN', userId: 'YOUR_USER_ID')

奖励中心

接下来,实现显示奖励中心的逻辑。当您准备将用户发送到奖励中心以完成调查并换取虚拟货币时,调用show方法。我们自动根据您在应用中指定的汇率将用户获得的金额转换为您的虚拟货币。货币总是有利于应用程序用户,以提高满意度和参与度。

RapidoReach.instance.show(),

奖励回调

为了确保安全性和隐私性,我们建议使用服务器端回调通知您所有奖励。在您的应用开发人员仪表板中添加服务器回调,以便我们在用户完成任务时通知您。注意,初始化调用中传递的用户ID将在服务器端回调中返回给您。更多关于设置回调的信息可以在开发人员仪表盘中找到。

客户端奖励回调

如果您没有服务器来处理服务器端回调,我们还为您提供了一种监听客户端奖励通知的能力。

RapidoReach.instance.setOnRewardListener(onRapidoReachReward);

实现回调:

void onRapidoReachReward(int quantity) {
    print('TR: $quantity');
}

奖励中心事件

您可以选择监听setRewardCenterOpenedsetRewardCenterClosed事件,这些事件会在您的奖励中心模态窗口打开和关闭时触发。

添加事件监听器:

RapidoReach.instance
        .setRewardCenterClosed(onRewardCenterClosed);
RapidoReach.instance
        .setRewardCenterOpened(onRewardCenterOpened);

实现事件回调:

void onRewardCenterOpened() {
  print('onRewardCenterOpened called!');
}

void onRewardCenterClosed() {
  print('onRewardCenterClosed called!');
}

调查可用回调

如果您希望主动了解何时有调查可供用户参与,可以添加此事件监听器。

首先,导入原生模块事件发射器:

RapidoReach.instance
        .setSurveyAvaiableListener(onRapidoReachSurveyAvailable);

实现回调:

void onRapidoReachSurveyAvailable(int survey) {
    print('TR: $survey');
}

自定义SDK选项

我们可以使用几种方法来自定义导航栏以符合您的应用风格。

RapidoReach.instance.setNavBarText(text: 'Rapido Demo App');
RapidoReach.instance.setNavBarColor(color: '#211548');   
RapidoReach.instance.setNavBarTextColor(text_color: '#FFFFFF');

调试

如果遇到多dex问题,可以按以下步骤启用多dex。

启用多dex。 打开[项目文件夹]/app/build.gradle,并添加以下行。

defaultConfig {
    ...

    multiDexEnabled true
}

以及(可选或如需)

dependencies {
    ...

    implementation 'com.android.support:multidex:1.0.3'
}

或者如果您遇到与空安全相关的错误,可以尝试以下方法:

flutter run --no-sound-null-safety

示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用RapidoReach插件。

import 'package:flutter/material.dart';
import 'package:rapidoreach/RapidoReach.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    RapidoReach.instance
        .init(apiToken: 'e8ad9ecc9dd75f140cd662565da0954e', userId: '22992929');
    RapidoReach.instance.setOnRewardListener(onRapidoReachReward);
    RapidoReach.instance.setRewardCenterClosed(onRapidoReachRewardCenterClosed);
    RapidoReach.instance.setRewardCenterOpened(onRapidoReachRewardCenterOpened);
    RapidoReach.instance
        .setSurveyAvaiableListener(onRapidoReachSurveyAvailable);
    RapidoReach.instance.setNavBarText(text: 'RapidoReach');
    RapidoReach.instance.setNavBarColor(color: '#211548');
    RapidoReach.instance.setNavBarTextColor(textColor: '#FFFFFF');
    super.initState();
  }

  void onRapidoReachReward(int? quantity) {
    debugPrint('ROR: $quantity');
  }

  void onRapidoReachSurveyAvailable(int? survey) {
    debugPrint('ROR: $survey');
  }

  void onRapidoReachRewardCenterClosed() {
    debugPrint('ROR: closed');
  }

  void onRapidoReachRewardCenterOpened() {
    debugPrint('ROR: opened');
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
            child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              child: const Text("Launch RapidoReach"),
              onPressed: () => RapidoReach.instance.show(),
            ),
            ElevatedButton(
              child: const Text("Launch RapidoReach Placement"),
              onPressed: () => RapidoReach.instance.show(),
            )
          ],
        )),
      ),
    );
  }
}

更多关于Flutter快速到达功能插件rapidoreach的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter快速到达功能插件rapidoreach的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用Flutter插件rapidoreach来实现快速到达功能的示例代码。请注意,实际使用时,你需要确保已经正确安装并配置了rapidoreach插件,并且该插件的API和功能与下面的示例代码兼容。

首先,确保在pubspec.yaml文件中添加rapidoreach依赖项:

dependencies:
  flutter:
    sdk: flutter
  rapidoreach: ^最新版本号  # 替换为实际可用的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中,你可以按照以下步骤使用rapidoreach插件:

  1. 导入插件
import 'package:rapidoreach/rapidoreach.dart';
  1. 初始化插件

在你的主Activity或Widget的初始化部分(例如initState),初始化Rapidoreach插件。这通常涉及到设置API密钥和其他必要的配置。

class _MyAppState extends State<MyApp> {
  Rapidoreach? rapidoreach;

  @override
  void initState() {
    super.initState();
    // 初始化Rapidoreach插件
    rapidoreach = Rapidoreach.instance;
    rapidoreach!.initialize(apiKey: "你的API密钥");

    // 监听插件状态变化(可选)
    rapidoreach!.onStatusChanged!.listen((status) {
      print("Rapidoreach status changed: $status");
    });

    // 监听到达事件(可选)
    rapidoreach!.onArrival!.listen((arrivalData) {
      print("Arrival event received: ${arrivalData.toMap()}");
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // 你的应用逻辑
    );
  }
}
  1. 启动快速到达功能

在你的应用中,当需要启动快速到达功能时,可以调用rapidoreachstartNavigation方法。例如,当用户点击一个按钮时:

// 假设你有一个按钮来启动导航
FlatButton(
  child: Text("Start Rapidoreach Navigation"),
  onPressed: () async {
    // 检查插件是否已初始化
    if (rapidoreach != null && rapidoreach!.isInitialized) {
      try {
        // 启动导航到指定位置(替换为实际的位置数据)
        await rapidoreach!.startNavigation(
          latitude: 37.7749,
          longitude: -122.4194,
          // 其他可选参数,如标题、描述等
        );
      } catch (e) {
        print("Failed to start navigation: $e");
      }
    } else {
      print("Rapidoreach is not initialized.");
    }
  },
)
  1. 处理到达事件

如前面所示,你已经在initState中设置了onArrival监听器,该监听器会在用户到达目的地时被触发。你可以根据到达事件的数据执行相应的操作,例如显示一个提示消息或更新UI。

请注意,上述代码是一个基本的示例,实际使用时可能需要根据你的具体需求进行调整,例如处理错误、优化用户体验等。此外,确保你遵循rapidoreach插件的文档和API指南,以充分利用其功能。

回到顶部