AppsFlyer Native Android SDK Implementation

AppsFlyer เป็นผู้ให้บริการวัดผลประสิทธิภาพโฆษณาสำหรับแอปพลิเคชันมือถือ หรือที่รู้จักในชื่อ Mobile Measurement Partner (MMP) ซึ่งจุดเริ่มต้นที่จะทำให้ AppsFlyer สามารถที่จะวัดผลบนแอปของเราได้นั้น ก็คือการติดตั้ง AppsFlyer SDK ลงในแอปนั่นเอง

SDK หรือ Software Development Kit เป็นเสมือน Kit เครื่องมือที่เราติดตั้งเพิ่มลงในแอปเพื่อตัวแอปมีความสามารถผ่านเทคโนโลยีของ AppsFlyer ซึ่งการติดตั้งเจ้าตัว SDK นี้จะมีความแตกต่างกันไปในแต่ละ App Developing Environment อย่างไรก็ตามทุก Enviroment จะมีลำดับขั้นตอนที่เหมือนกัน ซึ่งในโพสต์นี้จะขอยกตัวอย่างการติดตั้ง AppsFlyer SDK บน Native Android (Java)

เพื่อให้เห็นภาพชัดเจนมากยิ่งขึ้น เพื่อนๆสามารถดูตัวอย่างการติดตั้ง AppsFlyer SDK บน Salisa App ประกอบกันไปด้วยได้จาก Github Source Code ส่วนรายละเอียดในแต่ละขั้นตอนจะเป็นอย่างไร ไปดูกันเลย

1. Install SDK ผ่าน Gradle

Gradle เป็นเครื่องมืออัตโนมัติที่ใช้ในการสร้างและจัดการ project ถือเป็นมาตรฐานในการพัฒนาแอปบน Android เลย ซึ่งเจ้า Gradle นี้ก็จะช่วยให้เราสามารถ download AppsFlyer SDK มาได้อย่างอัตโนมัติ สำหรับใครที่ยังไม่มี Gradle สามารถดูราละเอียดวิธีการติดตั้งได้ ที่นี่

Step 1: ประกาศ Repositories

โดยให้เรามองหาไฟล์ build.gradle ใน Android Project แล้ว declare the mavenCentral repository:

repositories {
    mavenCentral()
}

Step 2: เพิ่ม Dependencies

เมื่อประกาศ repository แล้ว ก็สามารถดึง AppsFlyer Android SDK เวอร์ชั่นล่าสุดมาได้ โดยประกาศ Dependencies

dependencies {
    implementation 'com.appsflyer:af-android-sdk:6.9.0' 
}

ดูตัวอย่าง Source Code build.gradle

เนื่องจาก SDK มีการพัฒนาและอัพเดทอยู่สม่ำเสมอ เราจึงควรติดตาม AppsFlyer Android SDK release notes เพื่อทะยอยปรับเปลี่ยนไปใช้เวอร์ชันล่าสุดอยู่เสมอ

2. เพิ่ม Permissions ให้ SDK สามารถเข้าถึงข้อมูลที่จำเป็น

ในไฟล์ AndroidManifest.xml ระบุ permissions ดังต่อไปนี้

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

ดูตัวอย่าง Source Code AndroidManifest.xml

3. Integrate AppsFlyer SDK

ลำดับถัดมา หลังจากที่เราทำการ refer ถึง AppsFlyer SDK แล้ว ในขั้นตอนนี้ จะเป็นการ Initialize หรือก็คือการเรียก SDK ขึ้นมาทำงานนั่นเอง

Step 1: Import AppsFlyerLib

import AppsFlyerLib บนไฟล์ Global Application State

import com.appsflyer.AppsFlyerLib;

Step 2: Initialize the SDK

บนไฟล์เดียวกันนี้ ให้ทำการ เรียก function init โดยเราจำเป็นที่จะต้องระบุ AF_DEV_KEY ซึ่งเป็น Unique Key per AppsFlyer account สามารถหาได้จากเมนู App Setting AF_DEV_KEY เป็นเสมือนเครื่องยืนยันและบอกให้ AppsFlyer รู้ว่าจะต้องส่งข้อมูลที่วัดผลได้จากแอปนี้ ไปยัง Account ไหนนั่นเอง

เรียก init บน Global Application onCreate

AppsFlyerLib.getInstance().init(<AF_DEV_KEY>, null, this);

Step 3: Starting the Android SDK

ขั้นตอนนี้เป็นขั้นตอนที่สำคัญมากๆ เพราะ AppsFlyer จะเริ่มวัดผลก็ต่อเมื่อ start ถูกเรียกขึ้น โดยทั่วไปแล้ว เราจะแนะนำให้เรียก start ให้เร็วที่สุด นั่นคือก็ที่หน้าแรกของแอปพลิเคชัน อย่างไรก็ตามนักพัฒนาก็สามารถ Defer SDK start ให้อยู่หลังการขอ consent ต่างๆ ก่อนก็ได้เช่นกัน

เรียก start หลังจากเรียก init บน Global Application onCreate

AppsFlyerLib.getInstance().start(this);

เป็นอันเสร็จสมบูรณ์ เพียงเท่านี้เราก็ได้ทำการติดตั้ง AppsFlyer SDK บน Native Android App ของเราเป็นที่เรียบร้อยแล้ว

ดูตัวอย่าง Source Code Application State

ตรวจสอบการติดตั้ง SDK

เราสามารถตรวจสอบว่าการติดตั้ง AppsFlyer SDK นี้สำเร็จ โดย

  • เปิดใช้ debug mode เรียก setDebugLog บน Global Application onCreate
    AppsFlyerLib.getInstance().setDebugLog(true);
    
  • ตรวจสอบ install บน dashboard โดยตรง เราสามารถรอข้อมูลแสดงผลบน Overview dashboard ได้โดยตรงเลย แต่วิธีนี้อาจจะต้องรอเวลาประมาณ 10-15 นาที เนื่องจากข้อมูลการแสดงผลบน dashboard จะใช้เวลา process ไม่ได้เห็นเป็น real time ทันทีเหมือนอย่างวิธีแรก

Registering Test Devices

เนื่องจาก AppsFlyer มีระบบป้องกันการนับ install ซ้ำซ้อน โดย 1 device จะถูกบันทึก install เพียง 1 ครั้ง ภายใน re-attribution window ที่กำหนด โดยค่าเริ่มต้นของ re-attribution window นี้จะอยู่ที่ 90 วัน หมายความว่า 1 device จะถูกบันทึกเป็น 1 new install เพียง 1 ครั้งใน 90 วันนี้เท่านั้น หากแอปถูกลบและ reinstall ใหม่ใน 90 วันนี้ จะไม่ถูกบันทึกเป็น install ใหม่

ดังนั้นสำหรับนักพัฒนาที่จำเป็นต้องมีการตรวจสอบการติดตั้งแอป และลงใหม่อยู่บ่อยครั้ง เราจึงจำเป็นที่จะต้องแจ้ง AppsFlyer ให้บันทึก test device ของเราไว้ในระบบ เพื่อ bypass เงื่อนไข re-attribution นี้ การ register test device จะทำให้ re-attribution window ไม่ถูกนำมาคิดนั่นเอง

เพื่อนๆสามารถดูรายละเอียดการ register test device ได้จาก Knowledge Base ของ AppsFlyer โดย identifer ที่นิยมใช้ได้แก่ Android Advertising ID (GAID) และ iOS Identifier of Advertiser (IDFA)

Reference: AppsFlyer Dev Hub

Written on June 12, 2023