01 ตุลาคม 2556

[Android Code] ติดโฆษณาให้กับแอปพลิเคชันด้วย mobileCore


        พอดีเจ้าของบล็อกไปเจอวิธีสร้างรายได้บนแอปพลิเคชันจากที่หนึ่ง เป็นของ mobileCore เผอิญไปเจออยู่บนโฆษณาของ Facebook (ก็ไม่คิดมาก่อนว่าโฆษณาบน Facebook นั้นจะได้ผลนะเนี่ย 555)


        สำหรับ mobileCore เป็นอีกที่หนึ่งที่ให้นักพัฒนานำโฆษณาไปใส่ในแอปพลิเคชัน เพื่อสร้างรายได้ โดยรองรับ Android, Adobe AIR และ Unity (iOS ตามมาทีหลัง) สำหรับเรทของรายได้ไม่มีบอกไว้ก็เลยไม่รู้ รู้แต่ว่าจะจ่ายเงินให้ก็ต่อเมื่อ มีรายได้ขั้นต่ำ $200 โดยจ่ายทาง PayPal หรือ Wire Transfer ก็ได้

        ในการเริ่มใช้งานก็ไม่วุ่นวายมากนัก สามารถใช้ Google Account สมัครได้เลย



        เมื่อสมัครแล้วก็จะเข้าสู่หน้า Dashboard



        ก่อนอื่นให้ไปดาวน์โหลด SDK มาก่อน โดยเลือกที่ Resources ก็จะมีปุ่มให้กดดาวน์โหลด SDK มาใช้งาน



        จะได้เป็นไฟล์ ZIP มา ก็จะแตกไฟล์แล้วเปิดเข้าไปข้างใน




        จะพบกับไฟล์สามไฟล์ด้วยกัน มี PDF 2 ไฟล์สำหรับการใช้งานคำสั่งของ SDK และไฟล์ JAR ที่เป็น SDK นำไปใช้เป็นไลบรารีได้เลย



        ในการนำไปใช้งานก็สร้างโปรเจคแอนดรอยด์ขึ้นมาก่อน จากนั้นก็ลากไฟล์ mobilecorelib.jar ไปไว้ในโฟลเดอร์ lib



        ก่อนจะพูดถึงโค๊ด ขอพูดถึงรูปแบบของโฆษณาบน mobileCore ก่อน สำหรับรูปแบบของโฆษณาบน mobileCore จะมีสองแบบด้วยกัน คือ App Wall (ภาพซ้าย) กับ Slider (ภาพขวา)



        สำหรับ Slider จะเป็นเหมือน Navigator Drawer ซึ่งในการนำไปใช้บนแอปพลิเคชันอาจจะไม่ค่อยเวิร์กนัก เพราะบางทีนักพัฒนาก็อยากจะทำ Navigator Drawer ในนั้น จึงทำให้ Slider ไปทับซ้อนกับ Navigator Drawer ได้

        ดังนั้นจึงยกตัวอย่างการใช้งานแบบ App Wall อย่างเดียว เพราะเป็นรูปแบบที่นิยมใช้งานกันอยู่แล้วนั่นเอง คือเป็น Pop up เด้งขึ้นมาตามที่กำหนดไว้

        ก่อนจะเรียกใช้คำสั่ง ควรจะรู้ Hash Code ของผู้ที่หลงเข้ามาอ่านเสียก่อน ซึ่งเป็นรหัสที่ใช้ระบุว่าโฆษณาในแอพนี้เป็นรายได้ของใครนั่นเอง เพราะจะต้องมีการกำหนด Hash Code ในแอพด้วย

        สามารถเช็ค Hash Code ได้บนเว็ป mobileCore จะอยู่ซ้ายมือของจอ หรือเข้าไปที่ Account จะแสดงตรง Developer Hash Code



        ทีนี้ในส่วนของโค๊ดบนแอปพลิเคชันของผู้ที่หลงเข้ามาอ่าน ในการเรียกใช้งาน mobileCore ทุกครั้ง จะต้องทำการ Initial ก่อน โดยใช้คำสั่ง Initial ใน onCreate ก่อนทุกครั้ง ถึงจะใช้งานโฆษณาได้

MobileCore.init(this, "your_hash_code", LOG_TYPE.DEBUG);

        your_hash_code ก็คือ Hash Code ของผู้ที่หลงเข้ามาอ่าน ใส่ลงไปซะ สำหรับ LOG_TYPE.DEBUG เป็นรูปแบบของ Log ที่จะแสดง โดยจะมีสองแบบคือ DEBUG และ PRODUCTION สำหรับ DEBUG เอาไว้แสดง Log ต่างๆของตัวโฆษณา เพื่อให้พัฒนาทดสอบและเช็คดู Log ก่อน ส่วน PRODUCTION เอาไว้สำหรับเผยแพร่แอพแล้ว ซึ่งจะแสดงเฉพาะ Log ที่สำคัญๆเท่านั้น

        ตอนพัฒนาอยู่ก็ใช้ DEBUG ไป และเมื่อเสร็จแล้วก็เปลี่ยนเป็น PRODUCTION

        สำหรับ this ก็คือ Activity ที่จะใช้คำสั่งนี้นั่นเอง อย่างเช่นเจ้าของบล็อกเรียกใช้ใน Main.java ดังนี้
import com.ironsource.mobilcore.MobileCore; import com.ironsource.mobilcore.MobileCore.LOG_TYPE; public class Main extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MobileCore.init(this, "your_hash_code", LOG_TYPE.DEBUG); } }

        เพียงเท่านี้ก็เป็นการ Initial ให้กับ mobileCore เสร็จแล้ว ต่อไปก็เหลือแค่ว่าต้องการให้แสดงโฆษณาในตอนไหนก็เพียงแค่ใช้คำสั่งแสดงโฆษณาในตอนนั้นๆได้เลย ง่ายมาก
MobileCore.showOfferWall(this, callbackResponse); MobileCore.showOfferWall(this, callbackResponse, forceShow);

        สำหรับ this ก็คือ Activity ที่เรียกใช้คำสั่งเช่นเดิม callbackResponse เป็น Callback เมื่อผู้ใช้ปิดหน้าต่างโฆษณา ส่วน forceShow เป็นการกำหนดว่าเมื่อเชื่อมต่อกับอินเตอร์เน็ตไม่ได้ จะให้แสดงข้อความแจ้งผ่านทาง Toast หรือไม่ กำหนดเป็น True หรือ False

        สมมติว่าเจ้าของบล็อกต้องการให้เปิดแอปพลิเคชันขึ้นมา แล้วแสดงโฆษณาของ mobileCore ทันที ก็จะใช้คำสั่ง
import com.ironsource.mobilcore.MobileCore; import com.ironsource.mobilcore.MobileCore.LOG_TYPE; public class Main extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MobileCore.init(this, "your_hash_code", LOG_TYPE.DEBUG); MobileCore.showOfferWall(Main.this, null); } }
 
        จะเห็นว่าเจ้าของบล็อกกำหนด Callback เป็น null เพราะว่าไม่ต้องการรับรู้ว่าผู้ใช้กดปิดหน้าโฆษณาหรือยัง จากการที่เจ้าของบล็อกใช้คำสั่งแสดงโฆษณาที่ onCreate เลย ดังนั้นเมื่อเปิดแอปพลิเคชันขึ้นมาโฆษณาก็จะแสดงทันที (อย่าลืมนะต้องใช้คำสั่ง init ก่อนจะแสดงโฆษณาใดๆ)

        เมื่อเปิดแอปพลิเคชันขึ้นมาก็จะแสดงโฆษณาทันที


        สำหรับ Callback จะไม่ค่อยได้ใช้มากนัก ขึ้นอยู่กับว่า เมื่อปิดโฆษณาแล้วจะให้ทำอะไรต่อ ตัวอย่างที่เหมาะๆ ก็คงจะเป็นกดออกจากแอปพลิเคชันแล้วแสดงโฆษณา เมื่อผู้ใช้ปิดโฆษณาก็ค่อยทำการปิดแอปพลิเคชันนั่นเอง

        ดังนั้นคำสั่งแสดงโฆษณาก็เอาไปไว้ใน onBackPressed แทน ซึ่งเป็นฟังก์ชันเมื่อกดปุ่ม Back บนเครื่องแอนดรอยด์
import com.ironsource.mobilcore.MobileCore; import com.ironsource.mobilcore.MobileCore.LOG_TYPE; public class Main extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MobileCore.init(this, "your_hash_code", LOG_TYPE.DEBUG); } public void onBackPressed() { MobileCore.showOfferWall(Main.this, new CallbackResponse() { public void onConfirmation(TYPE arg0) { Main.this.finish(); } }); } }

        ในฟังก์ชัน onConfirmation ก็จะให้ทำการปิดแอปพลิเคชันลง ผลที่ได้ก็คือเมื่อกด Back โฆษณาจะแสดงขึ้นมาก่อนและเมื่อผู้ใช้กดปิดโฆษณา แอปพลิเคชันถึงจะปิดตัวลง

        สำหรับตัวแปร arg0 เป็นสถานะของการกดปิดหน้าโฆษณาว่าเป็นแบบใด
                        TYPE.AGREEMENT_AGREE
                        TYPE.AGREEMENT_BACK
                        TYPE.AGREEMENT_DECLINE
                        TYPE.OFFERWALL_BACK
                        TYPE.OFFERWALL_NO_CONNECTION
                        TYPE.OFFERWALL_QUIT

        ก็สามารถเช็คค่าจากตัวแปร arg0 ได้ ในกรณีที่ต้องการเช็คสถานะการปิดหน้าโฆษณา

        และที่ต้องกำหนดเพิ่มเติมอีกอย่างคือ ใน AndroidManifest.xml โดยจะต้องกำหนดเพื่อขอ Permission ในการใช้งานดังนี้
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

        และเรียกใช้งาน Service อีกสองตัวคือ
<service android:name="com.ironsource.mobilcore.MobileCoreReport" android:enabled="true" android:exported="false" android:process=":mcServiceProcess"/> <receiver android:name="com.ironsource.mobilcore.InstallationTracker" android:enabled="true" android:process=":installationTracker"/>

        สรุปคำสั่งของ Android Manifest ก็จะได้ประมาณนี้

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.akexorcist.mobilecoreexample" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="app.akexorcist.mobilecoreexample.Main" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="com.ironsource.mobilcore.MobileCoreReport" android:enabled="true" android:exported="false" android:process=":mcServiceProcess"/> <receiver android:name="com.ironsource.mobilcore.InstallationTracker" android:enabled="true" android:process=":installationTracker"/> </application> </manifest>

        เพียงเท่านี้ก็เป็นอันเสร็จสิ้นการติดโฆษณาลงแอปพลิเคชันแล้ว

        เมื่ออัพขึ้น Play Store แล้วอย่าลืมไปเพิ่มแอปพลิเคชันบน Dashboard ด้วย ให้เปิด Dashboard ขึ้นมา ที่มุมขวาล่างจะมีปุ่ม +Add App ให้กด



        แล้วใส่ชื่อ Package Name ของแอปพลิเคชันนั้นๆลงไป ให้สังเกตตรงช่องไอคอนด้วย มันจะขึ้นออโต้ให้ เช็คว่าถูกต้องหรือป่าว แล้วก็กดปุ่ม Add App ได้เลย




        เมื่อเพิ่มเสร็จแล้วก็มาดูที่หน้า Dashboard จะมีแอพแสดงอยู่เป็นอันเสร็จ ที่เหลือก็แค่รอผู้ใช้กดโฆษณา แล้วก็คอยติดตามดูผลงาน



        สรุปโดยรวมจะเห็นว่า mobileCore ค่อนข้างใช้ง่ายมาก เรียกคำสั่งเล็กน้อยก็สามารถใช้งานได้ทันที พออัพขึ้น Play Store แล้วก็แค่ไปเพิ่มแอพใน Dashboard

        ส่วน Dashboard บนเว็ปจะอัพเดทข้อมูลให้ภายใน 48 ชั่วโมง ไม่ได้ Realtime ตลอดเวลา เพราะงั้นอาจจะต้องรอซักสองวันก่อน ถึงจะเห็นรายได้อัพเดทให้เห็นในแต่ละครั้ง

        สำหรับผู้ที่หลงเข้ามาอ่านคนใดต้องการไฟล์ตัวอย่างสามารถดาวน์โหลดได้ที่ mobileCore [Google Drive]




เหล่าพันธมิตรแอนดรอยด์

Devahoy Layer Net NuuNeoI The Cheese Factory Somkiat CC Mart Routine Artit-K Arnondora Kamonway Try to be android developer Oatrice Benz Nest Studios Kotchaphan@Medium Jirawatee@Medium Travispea@Medium