flutter 接入talkingdata/flutter 链接本地库

290 阅读3分钟

github.com/TalkingData…

doc.talkingdata.com/posts/1031

TalkingData Flutter 平台 SDK 由封装层和Native SDK两部分构成,目前Github上提供了封装层代码,需要从 TalkingData官网

 下载最新版的 Android 和 iOS 平台 Native SDK,组合使用。

1.下载android NativeSDk

可以下载源生的sdk,有googleplay版

0B33E4B9-EBEA-478D-98DE-1E1B329B211F.png

也可以下载flutter版本的 7B65BB1D-7123-4329-8276-E25B13E1D076.png

431309DA-B964-43F1-9B0B-78ABFAC8B948.png

目前采用android版sdk(googlePlay专版),因为之前下的sdk被google拒过

GooglePlay_TalkingDataSDK_Android_V5.0.12

1.放在android/app/libs目录下,没有就创建一个.

2.可以选择把架包放在桥接层工程的目录里,设置好引入方式就可以了

指定原生工程依赖的架包目录. 0079A28B-B5BB-4DCA-9521-50D354914913.png

<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 (桥接文件)文件到项目中

607D0568-F9CE-41F3-85C9-FB7647BE0B92.png

github.com/TalkingData…

将 Github的插件文件夹放到 您的项目的同一文件目录下。

FB3451DA-F007-4677-8105-A19F52A5836A.png

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 问题总结:

  1. 使用翻墙的时候,要注意梯子的订阅规则,suda是直接 reject 所有 TalkingData 的请求,AF也有这个问题。

  2. 由于 Android Release 模式没有配置 proguard-rules.pro 文件,而 build.gradle - buildTypes - release - minifyEnabled 默认值为 true。因为 jar 包的混淆,所以 release 包没有相应的 TD 文件。

ios

1.引入桥接层

2.引入.a架包文件

3.设置桥接层里的.a架包文件

C4F3ADB1-8952-4745-B51D-B1944796F425.png

改成在线获取

1.git上fork代码

2.添加.a 和.jar架包文件

5E585742-8946-48F2-9FB0-010B32AB60EC.png

80380392-A0CE-49C1-83CB-9CA2444E5E92.png

3.iOS部分修改.h文件. .a文件的配套文件,因为移除了一部分服务,不可用.

TalkingDataSDK_Flutter / talkingdata_sdk_plugin / ios / Classes /TalkingDataSDK.h

4.pubspec.yaml

4025DEEE-AEB4-456D-A5A4-9008050B6500.png

talkingdata_sdk_plugin:   git:     url: github.com/FarNorth11/…   

    path: talkingdata_sdk_plugin     ref: mastertalkingdata_sdk_plugin: