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-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状态代码故障,查看回调中的错误信息
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: 我不是很清楚Flutter打包androidios的具体流程,但是根据我从网上查询的信息,可以通过使用Flutter CLI来打包AndroidiOS应用程序,并使用Flutter提供的构建工具来生成最终的应用程序文件。 ### 回答2: Flutter是一种开源的跨平台移动应用开发框架,它可以同时打包AndroidiOS两个平台的应用。下面将分别介绍Flutter打包AndroidiOS的步骤。 Flutter打包Android应用的步骤如下: 1. 首先,我们需要在Flutter项目的根目录下执行命令`flutter build apk`,该命令会利用Flutter的打包工具将代码编译成Android应用可执行文件。 2. 打包完成后,在项目的`build/app/outputs/apk/release`路径下会生成一个名为`app.apk`的文件,这就是我们需要的Android安装包。 3. 如果需要对该安装包进行签名,可以使用Java开发工具包(JDK)自带的`keytool`生成一个密钥库文件(keystore),然后利用Android Studio自带的`apksigner`工具对APK进行签名。 4. 最后,我们可以将签名后的APK安装包通过各种方式进行发布和安装。 Flutter打包iOS应用的步骤如下: 1. 在Flutter项目的根目录下执行命令`flutter build ios`,该命令会利用Flutter的打包工具将代码编译成iOS应用可执行文件。 2. 打包完成后,在项目的`build/ios/iphoneos`路径下会生成一个名为`Runner.app`的文件,这就是我们需要的iOS应用。 3. 接下来,我们需要在Xcode中打开`Runner.xcworkspace`文件,并配置开发者账号和相关证书。 4. 在Xcode中选择设备或模拟器,然后点击菜单栏的`Product -> Archive`选项,Xcode将会对应用进行打包。 5. 打包完成后,在`Xcode -> Window -> Organizer`界面中可以找到App Archives,我们可以选择对应的应用版本进行导出或发布。 总结来说,Flutter通过使用自身的打包工具,可以快速便捷地打包AndroidiOS应用,对于开发者来说非常方便。同时,开发者还可以根据需要对打包后的应用进行签名或发布。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

coding·life

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

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

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

打赏作者

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

抵扣说明:

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

余额充值