doc.talkingdata.com/posts/1031
TalkingData Flutter 平台 SDK 由封装层和Native SDK两部分构成,目前Github上提供了封装层代码,需要从 TalkingData官网
下载最新版的 Android 和 iOS 平台 Native SDK,组合使用。
1.下载android NativeSDk
可以下载源生的sdk,有googleplay版
也可以下载flutter版本的
目前采用android版sdk(googlePlay专版),因为之前下的sdk被google拒过
GooglePlay_TalkingDataSDK_Android_V5.0.12
1.放在android/app/libs目录下,没有就创建一个.
2.可以选择把架包放在桥接层工程的目录里,设置好引入方式就可以了
指定原生工程依赖的架包目录.
<uses-permission android:name="android.permission.INTERNET" /> <!-- 允许程序联网和发送统计数据的权限。--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 允许应用检测网络连接状态,在网络异常状态下避免数据发送,节省流量和电量。--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取设备的MAC地址,同样用来标识唯一用户。--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 用于保存设备信息,以及记录日志。--> <uses-permission android:name="android.permission.GET_TASKS" /> <!-- (建议配置) 获取当前应用是否在显示应用,可以更精准的统计用户活跃--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 允许应用以只读的方式访问手机设备的信息,通过获取的信息来唯一标识用户。--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- (可选权限) 可通过GPS获取设备的位置信息,用来修正用户的地域分布数据,使报表数据更准确。--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- (可选权限) 用来获取该应用被使用的粗略位置信息。-->
3.混淆设置
| 如果开发者的应用需要混淆,请在Android Proguard 混淆配置文件中增加以下规则,以避免TalkingData SDK 不可用。-dontwarn com.tendcloud.tenddata.\*\* -keep class com.tendcloud.\*\* {\*;} -keep public class com.tendcloud.\*\* { public protected \*;} |
4.android 源生层引入
android/app/src/main/kotlin/com/example/xxxx
| package com.example.pokalive_flutterimport io.flutter.embedding.android.FlutterActivityimport android.app.Application;class MainApplication: Application() { override fun onCreate() {super.onCreate()com.talkingdata.talkingdata_sdk_plugin.TalkingDataSDKPlugin.setContext(this)}} |
|---|
5.桥接层引入
拷贝git项目中的talkingdata_sdk_plugin.dart (桥接文件)文件到项目中
将 Github的插件文件夹放到 您的项目的同一文件目录下。
dependencies:
flutter:
sdk: flutter
talkingdata_sdk_plugin:
path: ./talkingdata_sdk_plugin
dev_dependencies:
flutter_test:
sdk: flutter
talkingdata_sdk_plugin:
path: ../talkingdata_sdk_plugin
执行
| flutter packages get |
|---|
6使用
| import 'package:talkingdata_sdk_plugin/talkingdata_sdk_plugin.dart';await TalkingDataSDK.init( appID: Config.testUrl ? "4B1EF960925F4E72B3ACC5D643B1B402" : "616B97E207D3445B9FF69AF73BD69E2B", channelID: "tikichataso", custom: "custom");TalkingDataSDK.onEvent(eventId: eventName, params: tmpParams); |
|---|
TalkingData 问题总结:
-
使用翻墙的时候,要注意梯子的订阅规则,suda是直接 reject 所有 TalkingData 的请求,AF也有这个问题。
-
由于 Android Release 模式没有配置 proguard-rules.pro 文件,而 build.gradle - buildTypes - release - minifyEnabled 默认值为 true。因为 jar 包的混淆,所以 release 包没有相应的 TD 文件。
ios
1.引入桥接层
2.引入.a架包文件
3.设置桥接层里的.a架包文件
改成在线获取
1.git上fork代码
2.添加.a 和.jar架包文件
3.iOS部分修改.h文件. .a文件的配套文件,因为移除了一部分服务,不可用.
TalkingDataSDK_Flutter / talkingdata_sdk_plugin / ios / Classes /TalkingDataSDK.h
4.pubspec.yaml
talkingdata_sdk_plugin: git: url: github.com/FarNorth11/…
path: talkingdata_sdk_plugin ref: mastertalkingdata_sdk_plugin: