Android和iOS接入Appsflyer SDK

本文详细介绍如何在Android和iOS平台集成AppsFlyer SDK。包括添加依赖库、配置权限、初始化SDK、记录应用内事件等步骤,并提供常见错误代码及解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android接入

1.添加repositories

// ...
repositories {
    // ...
    mavenCentral()
}
// ...

2.添加dependencies

dependencies {
    // ...
    // Get the latest version from https://mvnrepository.com/artifact/com.appsflyer/af-android-sdk
    implementation '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() {
            @Override
            public void onSuccess() {
                Log.d(LOG_TAG, "Launch sent successfully, got 200 response code from server");
            }

            @Override
            public 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() {
                    @Override
                    public void onSuccess() {
                        Log.d(LOG_TAG, "Event sent successfully");
                    }
                    @Override
                    public 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状态代码故障,查看回调中的错误信息
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coding·life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值