[Unity3D] เพิ่ม Game Center ลงเกมของเรา by

30
Jun
0

วิธี setup Game Center และใส่ Archivement ลงใน Game Center ตามนี้เลยครับ

Setup ที่ iTune Connect

1. เข้าไปที่ iTune Connect

2. เลือก app ของเรา (ถ้ายังไม่ใส่ app ลง iTune Connect จะทำ Game Center ไม่ได้เลย)

gamecenter1

3. กดเมนู Features ตามด้วย Game Center ดังรูปด้านบน

gamecenter2

4. กด Add Achievement ตามรูป (ถ้าอยากใส่ Leaderboard ด้วยก็ต้องใส่ข้อมูล Leaderboard ด้วยตรงนี้)

5. มีข้อมูลต้องกรอกดังนี้

  • Achievement Reference Name – ชื่อที่เอาไว้ดูในเว็บ iTune Connect เท่านั้น ไม่มีการเชื่อมต่อกับส่วนอื่น
  • Achievement ID – ชื่อที่ใช้อ้างอืงกับเกมของเรา เวลาเราสั่ง Achievement ไหนเสร็จก็จะต้องอ้าง string ตัวนี้ ใช้ได้เฉพาะตัวอักษรอังกฤษ, ตัวเลข, -, _ ห้ามมีตัวอักษรอื่นนอกเหนือจากนี้รวมถึง spacebar
  • Point Value – ถ้าทำสำเร็จจะได้กี่แต้ม ตรงนี้ต้องระวังหน่อยใส่ได้สูงสุด 100 และรวมทุก Achievement ห้ามเกิน 1000 คะแนนตรงนี้จริงๆ เกมเราไม่ได้เอาไปใช้อะไรหรอก แต่สำหรับผู้เล่น มันจะมีคะแนนที่สะสมมาจากเกมอื่นที่ไม่ใช่ของเรามารวมด้วย และจัดอันดับของทั้ง Game Center รวมกันหลายๆ เกมอีกที ในส่วนนี้สมมติตั้งว่าได้ 10 คะแนน แต่คนเล่น progress ไป 50% แล้ว แต่ยังไม่สำเร็จก็จะยังไม่ได้แต้ม (ไม่ใช่ว่าได้ 5 แต้มไปก่อนแล้ว) ต้องทำ progress ครบ 100 ถึงจะได้ 10 คะแนน
  • Hidden – แสดงให้ผู้เล่นรู้ไหมว่ามี Achievement นี้อยู่
  • Achievable More Than Once – ทำซ้ำได้มากกว่า 1 ครั้งไหม

6. ข้อมูลส่วน Add Language มีดังนี้

  • Language – ภาษา
  • Title – หัวข้อที่จะแสดงเวลาผู้เล่นทำสำเร็จครบ 100% แล้วมี status แสดงว่าสำเร็จแล้ว (Hero, Great Warrior ชื่ออะไรที่อยากให้คนเล่นเห็นก็ว่าไป)
  • Pre-earned Description – ก่อนจะได้ Achievement ให้แสดงข้อความข้างใต้ Title อย่างไร อาจใส่เป็นคำใบ้ว่าต้องทำอย่างไรถึงจะได้ Achievement นี้ก็ได้
  • Earned Description – หลังได้ Achievement ให้แสดงข้อความข้างใต้ Title ว่าอย่างไร
  • Image – รูปที่แสดง ขนาด 512×512 px หรือ 1024×1024 px โดยจะถูกตัดขอบเป็นวงกลมให้เสมอ

7. หลังกด Save แล้วก็ Add Achievement อื่นๆ วนซ้ำไปเรื่อยๆ จนกว่าจะครบตามต้องการ

8. เข้าเมนู App Store

gamecenter3

9. กดเพิ่ม version เกมอันใหม่แล้วเลือก Enable Game Center ตามรูปซะ และ Select All Achievement หรือ Leaderboard ที่สร้างมาให้ครบเพื่อรับการ Review

10. Submit App ตัวใหม่ที่ implement Game Center แล้วเรียบร้อยขึ้น Store

Unity Coding

สำหรับด้าน Coding ของ Unity ไม่จำเป็นต้องติดตั้ง Library ใดๆ เพิ่ม สามารถใช้งานได้เลยโดยมีเพียงเล็กน้อยดังนี้

using UnityEngine;
using UnityEngine.SocialPlatforms;
public class GameCenter : MonoBehaviour {
public static GameCenter instance;
public bool IsLogin = false;
void Awake() {
instance = this;
}
// Use this for initialization
void Start () {
// Authenticate and register a ProcessAuthentication callback
// This call needs to be made before we can proceed to other calls in the Social API
#if UNITY_IOS
GameCenterPlatform.ShowDefaultAchievementCompletionBanner(true);
Social.localUser.Authenticate(ProcessAuthentication);
#endif
}
// This function gets called when Authenticate completes
// Note that if the operation is successful, Social.localUser will contain data from the server.
void ProcessAuthentication(bool success)
{
if (success)
{
IsLogin = true;
}
}
}

Copy ไปสร้างไฟล์ใหม่ชื่อ Game Center แล้วลาก Script ไปแปะที่ Scene แรกสุดได้เลย ในส่วนนี้คือคำสั่ง Login user เข้า Game Center สำหรับคำสั่งที่จะส่ง progress ไปยัง Game Center ใช้แค่ดังนี้

Social.ReportProgress(achievementId, 100f, delegate(bool result) {
if (result)
Debug.Log("Successfully reported achievement progress");
});

ง่ายดายมากๆ เพียงส่ง string ตัวแปร achievementId ไปให้ตรงกับที่สร้างไว้บน iTune Connect และ parameter ตัวที่สองคือ progress ซึ่งจะมีได้ตั้งแต่ 0-100 เท่านั้น (ไม่ว่า Point Value จะเป็นเท่าไรก็ตาม) ถ้าทำสำเร็จจะมี popup เลื่อนมาแสดงว่าสำเร็จแล้ว

ในส่วนของการแสดง Game Center Interface ภายในเกมของเราทำได้โดยสั่ง

Social.ShowAchievementsUI() หรือ Social.ShowLeaderboardUI() ตามแต่ต้องการว่าจะแสดงอะไร

หากต้องการ Reset Achievement ที่ทำไปแล้วทั้งหมดทำได้โดยสั่งดังนี้

GameCenterPlatform.ResetAllAchievements( (resetResult) => {
Debug.Log( (resetResult) ? "Reset done." : "Reset failed." );
});

การทดสอบ

IMG_0152

สำหรับ iOS ตั้งแต่เวอร์ชั่น 9 เป็นต้นไป ไม่ต้องทำอะไรก็สามารถทดสอบได้เลย แต่หากเป็น iOS เวอร์ชั่นตำกว่า 9 จะต้องเข้าหน้า Setting -> Game Center เพื่อปรับ Sandbox ให้เป็น Enable ก่อนดังภาพ และต้อง Sign Out account game center เพื่อใช้งาน Account Sandbox ตอนเข้าเกม (ถ้ายังไม่มีต้องสร้างที่ iTune Connect เข้าเมนู Users and Roles -> Sandbox Testers) เมื่อเตรียมการเรียบร้อยก็เข้าเกมเราไปทดสอบ ลองดูเลย ถ้าเจอ popup Welcome to Game Center โผล่มาก็แสดงว่าสำเร็จ ถ้าไม่มีก็ต้องตรวจสอบขั้นตอนใหม่ว่ามีอะไรผิดพลาดบ้าง ขอให้โชคดีครับทุกท่าน :)

[Unity3D] เราจะแก้ปัญหา NSURLErrorDomain error -1012 ใน WWW class ของ Unity 5 ใน iOS ได้อย่างไร? by

30
May
0

เนื่องจากตอนนี้ Unity 5 ก็ออกมาสักพักใหญ่แล้ว แถมฟรีอีกตะหาก (ถ้ารายได้ไม่ถึงเป้า) เราก็ควรจะใช้ Unity 5 กันใช่ไหมครับ แต่ช่วงนี้ Unity 5 ได้ทำ bug (อันใหญ่หลวง) เอาไว้ นั่นคือหากเราใช้ WWW class เรียกไปที่ URL ใดๆ ที่เป็น https จะทำให้ไม่สามารถรับข้อมูลจาก URL นั้นๆ ได้เลย จะ WWW class จะแจ้ง error กลับมาว่า

The operation couldn’t be completed. (NSURLErrorDomain error -1012.)

ซึ่งเว็บเกมของผมเป็น HTTPS ทั้งหมดจึงกระทบเต็มๆ และบางคนอาจจะคิดว่าผมไม่พบปัญหานี้หรอก แต่ถ้าคุณต้องมีการเรียก Profile picture จาก  Facebook แล้วละก็ยังไงคุณก็จะถูกบังคับให้เรียกผ่าน HTTPS โดยอัตโนมัติ ถึง URL จะไม่ได้ระบุเป็น HTTPS  ก็ตาม เช่น http://graph.facebook.com/my_facebook_id/picture แต่สุดท้าย Facebook ก็จะ Redirect ไปยังที่อยู่รูปจริงๆ ที่เป็น HTTPS อยู่ดี และทำให้ไม่สามารถแสดงรูป profile facebook ได้ในที่สุด

จริงๆ แล้วปัญหานี้มีการแจ้งกันมาตั้งแต่เดือนมีนาคมแล้ว และ Unity ก็บอกว่าแก้ไปแล้วในเวอร์ชั่น 5.x.x แต่จนแล้วจนรอดก็ยังไม่ได้แก้จริงสักที ณ เวอร์ชั่นปัจจุบัน 5.0.1f ล่าสุดก็ยังไม่ได้แก้ ดังนั้นเราคงจะรอกันไม่ได้ ต้องหาวิธีแก้กันเอง โดยวิธีแก้ก็คือให้สร้างไฟล์ชื่อว่า CustomConnection.mm ขึ้นมา และใส่ code ด้านล่างลงไป

#include "Unity/WWWConnection.h"
@interface UnityWWWCustomRequestProvider : UnityWWWRequestDefaultProvider
{
}
+ (NSMutableURLRequest*)allocRequestForHTTPMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers;
@end
@implementation UnityWWWCustomRequestProvider
+ (NSMutableURLRequest*)allocRequestForHTTPMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers
{
NSMutableURLRequest* request = [super allocRequestForHTTPMethod:method url:url headers:headers];
// let's pretend for security reasons we dont want ANY cache nor cookies
request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
[request setHTTPShouldHandleCookies:NO];
return request;
}
@end
@interface UnityWWWCustomConnectionDelegate : UnityWWWConnectionSelfSignedCertDelegate
{
}
@end
@implementation UnityWWWCustomConnectionDelegate
- (NSCachedURLResponse*)connection:(NSURLConnection*)connection willCacheResponse:(NSCachedURLResponse*)cachedResponse
{
// we dont want caching
return nil;
}
- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response
{
[super connection:connection didReceiveResponse:response];
}
@end
IMPL_WWW_DELEGATE_SUBCLASS(UnityWWWCustomConnectionDelegate);
IMPL_WWW_REQUEST_PROVIDER(UnityWWWCustomRequestProvider);

จากนั้นเซพไปที่ Assets/Plugins/iOS/CustomConnection.mm เท่านี้เป็นอันจบ ไม่ต้องไป set path ใดๆ เพิ่มเติม Unity จะจัดการของมันเองต่ออัตโนมัติ โดยหลักการทำงานของมันคือการแก้ไข class WWW ของ Unity ด้วยตัวเราเองผ่าน Plugin เพื่อ bypass cache บางอย่างที่ WWW ทำงานผิดพลาด สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ Manual หน้านี้ครับ

ซึ่งวิธีแก้วิธีนี้ก็มาจากคนของ Unity นั่นแหละมาโพสต์บอกใน Forum ของเขาเองที่มีคนถาม แต่ด้วยเหตุผลประการใดก็ไม่อาจทราบได้ ตัว Unity หลักๆ กลับไม่ถูกแก้ไขเสียทีจนเราต้องมาแก้ไขเองนี่แหละ เท่านี้เป็นอันจบพิธีครับ :)

[Unity] วิธีเพิ่ม frameworks หรือ library ให้กับ XCode โดยอัตโนมัติ by

30
Nov
0

เคยไหมที่ Build project Unity for iOS แล้วต้องมา add framework/library เพิ่มเอง? Build กี่ทีก็ต้องมา add เองทุกครั้ง วันนี้ผมมีวิธีช่วยให้ไม่ต้องทำอย่างนั้นแล้ว :)

หมายเหตุ: ก่อนอื่นต้องบอกก่อนว่าผมใช้ Library Facebook for Unity ในการทำอยู่แล้วจึงสามารถทำแบบนี้ได้ หากใครไม่ได้ใช้อาจจะต้องดึงไฟล์บางส่วนมาใช้เอง หรือใช้ Library mod-pbxproj แทน แต่ผมลองแล้วมันไม่สำเร็จ (ฮ่าๆ)

วิธีการก็ง่ายมาก ถ้าใช้ Library Facebook for Unity อยู่แล้ว ให้เข้าไปแก้ไฟล์ Assets/Facebook/Editor/iOS/fixup.projmods โดยหน้าตาจะเป็นดังนี้


{
"group": "Facebook",
"patches": [],
"libs": [
"libsqlite3.0.dylib:weak",
"Facebook/Editor/iOS/FacebookSDK/FacebookSDK.a:",
],
"librarysearchpaths": [
"Facebook/Editor/iOS/FacebookSDK/",
],
"frameworks": [
"Accounts.framework:weak",
"AdSupport.framework:weak",
"Social.framework:weak",
"Security.framework:weak",
],
"headerpaths": [
"Facebook/Editor/iOS",
"Facebook/Scripts"
],
"files": [
"Facebook/Editor/iOS/FbUnityInterface.mm",
"Facebook/Editor/iOS/FbUnityInterface.h",
"Facebook/Scripts/NativeDialogModes.cs",
],
"folders": [],
"excludes": ["^.*\\.meta$", "^.*\\.mdown^", "^.*\\.pdf$"]
}

จะเป็นไฟล์ JSON เรามาดูทีละส่วน

  • libs : ให้ใส่พวกไฟล์ .a หรือ .dylib (อย่าลืมใส่ :weak, : ตามตัวอย่าง)
  • frameworks: ใส่พวก .framework (อย่าลืมใส่ :weak ตามตัวอย่าง)
  • files: ใส่พวก .mm, .h, .cs

เพียงเราเพิ่ม comma เขียนต่ออีกบรรทัดในแต่ละส่วน แล้วสั่ง Build เราก็จะได้ Project XCode ที่ไม่ต้องมา add library เองให้เมื่อยอีกต่อไป ง่ายมากๆ เลยใช่ไหม :) ตัวอย่างสิ่งที่ผมเพิ่มเข้าไปตามด้านล่าง


{
"group": "Facebook",
"patches": [],
"libs": [
"libsqlite3.0.dylib:weak",
"libz.dylib:weak",
"Facebook/Editor/iOS/FacebookSDK/FacebookSDK.a:",
],
"librarysearchpaths": [
"Facebook/Editor/iOS/FacebookSDK/",
],
"frameworks": [
"Accounts.framework:weak",
"AdSupport.framework:weak",
"Social.framework:weak",
"Security.framework:weak",
"CoreTelephony.framework:weak",
"MessageUI.framework:weak",
"EventKitUI.framework:weak",
"EventKit.framework:weak",
"CoreData.framework:weak"
],
"headerpaths": [
"Facebook/Editor/iOS",
"Facebook/Scripts"
],
"files": [
"Facebook/Editor/iOS/FbUnityInterface.mm",
"Facebook/Editor/iOS/FbUnityInterface.h",
"Facebook/Scripts/NativeDialogModes.cs",
],
"folders": [],
"excludes": ["^.*\\.meta$", "^.*\\.mdown^", "^.*\\.pdf$"]
}

การป้องกันการ hack In-app Purchase (2) by

31
Oct
1

ต่อจากบทความที่แล้ว วันนี้เรามาดูขั้นตอนการ verify จริงๆ กัน มีดังนี้

Android

  1. Login เข้า https://play.google.com/apps/publish/
  2. เลือก Settings (Icon ฟันเฟือง)
  3. เลือก API Access แล้วกดเปิดใช้งาน Google Play Android Developer API
  4. ที่หัวข้อ Linked Project ใน API Access หลังเปิดใช้งานให้คลิกที่ Google Play Android Developer
  5. คลิก APIs & auth
  6. คลิก Credentials
  7. คลิกปุ่ม Create new Client ID
  8. เลือก Application Type เป็น Web Application
  9. ช่อง Authorized Javascript Origins และ Authorized Redirect URI ใส่เป็น http://google.com หรืออะไรก็ได้ทั้งคู่ แต่ให้จำค่าในช่องนี้ไว้
  10. จด Client ID กับ Client Secret เอาไว้
  11. กด Create Client ID
  12. ใส่ช่อง url ใน Web Browser ไปว่า
    https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=...&client_id=...
    (แก้ใข … เป็นข้อมูลจากข้อ 9-10)
  13. คลิก Allow Access
  14. Browser จะ redirect ไป google.com (หรือเว็บอื่นตาม redirect_uri ที่ตั้งไว้) แต่เราไม่ต้องสนใจตัวเนื้อหาในเว็บ ให้ดูที่ URL ที่มัน redirect ไปสังเกตดูจะพบตัวแปร code ใน url ของ browser หน้าตาประมาณนี้ “4/eWdxD7b-YSQ5CNNb-c2iI83KQx19.wp6198ti5Zc7dJ3UXOl0T3aRLxQmbwI.” (เป็นแค่ข้อมูลตัวอย่าง ต้องใช้ของคุณเอง) ก็ให้ copy ข้อมูลส่วนนี้เก็บเอาไว้
  15. ลง Google Chrome Extension Postman (หรือ extension อื่นๆ เอาไว้ให้ทดสอบยิง GET/POST ผ่าน web browser ได้ง่ายๆ)
  16. เปิด Postman แล้วเลือกประเภทการยิง request เป็น POST
  17. เลือกประเภทเป็น form-data แล้วกรอก URL ไปว่า
    https://accounts.google.com/o/oauth2/token
    โดยกรอกข้อมูลในช่อง key, value ข้างใต้ดังนี้ (key:value)

    • grant_type : authorization_code
    • code : <ข้อมูลจากข้อ 14>
    • client_id : <ข้อมูลจากข้อ 10>
    • client_secret : <ข้อมูลจากข้อ 10>
    • redirect_uri : <ข้อมูลจากข้อ 9>
  18. กด Send จะได้รับข้อมูลมาเป็น JSON ให้ Copy ส่วนของ refresh_token เก็บไว้ใช้งานตลอดไปใน server ของเราเองเลย (refresh_token ไม่มีวันหมดอายุ ไม่ต้องขอใหม่ ใช้ได้ตลอด)
  19. (ตั้งแต่ข้อนี้เป็นต้นไปให้คุณทดลองใช้ postman ยิงไปดูก่อน หลังจากทำจนเสร็จแล้วเห็นว่าใช้งานได้ ให้ทำใหม่ตั้งแต่ข้อนี้เป็น code ฝั่ง server ของคุณเองโดยอาจยิง Curl ไปเพื่อให้กระบวนการขอ access_token เป็นไปโดยอัตโนมัติไม่ต้องใช้งานผ่าน browser เพื่อตรวจสอบความถูกต้องของการสั่งซื้อกับ Server Google) ใช้ postman เลือกยิงแบบ POST เหมือนเดิมไปที่ url
    https://accounts.google.com/o/oauth2/token
    โดยกรอก key:value ดังนี้

    • grant_type : refresh_token
    • client_id : <ข้อมูลจากข้อ 10>
    • client_secret : <ข้อมูลจากข้อ 10>
    • refresh_token: <ข้อมูลจากข้อ 18>
  20. copy ข้อมูลส่วนของ access_token เก็บไว้
  21. ใช้ postman เลือกยิง url แบบ GET ไปที่
    https://www.googleapis.com/androidpublisher/v2/applications/<packageName>/purchases/products/<product_id>/tokens/<token>?access_token=<access_token>

    • packageName - ชื่อ package ของ app เช่น com.lvup.pokdeng
    • product_id - product_id ที่สร้างจากบทความที่แล้ว
    • token - purchase token ที่ได้จาก app ฝั่ง client (มื่อถือผู้ใช้)หลังซื้อสำเร็จที่เราสั่งให้ยิงมาที่ server ของเราเพื่อตรวจสอบ (คิดซะว่าเป็น transaction id ที่ทาง google สร้างขึ้น)
    • access_token – ข้อมูลจากข้อ 20
  22. ได้ผลลัพธ์มาหน้าตาแบบนี้
    {
      "kind": "androidpublisher#productPurchase", // ค่าคงที่มาแบบนี้เสมอทุกครั้ง
      "purchaseTimeMillis": long, // เวลาที่สั่งซื้อ เป็น milliseconds
      "purchaseState": integer, // สถานะการสั่งซื้อ 0 เป็นซื้อสำเร็จ และ 1 คือยกเลิกการสั่งซื้อ
      "consumptionState": integer, // สถานะการใช้งาน 0 คือรอการใช้งานและ 1 คือใช้งานไปแล้ว
      "developerPayload": string // ค่าที่เราส่งมาจากฝั่ง client ที่จะเก็บใน server ของ google ไว้ด้วย เช่น transaction id ของเราที่สร้างขึ้นมาเอง
    }
  23. เรียบร้อยจ้า

iOS

  1. ข้อมูลจาก client (มือถือผู้ใช้) จะมาในรูปแบบ payload ซึ่งเป็น string json ยาวๆ ก้อนหนึ่งถูก encode ด้วย base64 เอาไว้ ให้ยิงข้อมูลจาก client (มือถือผู้ใช้) มายัง server
  2. ที่ฝั่ง server ให้เรายิงแบบ POST ไปที่ url

    https://sandbox.itunes.apple.com/verifyReceipt

    (สำหรับ transaction ที่ใช้ทดสอบ) หรือ

    https://buy.itunes.apple.com/verifyReceipt

    สำหรับ server จริง ซึ่งถ้าใช้ postman ในการทดสอบยิงจะต้องเปลี่ยนชนิดที่เลือกจาก form-data เป็น raw แล้วเอาข้อมูล json string ทั้งก้อนที่ได้รับมา มาเปลี่ยนจาก “receipt_base64″ เป็น “receipt-data” แล้วยิงเข้า  url ที่กล่าวไว้ จะได้รับข้อมูลมาเป็น JSON ถ้า status เป็น 0 แสดงว่ายิงสำเร็จ จะมีข้อมูลอื่นๆ ติดมาด้วยโดยให้เช็คจาก array ชื่อ in_app เป็นหลัก และดูที่สมาชิก array ตัวสุดท้าย จะเป็นรายการล่าสุดที่พึ่งสั่งซื้อจริงๆ (หาก array มีข้อมูลมากกว่า 1 บางครั้งจะมีข้อมูลการสั่งซื้อครั้งก่อนๆ ให้มาด้วย จึงต้องตรวจสอบจากสมาชิกตัวสุดท้ายของ array เสมอ) โดยมีข้อมูลที่น่าเก็บไว้คือ product_id, transaction_id และ purchase_date_ms (หากมีคำว่า original อาจเป็นข้อมูลการสั่งซื้อครั้งแรก ไม่ใช่ข้อมูลการสั่งซื้อปัจจุบัน)

  3. เสร็จแล้วจ้า

ข้อมูลอ้างอิง:

https://developers.google.com/android-publisher/api-ref/purchases/products/get

https://developers.google.com/android-publisher/authorization

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

Google Analytics Plugin for Unity(Both IOS and Android) by

31
Oct
0

วันนี้เราจะมาแนะนำ วิธี Setup และวิธีใช้ Plugin ตัวนึงนะครับ ที่มีประโยชน์มากๆ และใช้ง่ายมากๆ เจ้า Plugin ตัวนี้ก็มีชื่อว่า Google Analytics Plugin for Unity นะครับ ตัวที่เราจะแนะนำนี้เป็น Version 3(Beta) นะครับ

  • ก่อนจะเริ่มคุณก็ต้องมี Google Analytics Account กันก่อนนะครับ ซึ่งเราจะไม่พูดถึงตรงนี้นะครับ- ต่อมาให้ไปโหลดเจ้า Plugin ตัวนี้ ที่นี่ ครับ
  • ถ้าหาก App ของคุณมีการขอ Permission ในการ ใช้ Internet อยู่แล้ว ก็ข้ามขั้นตอนนี้ไปได้เลยนะครับ แต่หากยังไม่มีการขอ Permission ตรงนี้ก็ให้ไปใส่แบบนี้เลยครับ
    • Android
      ให้เอา CODE นี้ไปใส่ใน AndroidManifest.xml ที่/Assets/Plugins/Android/ ข้างบน tag

       

    • IOS
      ให้นำ libraries ข่างล่างนี้ไปใส่ใน Xcode project ของคุณนะครับ:
      AdSupport.framework
      CoreData.framework
      SystemConfiguration.framework
      libz.dylib
      libsqlite3.dylib
  • ลาก prefab ชื่อ GAv3.prefab ที่อยู่ใน Folder Assets/Plugins/GoogleAnalyticsV3 ไปใส่ใน Project.
  • หน้าตา Inspector ของ Prefab GAv3 จะเป็นแบบนี้นะครับ
    Untitled
    จะอธิบายว่าในแต่ละช่องคืออะไร และควรใส่อะไรลงไปบ้างนะครับ

    • Android Tracking Code – คือ Tracking Code ของ Android ครับ ก็ให้ใส่ Tracking Code ที่ได้จาก Google Analytics ครับ ถ้าหากไม่ใส่ และ Build Application ลงไปบน Android มันก็จะไม่มีการ Tracking ครับ
    • IOS Tracking Code – คือ Tracking Code ของ IOS ครับ ก็ให้ใส่ Tracking Code ที่ได้จาก Google Analytics ครับ ถ้าหากไม่ใส่ และ Build Application ลงไปบน IOS มันก็จะไม่มีการ Tracking ครับ
    • Other Tracking Code – คือ Tracking Code ของอื่นๆครับ เช่น PC หรือ Unity Editor ครับ ก็ให้ใส่ Tracking Code ที่ได้จาก Google Analytics ครับ ถ้าหากไม่ใส่มันก็จะไม่มีการ Tracking ครับ
    • Product Name – คือชื่อที่จะไปปรากฏอยู่ใน Google Analytics ครับ
    • Bundle Identifier – ให้ไปเอามาจาก Build Settings ->Player Settings->Other Settings ครับ
    • Bundle Version – ให้ไปเอามาจาก Build Settings ->Player Settings->Other Settings ครับ
    • Dispatch Period – อันนี้ไม่ต้องไปยุ่งกับมันครับ
    • Sample Frequency – อันนี้ไม่ต้องไปยุ่งกับมันครับ
    • Log Level – คือ config ที่จะให้ตัว Plugin มันพ่น Log ออกมาในระดับไหนครับ
      • ERROR – พ่นแต่ Error ครับ
      • WARNING – พ่น Error และ Warning ครับ
      • INFO – พ่น Error, Warning และ Info ครับ
      • VERBOSE – พ่นทุกอย่างในโลกครับ
    • Anonymize IP – ไม่ต้องติ๊กครับ
    • Dry Run – ไม่ต้องติ๊กครับ
    • Session Timeout – เวลาของ Session ครับ ใช้ 1800 แหละดีแล้วครับ
  • สร้าง C# Script ชื่อ และ Copy Code นี้ไปใส่

    public class GoogleAnalytics : MonoBehaviour {

    public static GoogleAnalytics instance;

    public GoogleAnalyticsV3 googleAnalytics;

    void Awake(){
    DontDestroyOnLoad (gameObject);

    instance = this;
    }

    public void LogScreen(string title){
    googleAnalytics.LogScreen(title);
    }
    }

  • ต่อไปเป็นวิธีการใช้นะครับ การใช้ก็ง่ายนิดเดียวครับ ใช้แบบนี้ GoogleAnalytics.instance.LogScreen(“Enter You Tracking String Here”); ครับ
กู้เงิน | เศรษฐกิจพอเพียง | สินเชื่อบุคคล | สมัครบัตรกดเงินสด | สินเชื่อ | เงินกู้ด่วน | ยืมเงินทรูมูฟ | เงินด่วนนอกระบบ