Integrasi SDK AppsFlyer - Android

android.pngSDK Version:  4.8.9 (Release Notes)

1. Garis Besar

SDK AppsFlyer menyediakan fungsi pengukuran instalasi aplikasi dan event. Kami telah mengembangkan SDK yang sangat tangguh (lebih dari 7 miliar instalasi hingga saat ini), aman, ringan dan sangat mudah untuk ditanam.

Anda dapat melacak instalasi, pembaruan dan sesi, serta melacak event dalam aplikasi tambahan setelah instalasi aplikasi (termasuk pembelian dalam aplikasi, tingkat permainan, dll.) untuk mengevaluasi rasio pengembalian investasi (ROI) dan tingkat interaksi pengguna.

SDK Android AppsFlyer kompatibel dengan Android 2.3 dan di atasnya.

Jika Anda bermigrasi dari SDK Android AppsFlyer V.3.3.x klik di sini.

2. Mulai Cepat

2.1  Mengunduh SDK

Untuk mengunduh file jar SDK Android, klik di sini.

Untuk informasi lebih lanjut tentang Sampel Aplikasi AppsFlyer, klik di sini.

2.2 Menanam SDK di Aplikasi

Anda dapat mengintegrasikan SDK AppsFlyer baik secara otomatis menggunakan Dependency Management Gradle atau secara manual menggunakan file SDK.jar.

2.3 Menambahkan SDK ke Proyek Anda

Cara termudah untuk mengintegrasikan SDK ke proyek Anda adalah dengan menggunakan Dependency Management Gradle. Informasi versi dapat dilihat di sini.

Jika Anda tidak menggunakan Gradle, unduh dan tambahkan file AF-Android-SDK.jar ke class path proyek.

Menambahkan Dependensi SDK Android AppsFlyer:

  1.  Buka proyek Anda (atau buat proyek baru), kemudian buka file your_app | build.gradle
  2.  Tambahkan kode berikut ke Module-level /app/build.gradle sebelum dependensi:
repositories {
mavenCentral()
}


Add the compile dependency with the latest version of the AppsFlyer SDK in the 
build.gradle file: 

dependencies {
compile 'com.appsflyer:af-android-sdk:4+@aar'
compile 'com.android.installreferrer:installreferrer:1.0'
}

 Penting!

  • Dependensi 'com.android.installreferrer:installreferrer:1.0' diperlukan untuk mendukung API Play Install referrer Google. Penggunaan API ini meningkatkan keakuratan atribusi, melindungi dari penipuan instalasi dan banyak lagi.
  • API ini didukung mulai dari SDK Android AppsFlyer versi 4.8.6 dan di atasnya. Jika memperbarui dari versi SDK lama,  selesaikan integrasi dependensi baru dengan memperbarui metode init SDK
  • Pengembang yang menggunakan ProGuard dan ingin menggunakan referrer API baru milik Google, wajib menetapkan aturan ProGuard berikut ini:
    -dontwarn com.android.installreferrer
  • Developers who are not using gradle build or aar and want to use Google's new referrer API must manually add com.android.installreferrer jar as a file, and ensure that the following permission is added:
    com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE

2.4 Mengatur Hak Akses Yang Diperlukan

File AndroidManifest.xml wajib menyertakan hak akses berikut:

<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" />
<!-- Optional : -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

2.5 Mengatur BroadcastReceiver pada file AndroidManifest.xml

Tersedia dua pilihan untuk penerapan penerima broadcast perujuk instalasi:

Menggunakan Penerima Broadcast Tunggal Menggunakan Penerima Broadcast Ganda

Jika tidak ada penerima yang mendengarkan di INSTALL_REFERRER, pada file AndroidManifest.xml, tambahkan penerima berikut dalam tag aplikasi:

<receiver android:name="com.appsflyer.SingleInstallBroadcastReceiver" android:exported="true">
    <intent-filter>
         <action android:name="com.android.vending.INSTALL_REFERRER" />
     </intent-filter>
</receiver>

3. Inisialisasi SDK

Initialization of the SDK is completed in two stages. In the first stage the DevKey is supplied along with your app ID and an optional conversionDataListener. In the second stage the call to startTracking indicates that all relevant preparations are complete (e.g. call setCustomerUserId) and the SDK can start tracking all events.

Untuk menginisialisasi SDK, tambahkan kode berikut ini ke fungsi onCreate() Aplikasi:

public class AFApplication extends Application {
   private static final String AF_DEV_KEY = "<your-appsflyer-dev-key>";
   @Override
   public void onCreate() {
       super.onCreate();
       AppsFlyerConversionListener conversionDataListener =
new AppsFlyerConversionListener() {
           ...
       };
AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionDataListener, getApplicationContext());
       AppsFlyerLib.getInstance().startTracking(this);   }
}

 Catatan

Anda dapat menunda panggilan ke startTracking dan menempatkannya di dalam fungsi OnCreate aktivitas mana pun yang relevan.

 Tips

The following dependancy: compile 'com.android.installreferrer:installreferrer:1.0' And the getApplicationContext() passed in the following method: AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); are the prerequisite for reporting Google's New Referrer API to AppsFlyer.

Anda dapat mengakses kode dev dari Dashboard AppsFlyer pada bagian Konfigurasi yang berada di dalam Pengaturan Aplikasi:

API ini memungkinkan AppsFlyer mendeteksi instalasi, sesi, dan pembaruan.

4. Melacak Event Dalam Aplikasi

Event Dalam Aplikasi memberikan informasi tentang hal yang terjadi di dalam aplikasi Anda. Sebaiknya luangkan waktu dan tentukan event yang ingin diukur agar Anda dapat melacak rasio pengembalian investasi (ROI) dan LTV (Lifetime Value).

Melacak event dalam aplikasi dilakukan dengan cara memanggil trackEvent bersama nama event dan parameter dalam event. Lihat dokumentasi Event Dalam Aplikasi untuk informasi lebih lanjut.

 Catatan

Nama Event Dalam Aplikasi tidak boleh lebih dari 45 karakter. Nama Event yang melebihi 45 karakter tidak muncul di dashboard, namun hanya tertera di Data mentah, API Pull dan API Push.

//context - use getApplicationContext()
//eventName is any string to define the event name.
//eventValues is a map of event parameters that comprise a rich event.  
public static void trackEvent(Context context, String eventName, Map eventValues);


Example
: Level Achieved In-App Event

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.LEVEL,9);
eventValue.put(AFInAppEventParameterName.SCORE,100);
AppsFlyerLib.getInstance().trackEvent(context,AFInAppEventType.LEVEL_ACHIEVED,eventValue);
 

This generates an event of type af_level_achieved with the following event values:
{af_level: 9, af_score: 100}

 Catatan

AppsFlyer supports non-English characters with in-app events, or with any other SDK API, starting from Android SDK version 4.8.1.

5. Melacak Penautan Langsung

 Tips

Kami sangat menyarankan Deep Linking terintegrasi dalam aplikasi Anda. Deep Linking merupakan bagian penting dari kampanye penargetan ulang dan sangat dianjurkan penggunaannya saat menjalankan kampanye penargetan ulang.

Tambahkan baris berikut pada onCreate()untuk setiap aktivitas yang dapat digunakan untuk deep linking (termasuk aktivitas utama jika diperlukan):

AppsFlyerLib.getInstance().sendDeepLinkData(this);

Aktivitas yang ditujukan untuk dibuka menggunakan deep linking harus memiliki intent filter berikut pada definisi tindakan dalam file manifest. 

<intent-filter>
   <action   android:name="android.intent.action.VIEW" />
   <category android:name="android.intent.category.DEFAULT" />
   <category android:name="android.intent.category.BROWSABLE" />
   <data     android:scheme="yourUniquescheme" />
</intent-filter>


The 
Scheme configured correlates with the af_dp value you include in your tracking link.

Untuk menerima data deep link, Anda harus menerapkan fungsi callback onAppOpenAttribution yang dipanggil oleh SDK AppsFlyer.  Penerapan ini menghasilkan Onelink/parameter tautan pelacakan yang digunakan untuk memicu pembukaan aplikasi. Kemudian, Anda dapat memparsing nilai dan menerapkan logika tersebut untuk memicu laman aplikasi terkait.

void onAppOpenAttribution(Map<String,String> attributionData);

Untuk informasi lebih lanjut , klik di sini, atau tinjau artikel bagian Memperoleh Data Konversi.

6. Melacak Pendapatan

Use the af_revenue (AFInAppEventParameterName.REVENUE) event parameter to count revenue as part of an in-app event. You can populate it with any numeric value, positive or negative.

 Catatan

af_revenue is the ONLY event parameter that is counted on AppsFlyer as real revenue on the raw data and dashboard. For more details please click here.

Contoh: Pendapatan Event Dalam-Aplikasi

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(context,AFInAppEventType.PURCHASE,eventValue);

Hal ini menghasilkan event jenis af_purchase dengan nilai event berikut:

{af_content_id: “1234567”, af_content_type: “category_a”, af_revenue: 200, af_currency: “USD”}

Event pembelian di atas memiliki pendapatan $200, yang ditampilkan pada dashboard sebagai pendapatan. 

 Catatan

Setting user local currency code for in app purchases - the currency code should be a 3 character ISO 4217 code. (default is USD). 

You can set the currency code for all events by calling the following method: AppsFlyer.setCurrencyCode("GBP");

7. Memperoleh Data Konversi

AppsFlyer memungkinkan Anda untuk mengakses data atribusi pengguna secara aktual untuk setiap instalasi baru, langsung dari SDK. Dengan ini, Anda dapat melayani pengguna dengan menyajikan konten yang dipersonalisasi atau mengirimkan halaman spesifik dalam aplikasi kepada mereka, yang secara signifikan dapat meningkatkan interaksi pengguna dengan aplikasi Anda.

Data konversi AppsFlyer yang berasal dari SDK Android dapat diakses dengan penerapan ConversionDataListener:

public interface AppsFlyerConversionListener {
       void onInstallConversionDataLoaded(Map<String,String> conversionData);
       void onInstallConversionFailure(String errorMessage);
}


Example:

AppsFlyerLib.getInstance().registerConversionListener(this, new AppsFlyerConversionListener() {
  @Override
  public void onInstallConversionDataLoaded(Map<String, String> conversionData) {
      for (String attrName : conversionData.keySet()) {
          Log.d(AppsFlyerLib.LOG_TAG, "attribute: " + attrName + " = " + conversionData.get(attrName));
      }
  }
  @Override
  public void onInstallConversionFailure(String errorMessage) {
      Log.d(AppsFlyerLib.LOG_TAG, "error getting conversion data: " + errorMessage);
  }
  @Override
  public void onAppOpenAttribution(Map<String, String> conversionData) {
  }
  @Override
  public void onAttributionFailure(String errorMessage) {
      Log.d(AppsFlyerLib.LOG_TAG, "error onAttributionFailure : " + errorMessage);
  }
}); 

8. Pengidentifikasi Pengguna

Memperoleh AppsFlyer Device ID

AppsFlyer device ID dibuat unik untuk setiap instalasi aplikasi baru. Gunakan API berikut untuk mendapatkan AppsFlyer Device ID:

public String getAppsFlyerUID(Context context);


Usage Example:

String appsFlyerId = AppsFlyerLib.getInstance().getAppsFlyerUID(this);

Mengatur ID Pengguna Pelanggan

Dengan mengatur ID pelanggan Anda sendiri, Anda dapat membuat referensi silang atas ID unik Anda dengan ID unik AppsFlyer dan ID perangkat lainnya. ID ini tersedia di laporan CSV AppsFlyer bersama dengan API Postback untuk referensi silang dengan ID internal Anda.

Cara mengatur ID Pengguna Pelanggan Anda:

public void setCustomerUserId(String id);


Usage Example:

AppsFlyerLib.getInstance().setCustomerUserId("myId");

 Catatan

customerUserID HARUS diatur sebelum trackAppLaunch. Sebaiknya atur ID Pengguna Pelanggan sesegera mungkin karena ID hanya terkait dengan event yang dilaporkan setelah ID dibuat. ID Pengguna Pelanggan dapat juga digunakan untuk melengkapi integrasi dengan platform Analisis seperti Mixpanel dan Swrve.

Untuk informasi lebih lanjut tentang ID Pengguna Pelanggan, klik di sini.

Mengatur Email Pengguna

AppsFlyer memungkinkan Anda untuk melaporkan satu atau lebih alamat email yang terkait dengan perangkat. Anda harus mengumpulkan alamat email dan melaporkannya kepada AppsFlyer berdasarkan metode enkripsi yang Anda inginkan.

Tersedia metode enkripsi berikut: SHA1, MD5, SHA256, dan plain.

Contoh:

public void setUserEmails(String... emails);


Usage Example:

AppsFlyerLib.getInstance().setUserEmails(AppsFlyerProperties.EmailsCryptType.MD5, "email1@domain.com","email2@domain.com", ….);

 Catatan

Informasi Yang Dapat Diidentifikasi (PII) seperti alamat email tidak disimpan oleh AppsFlyer dan informasi ini tidak ditampilkan pada laporan mana pun. Tujuan pengumpulan informasi ini hanya untuk postback ke sumber media.

Google Advertising ID

AppsFlyer secara otomatis mengumpulkan google_advertising_id dari SDK Versi 4.8.0. Persyaratan untuk mengumpulkan ID Iklan Google hanya relevan untuk SDK versi 4.7.x dan di bawahnya.

IMEI dan Android ID

By default, IMEI and Android ID are not collected by the SDK if the OS version is higher than KitKat (4.4) and the device contains Google Play Services (on SDK versions 4.8.8 and below the specific app needed GPS). 

Untuk mengirim ID ini secara eksplisit ke AppsFlyer, pengembang dapat menggunakan API berikut:

AppsFlyerLib.getInstance().setImeiData("IMEI_DATA_HERE");
AppsFlyerLib.getInstance().setAndroidIdData("ANDROID_ID_DATA_HERE");

If the app does NOT contain Google Play Services, the IMEI and Android ID are collected by the SDK. However, apps with Google play services should avoid IMEI collection as this is in violation of the Google Play policy.

Pengembang dapat memilih untuk tidak mengumpulkan IMEI dan Android ID dengan menggunakan API berikut:

AppsFlyerLib.getInstance().setCollectIMEI(false);
AppsFlyerLib.getInstance().setCollectAndroidID(false);

 Peringatan

Setidaknya satu pengidentifikasi perangkat, GAID, Android ID atau IMEI, HARUS dikumpulkan untuk memungkinkan atribusi yang tepat.

9. Fitur Pilihan

Melacak Pelepasan Instalasi

AppsFlyer memungkinkan Anda untuk melacak pelepasan instalasi aplikasi.

Untuk menyelesaikan proses ini sepenuhnya dan dengan benar, Anda harus baca di sini.

Melacak Push Notification 

AppsFlyer memungkinkan Anda untuk mengukur push notification sebagai bagian dari kampanye penargetan ulang.

Untuk mengaktifkan fitur ini, panggil metode berikutnya di dalam metode onCreate dari setiap Aktivitas yang akan diluncurkan saat mengklik notifikasi:

AppsFlyerLib.getInstance().sendPushNotificationData(this);

Muatan data harus berisi objek: af dengan string key-value yang relevan:

Contoh:

\"data\": { \"score\": \"5x1\", \"time\": \"15:10\" , \"af\" : { \"c\" : \"test_campaign\" , \"is_retargeting\" : \"true\" , \"pid\" : \"push_provider_int\" } } }"[with deep-linking] \"data\": { \"score\": \"5x1\", \"time\": \"15:10\", \"click_action\" : \"com.example.someAction\" , 
\"af\" : { \"c\" : \"test_campaign\" , \"is_retargeting\" : \"true\" , \"pid\" : \"push_provider_int\" } } }"

 Catatan

Untuk informasi lebih lanjut tentang pengukuran push notification, baca di sini.

Pelacakan Promosi Silang 

AppsFlyer allows you to track and attribute installs originating from a cross promotion of one of your apps from within the current app the user has. Cross promoting apps can be a major growth factor in driving additional installs for your apps.

For details, see the Cross Promotion Tracking article, here.

Pelacakan Undangan Pengguna

AppsFlyer allows you to track and attribute installs originating from user invites within your app. Allowing your existing users to invite their friends and contacts as new users to your app can be a key growth factor for your app.

For details, see the User Invite Tracking article, here.

Mengatur Kode Mata Uang 

Anda dapat mengangatur kode mata uang global menggunakan API di bawah ini, selain dari kode mata uang spesifik yang dapat digunakan sebagai bagian setiap event dalam-aplikasi yang dikirim ke AppsFlyer. Kode mata uang global digunakan jika af_currency

AFInAppEventParameterName.CURRENCY

tidak dikirim sebagai bagian dari event dalam-aplikasi.

Nilai default adalah USD. Anda dapat melihat kode mata uang ISO yang dapat diterima di sini.

Gunakan API berikut untuk menentukan kode mata uang:

public void setCurrencyCode(String currencyCode);

Contoh Penggunaan:

AppsFlyerLib.getInstance().setCurrencyCode("GBP");

Validasi Pembelian Dalam-Aplikasi

SDK AppsFlyer menyediakan verifikasi server untuk pembelian dalam-aplikasi. Untuk menentukan pelacakan validasi pembelian, panggil metode validateAndTrackInAppPurchase di dalam fungsi onActivityResult .

Panggilan ini secara otomatis menghasilkan event dalam-aplikasi af_purchase.

public static void validateAndTrackInAppPurchase(
                     Context context,
                     String publicKey,
                     String signature,
                     String purchaseData,
                     String price,
                     String currency,
                     HashMap<String, String> additionalParameters);

Panggilan ini memiliki dua blok callback, satu untuk ‘Sukses’ dan satu lainnya untuk ‘Gagal’ (untuk alasan apa pun termasuk kegagalan validasi).

AppsFlyerLib.getInstance().registerValidatorListener(this,new
    AppsFlyerInAppPurchaseValidatorListener() {
         public void onValidateInApp() {
             Log.d(TAG, "Purchase validated successfully");
         }
         public void onValidateInAppFailure(String error) {
             Log.d(TAG, "onValidateInAppFailure called: " + error);
         }
     });


Usage Example:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == 1001) {
      String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
      String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
      if (resultCode == RESULT_OK) {
          HashMap<String,String> event = new HashMap<>();
          event.put(AFInAppEventParameterName.PRICE,"9");
          AppsFlyerLib.getInstance().validateAndTrackInAppPurchase(getApplicationContext(),publicKey, dataSignature, purchaseData, "3.00", "ILS", event);
      }
  }
} 

Anonymize User Data

AppsFlyer provides you with a method to anonymize specific user identifiers in AppsFlyer analytics. This method complies with the latest privacy requirements and complies with Facebook data and privacy policies. Default is NO, meaning no anonymization is performed by default.

Use this API during the SDK Initialization to explicitly anonymize a user's installs, events and sessions:

public void setDeviceTrackingDisabled(boolean isDisabled);


Usage Example:

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

Pelacakan dapat diulang dengan memanggil kembalideviceTrackingDisabled dan mengaturnya ke false.

 Peringatan

Anonymizing users SEVERELY impacts your attribution information.
Use this option ONLY for regions which legally prevents you from collecting your users' information.

Waktu Antar Sesi Kustom

Waktu default antar setiap sesi harus minimal 5 detik agar AppsFlyer dapat menghitung dua sesi terpisah. Sesi dimulai ketika pengguna membuka aplikasi. Gunakan API berikut jika Anda ingin mengonfigurasi waktu yang berbeda antara sesi: AppsFlyerLib.setMinTimeBetweenSessions(int seconds);

Sesi Latar Belakang untuk Aplikasi Utilitas

Jika aplikasi Anda adalah aplikasi utilitas yang berjalan di latar belakang, Anda dapat menggunakan API ini di onCreate() - aktivitas Anda

public void reportTrackSession(Context context);


Usage Example:

AppsFlyerLib.getInstance().reportTrackSession(context);

Melacak Aplikasi Selain dari Google Play 

 Catatan

Google Play adalah bursa aplikasi default. Lewati bagian ini jika aplikasi hanya dipublikasikan di Google Play.

Untuk melacak instalasi selain dari Google Play, atur saluran/bursa aplikasi pada file AndroidManifest.xml aplikasi menggunakan nama saluran unik atau nama bursa aplikasi apa pun untuk setiap APK. Nilai SALURAN sensitif huruf besar dan kecil.

Contoh:

<meta-data android:name="CHANNEL" android:value="Amazon" />
<meta-data android:name="CHANNEL" android:value="Standalone"/>
<meta-data android:name="CHANNEL" android:value="Verizon" />

 Catatan

Anda harus mengonfigurasikan nilai SALURAN di dashboard AppsFlyer saat mengatur aplikasi.

Letakkan tag meta-data sebelum tag </application>.

Untuk informasi lebih lanjut tentang cara melacak instalasi aplikasi selain dari Google Play, baca di sini.

Opt Out

In some extreme cases you might want to shut down all SDK tracking due to legal and privacy compliance. This can be achieved with the isStopTracking API. Once this API is invoked, our SDK will no longer communicate with our servers and stop functioning.

AppsFlyerLib.getInstance().stopTracking(true, context);

In any event, the SDK can be reactivated by calling the same API, but to pass false.

 Peringatan

Use this API only in cases where you want to fully ignore this user from any and all tracking. Using this API SEVERELY impacts your reporting and attribution..

Delay SDK init for customerUserID

It is possible to delay the SDK Initialization until the customerUserID is set. This feature makes sure that the SDK doesn't begin functioning until the customerUserID is provided. If this API is used, all in-app events and any other SDK API calls are discarded, until the customerUserID is provided and tracked.

To indicate that the SDK should delay initialization for the customer user id call AppsFlyerLib.getInstance().waitForCustomerUserId(true); immediately before the init() method. The rest of the SDK initialization should remain unchanged.

Once the customerUserID has been provided, call AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this); to provide the SDK with the relevant customer user id and trigger the SDK to begin its normal tracking.

The code should appear as follows:
public class AFApplication extends Application {
   private static final String AF_DEV_KEY = ;
   @Override
   public void onCreate() {
       super.onCreate();
       AppsFlyerConversionListener conversionDataListener = 
       new AppsFlyerConversionListener() {
           ...
       };
       AppsFlyerLib.getInstance().waitForCustomerUserId(true); 
       AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext());
       AppsFlyerLib.getInstance().startTracking(this);
       // Do your magic to get the customerUserID
       // ...
       // any AppsFlyer SDK code invoked here will be discarded
      //Call the following API once the customerUserID is available:
 AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);
   }
}

 Peringatan

Use this API only in cases where it is appropriate for your business logic. Using this API increases the chance for discrepancies and might make the app more exposed to fraud.

Setting Additional Data

The setAdditionalData API is required to integrate on the SDK level with several external partner platforms, including Segment, Adobe and Urban Airship. Use this API only if the integration article of the platform specifically states setAdditionalData API is needed.
The following is a code example for implementing setAdditionalData on Android:

HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("custom_param_1","value_of_param_1");
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

10. Menguji Integrasi SDK

Untuk menguji integrasi SDK sebelum dan sesudah mengirimkannya ke Google Play Store klik di sini.

11. Masalah Yang Diketahui

Tambahkan kode berikut ke file aturan ProGuard jika Anda menggunakan ProGuard dan mendapatkan peringatan  mengenai kelas AFKeystoreWrapper kami:

-dontwarn com.appsflyer.*
Apakah artikel ini membantu?
15 dari 17 menganggap ini berguna

Komentar

0 komentar

Harap login untuk memberikan komentar.

Artikel dalam bagian ini