Android和iOS接入Appsflyer SDK
Android接入
1.添加repositories
// ...
repositories {// ...mavenCentral()
}
// ...
2.添加dependencies
dependencies {// ...// Get the latest version from https://mvnrepository.com/artifact/com.appsflyer/af-android-sdkimplementation 'com.appsflyer:af-android-sdk:6.9.0'
}
3.AndroidManifest.xml中添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
检查AD_ID权限2022 年初,Google 宣布改变 Google Play 服务的行为和获取 Android 广告 ID。针对 Android 13 (API 33) 及更高版本的应用程序必须在其文件中声明 Google Play 服务正常权限才能访问设备的广告 ID。
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
4.AppsFlyer SDK ProGuard 规则
-keep class com.appsflyer.** { *; }
5.接入代码
package org.cocos2dx.plugin;import android.content.Context;
import android.util.Log;import com.appsflyer.AFInAppEventParameterName;
import com.appsflyer.AFInAppEventType;
import com.appsflyer.AppsFlyerLib;
import com.appsflyer.attribution.AppsFlyerRequestListener;import java.util.HashMap;
import java.util.Map;public class AppsflyerWrapper {private static AppsflyerWrapper _instance = null;public static AppsflyerWrapper getInstance() {if (_instance == null) {_instance = new AppsflyerWrapper();}return _instance;}private final String AF_DEV_KEY = "your ap_dev_key";private final String LOG_TAG = "AppsflyerWrapper";private Context sContext;public void initAppsflyer(Context context) {Log.d(LOG_TAG, "initAppsflyer");sContext = context;AppsFlyerLib.getInstance().init(AF_DEV_KEY, null, context);AppsFlyerLib.getInstance().start(context, AF_DEV_KEY, new AppsFlyerRequestListener() {@Overridepublic void onSuccess() {Log.d(LOG_TAG, "Launch sent successfully, got 200 response code from server");}@Overridepublic void onError(int i, String s) {Log.d(LOG_TAG, "Launch failed to be sent:\n" +"Error code: " + i + "\n"+ "Error description: " + s);}});}// 发送应用内事件// 已定义的事件类型在 AFInAppEventType 中可查看public void logEvent() {Map<String, Object> eventValues = new HashMap<String, Object>();//eventValues.put(AFInAppEventParameterName.PRICE, 1234.56);//eventValues.put(AFInAppEventParameterName.CONTENT_ID,"1234567");AppsFlyerLib.getInstance().logEvent(sContext,AFInAppEventType.LOGIN, eventValues, new AppsFlyerRequestListener() {@Overridepublic void onSuccess() {Log.d(LOG_TAG, "Event sent successfully");}@Overridepublic void onError(int i, String s) {Log.d(LOG_TAG, "Event failed to be sent:\n" +"Error code: " + i + "\n"+ "Error description: " + s);}});}
}
iOS接入
1.添加依赖库
(File -> Add Packages)输入 https://github.com/AppsFlyerSDK/AppsFlyerFramework
选择AppsFlyerFramework添加到项目工程即可
2.初始化SDK/启动SDK
导入依赖库、 初始化需要Apple App ID 和 AppsFlyer dev key2个配置参数,启动有2种方式,不带回调start和带回调的startWithCompletionHandler。直接上代码
// 导入依赖库
#import <AppsFlyerLib/AppsFlyerLib.h>// 在didFinishLaunchingWithOptions中初始化SDK
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// ...[[AppsFlyerLib shared] setAppsFlyerDevKey:@"<AF_DEV_KEY>"];[[AppsFlyerLib shared] setAppleAppID:@"<APPLE_APP_ID>"];// ...return YES;
}// 在applicationDidBecomeActive中启动SDK
- (void)applicationDidBecomeActive:(UIApplication *)application {// ...//[[AppsFlyerLib shared] start];[[AppsFlyerLib shared] startWithCompletionHandler:^(NSDictionary<NSString *,id> *dictionary, NSError *error) {if (error) {NSLog(@"%@", error);return;}if (dictionary) {NSLog(@"%@", dictionary);return;}}];
}
3.记录应用内事件
logEvent方法可用于记录应用内事件,并将其发送到AppsFlyer进行处理。
- 第一个参数(
eventName
)是事件名称 - 第二个参数(
eventValues
)是事件参数NSDictionary
- (void)logEvent:(NSString *)eventName withValues:(NSDictionary * _Nullable)values;
logEventWithEventName同样可记录事件
- 第一个参数(
eventName
)是事件名称 - 第二个参数(
eventValues
)是事件参数NSDictionary
- 第三个参数(
completionHandler
)是一个可选的完成处理程序
- (void)logEventWithEventName:(NSString *)eventName eventValues:(NSDictionary<NSString * , id> * _Nullable)eventValues completionHandler:(void (^ _Nullable)(NSDictionary<NSString *, id> * _Nullable dictionary, NSError * _Nullable error))completionHandler;
记录应用内事件的时候发生错误,错误代码和字符串说明如下,请参考
错误吗码 | 描述 |
---|---|
10
|
超时,可检查参数minTimeBetweenSessions |
11
|
由于启用了停止追踪,事件不上传 |
40
|
网络错误,可查看错误信息 |
41
|
未设置AppsFlyer dev key |
50
|
状态代码故障,查看回调中的错误信息 |
Android和iOS接入Appsflyer SDK相关推荐
- ios sdk 穿山甲_Creator iOS接入穿山甲SDK
首先介绍一下 .m文件与.mm文件有什么区别 .m文件 支持C ,OC .mm文件 支持C,C++,OC OC 与 TS 互调,例子有很多,比如官方的例子里面就有 TS 调用OC的时候有个点 初学者可 ...
- cocos creator ios 接入 facebook sdk login
主程序是cocos creator 发布ios时要接facebook登录的sdk cocos creator 发布ios版本后 按官方文档配置接入,碰到以下问题 执行 sudo gem install ...
- android打包jar包给unity使用接入高德sdk,实现定位。
https://blog.csdn.net/unity_http/article/details/79929454 https://blog.csdn.net/why1happy/article/de ...
- (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇
最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...
- 教你快速高效接入SDK——Unity统一接入渠道SDK(Android篇)
U8SDK技术博客:http://www.uustory.com/,欢迎来坐坐. 百度传课已经停运,最新U8SDK视频教程已经转移至B站:U8SDK最新视频教程 U8SDK的设计之初,就是为了能够支持 ...
- untiy接入微信SDK实现iOS分享
untiy接入微信SDK实现iOS分享功能 说明: 使用平台:mac电脑 Unity处理 进入微信开发者官网申请应用 2.下载微信的开发工具包sdk导入untiy的 Assest/Plugins/iO ...
- 深入浅出:移动端(Android 和 iOS)数据采集埋点 SDK
随着大数据时代的到来,越来越多公司注意到数据带来的价值,开始自建或购买一些第三方的数据平台.从数据流的角度看,平台对于数据的处理,一般有以下几个步骤: 其中,数据采集工作是后面几个步骤的基础,数据采集 ...
- uniapp轻松集成极光推送自定义消息+通知 Android极光 IOS极光 两行代码集成极光SDK
###[前言] 极光推送(JPush)在为开发者提供基础推送服务的同时,还提供了用户精准标签.用户分群.地理围栏.应用内消息.智能发送策略.智能促活等服务能力,可有效提升消息的送达率.展示率和点击率, ...
- OCR--苹果ios安卓android身份证拍照扫描识别sdk
一.ios安卓android身份证拍照扫描识别sdk应用背景 这些年,随着移动互联网的的发展,越来越多的企业都推出了自己的移动APP,这些APP多数都涉及到个人身份证信息的输入认证(即实名认证),如果 ...
最新文章
- NYOJ-232 How to eat more Banana
- 给在读研究生的一封信(强烈推荐)
- 使用ScheduledThreadPoolExecutor代替TimerTimerTask
- kaggle 相关知识汇总(转载+自己整理)
- Dapr + .NET 实战(九)本地调试
- 如何计算一只鸡的表面积?各大专业的奇葩解法
- LeetCode 881. 救生艇(贪心,双指针)
- 题解P3951【小凯的疑惑】
- python是什么意思啊-星号*在Python中是什么意思?
- 从大数据角度看你的信用借贷
- 微信小程序游戏——飞机大战
- python中缀表达式_中缀表达式变后缀表达式、后缀表达式(逆波兰)求值(python版本)...
- Alter table alter |change |modify 区别
- matlab cic设计,CIC滤波器设计
- 视频显示服务器无返回播放器,播放器没有办法播放
- 微信ipad协议简述
- 计算机二级无纸化考试vb各题分值,2014年计算机二级考试《VB》无纸化机考操作题题库(1)...
- linux mt命令,几种操作系统mt命令比较
- Nuendo学习之旅——音程和和弦
- 将渲染计算搬到云端,开启低成本、强交互、沉浸式体验