OpenInstall Flutter插件集成与配置完整指南

Viewed 0

openinstall插件封装了openinstall平台原生SDK,集成了渠道统计、携带参数安装、快速安装与一键拉起功能,目前支持H5渠道、广告平台渠道以及Apple Search Ads(ASA)渠道。使用openinstall可实现多种场景,如通过渠道统计跟踪应用来源、通过动态参数实现个性化安装等。

在项目的pubspec.yaml文件中添加以下依赖:

dependencies:
  openinstall_flutter_plugin: ^2.5.2

然后使用命令行运行flutter pub get或通过开发工具执行此命令以获取插件。在Dart代码中导入插件:

import 'package:openinstall_flutter_plugin/openinstall_flutter_plugin.dart';

接下来,前往openinstall控制台创建应用,获取应用分配的appkeyscheme,以及iOS的关联域名(Associated Domains)。

Android平台配置

配置appkey

/android/app/build.gradledefaultConfig部分添加manifestPlaceholders设置appkey:

android: {
  ....
  defaultConfig {
    ...
    manifestPlaceholders += [
        OPENINSTALL_APPKEY : "openinstall为应用分配的appkey",
    ]
  }
}

配置scheme

修改/android/app/src/main/AndroidManifest.xml文件,在跳转Activity标签内添加intent-filter:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="openinstall为应用分配的scheme"/>
</intent-filter>

如果跳转与启动页面是同一Activity,则需确保配置正确。

iOS平台配置

配置appkey

在Flutter工程下的ios/Runner/Info.plist文件中配置appkey:

<key>com.openinstall.APP_KEY</key>
<string>openinstall分配给应用的appkey</string>

一键拉起配置

首先,在苹果开发者网站为AppID开启Associated Domains服务,并更新相应的mobileprovision证书。然后在openinstall控制台获取关联域名,并在ios/Runner目录下创建Runner.entitlements文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.associated-domains</key>
    <array>
        <string>applinks:xxxxxx.openinstall.io</string>
    </array>
</dict>
</plist>

在Xcode中也可快速添加Associated Domains。注意:插件版本>=1.3.1后,iOS通用链接代码已在插件内部完成。如果拉起无法获取参数,可能是因为方法被其它插件覆盖,可参考OpeninstallFlutterPlugin.m文件调整。

scheme配置

在Xcode工程“TARGETS -> Info -> URL Types”中添加应用对应的scheme。插件版本>=1.3.1后,scheme处理代码也已在插件内部完成,同样需注意其它插件覆盖问题。

API使用

初始化时,传入拉起回调以获取web端传来的动态参数:

Future wakeupHandler(Map<String, Object> data) async {
    setState(() {
        debugLog = "wakeup result : channel=" +
            data['channelCode'] +
            ", data=" +
            data['bindData'];
    });
}
_openinstallFlutterPlugin.init(wakeupHandler);

调用install方法获取安装参数(如邀请码等):

Future installHandler(Map<String, Object> data) async {
    setState(() {
        debugLog = "install result : channel=" +
            data['channelCode'] +
            ", data=" +
            data['bindData'] +
            ", shouldRetry" +
            data['shouldRetry'];
    });
}
_openinstallFlutterPlugin.install(installHandler);

注册统计用于渠道质量评估,在用户完成APP注册后调用:

_openinstallFlutterPlugin.reportRegister();

效果点统计用于特殊业务使用效果跟踪,调用时使用后台创建的“效果点ID”:

_openinstallFlutterPlugin.reportEffectPoint("effect_test", 1);

效果点明细统计可附加额外参数,需要原生iOS SDK >=2.6.0:

Map<String, String> extraMap = {
    "key1": "value1",
    "key2": "value2"
};
_openinstallFlutterPlugin.reportEffectPoint("effect_detail", 1, extraMap);

裂变分享上报用于统计分享行为:

_openinstallFlutterPlugin.reportShare("123456", "WechatSession")
    .then((data) => print("reportShare : " + data.toString()));

集成完毕后,导出iOS/Android安装包上传到openinstall控制台,平台将检查集成配置,并可进行在线模拟测试以验证完整流程。

Android平台广告配置

针对广告平台接入,需在调用init前配置:

var adConfig = new Map();
adConfig["adEnabled"] = true;
_openinstallFlutterPlugin.configAndroid(adConfig);

注意:configAndroid接口已取代旧方法。可选参数包括androidId、serialNumber、adEnabled、macDisabled、imeiDisabled、gaid、oaid、imei和mac,用于精细控制。为获取设备唯一标识码(IMEI),需在AndroidManifest.xml中添加权限声明:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

权限申请成功后,无论用户是否同意,都应调用初始化。例如使用permission_handler处理权限后初始化:

if (await Permission.phone.request().isGranted) {
  // 获取到了权限
}
_openinstallFlutterPlugin.init(wakeupHandler);

iOS平台广告和ASA配置

针对广告平台和ASA渠道,在调用init前配置:

var adConfig = new Map();
adConfig["adEnable"] = true; // 开启广告平台渠道
adConfig["ASAEnable"] = true; // 开启苹果ASA功能
// adConfig["idfaStr"] = ""; // 可选,传入idfa字符串
// adConfig["ASADebug"] = true; // 可选,ASA测试debug模式,正式环境请关闭
_openinstallFlutterPlugin.configIos(adConfig);

参数说明:adEnable为true时开启广告统计,若未配置idfaStr或为空,插件将自动获取隐私权限和idfa字符串;ASAEnable为true时开启ASA功能;ASADebug用于测试模式。同时,需在ios/Runner/Info.plist中配置隐私权限描述:

<key>NSUserTrackingUsageDescription</key>
<string>为了您可以精准获取到优质推荐内容,需要您允许使用该权限</string>

注意:广告平台统计中,如权限弹窗无法正常弹出,建议将configIosinit方法放在应用生命周期“进入前台resumed”时调用。2021年iOS14.5后苹果启用了idfa新隐私政策,详情可参考相关文档。ASA渠道使用请参阅开放安装的ASA指南文档。

0 Answers