android调用flutter弹窗,弹窗 SDK(Flutter)

flutter 插件获取安装

在flutter项目中,根据dart pub 安装文档进行插件安装

插件的初始化

由于插件需要获取应用的生命周期,为了数据的准确性,SDK 需要单独在原生项目中进行初始化;同时更好的兼容“flutter + native”开发模式。本文档给出的所有代码示例都是objc 或 java的形式,暂时没有swift + kotlin的代码。

iOS 的初始化

先集成iOS 埋点SDK,见文档​

再集成iOS GTouch SDK见文档​

在原生项目应用中首次需要的地方导入头文件

#import

#import

进行SDK的初始化(一般在AppDelegate中的application:didFinishLaunchingWithOptions:方法中),仅需要初始化一次即可

[Growing startWithAccountId:@"GrowingIO官网申请的项目ID"];

[GrowingTouch start];

[GrowingTouch setDebugEnable:YES];

[GrowingTouch setEventPopupEnable:YES];

特别需要注意的是:请确保[GrowingTouch start];在[Growing startWithAccountId:@"GrowingIO官网申请的项目ID"]; 之后调用

Android 的初始化

先集成Android Flutter 埋点SDK,见文档。

再集成Android GTouch SDK,见文档​

在原生项目应用中首次需要的地方导入头文件

import com.growingio.android.sdk.collection.GrowingIO;

import com.growingio.android.sdk.gtouch.GrowingTouch;

import com.growingio.android.sdk.gtouch.config.GTouchConfig;

进行SDK的初始化(一般在MyFlutterApplication中的onCreate方法中),仅需要初始化一次即可

GrowingIO.startWithConfiguration(this, new Configuration()

.setTestMode(false)

.setDebugMode(false));

GrowingTouch.startWithConfig(this, new GTouchConfig()

.setEventPopupShowTimeout(5000)

.setEventPopupEnable(false)

.setUploadExceptionEnable(false)

.setDebugEnable(BuildConfig.DEBUG));

特别需要注意的是:请确保GrowingTouch.startWithConfig在GrowingIO.startWithConfiguration之后调用

package文件引用

import 'package:flutter_growingio_touch/flutter_growingio_touch.dart';

flutter API 使用说明

1 设置弹窗开关 1.1GrowingTouch.eventPopupEnable = enable

设置弹窗的开关,可以在初始化的时候选择关闭弹窗功能,这样弹窗SDK就不会在APP的logo页和闪屏页显示弹窗,然后在APP的内容页打开时再打开弹窗开关。

1.2 参数说明

参数名参数类型必填默认值说明

enablebool是true开关触达弹窗功能,true开启,false关闭

1.3 代码示例

GrowingTouch.eventPopupEnable = true;

2 获取弹窗开关状态

2.1GrowingTouch.eventPopupEnable;获取弹窗开关状态

2.2 代码示例

bool state = await GrowingTouch.eventPopupEnable;

3 打开弹窗并触发“打开App”事件

3.1GrowingTouch.enableEventPopupAndGenerateAppOpenEvent();

打开弹窗并触发"打开APP"事件。

应用场景时:担心弹窗SDK在APP启动的Logo页或者闪屏页显示弹窗,这时可以选择在初始化时关闭弹窗开关,然后在APP的内容页打开时再打开弹窗开关。

如果只是单纯调用GrowingTouch.setEventPopupEnable(true);只会打开弹窗开关,并不会触发"打开APP"的弹窗事件。调用该API则会打开弹窗的同时触发一个"打开APP"的弹窗事件。("打开APP" 对应的是触发时机选择“打开App时”)。

3.2 代码示例

bool state = await GrowingTouch.eventPopupEnable;

if (!state) {

GrowingTouch.enableEventPopupAndGenerateAppOpenEvent();

}

4 弹窗是否正在显示

4.1GrowingTouch.isEventPopupShowing()弹窗是否正在显示

4.2 代码示例

bool showing = await GrowingTouch.isEventPopupShowing();

5 弹窗事件的监听

5.1GrowingTouch.setEventPopupListener(listener)

通过监听获取事件和参数,您可以根据事件和参数以及您的业务场景执行相关的交互。注意,您必须在flutter代码里注册过弹窗监听我们再会在flutter界面控制弹窗。

5.2 代码示例

GrowingTouch.setEventPopupListener({

/**

* 弹窗显示成功

*

* @param eventId 埋点事件名称

* @param eventType 事件类型,system(弹窗SDK内置的事件)或custom(用户自定义的埋点事件)

*/

onLoadSuccess: (eventId, eventType) => {

console.log('FlutterApp onLoadSuccess: eventId = ' + eventId + ', eventType = ' + eventType);

},

/**

* 弹窗加载失败

*

* @param eventId 埋点事件名称

* @param eventType 事件类型,system(弹窗SDK内置的事件)或custom(用户自定义的埋点事件)

* @param errorCode 错误码

* @param description 错误描述

*/

onLoadFailed: (eventId, eventType, errorCode, description) => {

console.log('FlutterApp onLoadFailed: eventId = ' + eventId + ', eventType = ' + eventType + ', errorCode = ' + errorCode + ', description = ' + description);

},

/**

* 用户点击了弹窗的有效内容。弹窗SDK现在只提供跳转APP内部界面和H5界面两种处理方式。

* 您可以在这里接管跳转事件,处理需要跳转的url。您也可以自定义Url协议,实现更多业务和交互功能。

*

* @param eventId 埋点事件名称

* @param eventType 事件类型,system(弹窗SDK内置的事件)或custom(用户自定义的埋点事件)

* @param openUrl 跳转的url

*/

onClicked: (eventId, eventType, openUrl) => {

console.log('FlutterApp onClicked: eventId = ' + eventId + ', eventType = ' + eventType + ', openUrl = ' + openUrl);

},

/**

* 用户关闭了弹窗

*

* @param eventId 埋点事件名称

* @param eventType 事件类型,system(弹窗SDK内置的事件)或custom(用户自定义的埋点事件)

*/

onCancel: (eventId, eventType) => {

console.log('FlutterApp onCancel: eventId = ' + eventId + ', eventType = ' + eventType);

},

/**

* 弹窗显示超时

*

* @param eventId 埋点事件名称

* @param eventType 事件类型,system(弹窗SDK内置的事件)或custom(用户自定义的埋点事件)

*/

onTimeout: (eventId, eventType) => {

console.log('FlutterApp onTimeout: eventId = ' + eventId + ', eventType = ' + eventType);

},

});

注意事项

iOS 弹窗的点击跳转依赖原生的导航控制器,因此若需要点击弹窗事件进行跳转,可通过如下2种方式实现在弹窗事件监听者的方法中接管跳转事件,在flutter中实现页面跳转

在原生项目中添加导航控制器,确保弹窗点击跳转时能获取到原生的导航控制器

其他具体使用请参考此仓库中的demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值