服務端接入文檔
你可以直接使用 REST API 進行接入,可以在不依賴 SDK 的情況下直接將數據上報到 TapDB。
#
1.上報事件和屬性數據傳輸的格式和含義請參考數據規則。
#
1.1.上報地址請將數據上報到如下 URL
https://e.tapdb.net/event
#
1.2.上報內容首先請按照數據規則構造 json 字符串,例如
{ "index": "test_appid", "device_id": "test_device_id", "user_id": "test_user_id", "type": "track", "name": "#EventName", "properties": { "os": "Android", "device_id1": "000", "device_id2": "000", "device_id3": "000", "device_id4": "000", "width": 256, "height": 768, "device_model": "pixel", "os_version": "Android 10.0", "provider": "O2", "network": "1", "channel": "Google Play", "app_version": "1.0", "sdk_version": "2.8.0", "#custem_event_property_name": "CustomEventPropertyValue" }}
對以上數據去掉空格、換行和回車符進行 urlencode
%7B%22index%22%3A%22test_appid%22%2C%22device_id%22%3A%22test_device_id%22%2C%22user_id%22%3A%22test_user_id%22%2C%22type%22%3A%22track%22%2C%22name%22%3A%22%23EventName%22%2C%22properties%22%3A%7B%22os%22%3A%22Android%22%2C%22device_id1%22%3A%22000%22%2C%22device_id2%22%3A%22000%22%2C%22device_id3%22%3A%22000%22%2C%22device_id4%22%3A%22000%22%2C%22width%22%3A256%2C%22height%22%3A768%2C%22device_model%22%3A%22pixel%22%2C%22os_version%22%3A%22Android10.0%22%2C%22provider%22%3A%22O2%22%2C%22network%22%3A%221%22%2C%22channel%22%3A%22GooglePlay%22%2C%22app_version%22%3A%221.0%22%2C%22sdk_version%22%3A%222.8.0%22%2C%22%23custem_event_property_name%22%3A%22CustomEventPropertyValue%22%7D%7D
將編碼後的數據使用 POST 提交到上報地址。
#
1.3.返回如果返回 Response Code 為 200,且返回內容為1
,則代表數據上報成功,請在埋點管理中進一步查看事件的寫入情況。
#
1.4.常見問題- 若當前事件的主體並非設備或賬號,device_id 和 user_id 可以傳入任意一個固定值
- 為了保證服務端上報的事件也能使用設備維度進行分析,建議在客戶端調用 SDK 的
GetDeviceID
接口取得 SDK 為該設備生產的唯一 ID 並上報到 App 的服務端
#
2.特殊類型信息上報#
2.1.上報在線人數由於 SDK 無法推送準確的在線數據,這裡提供服務端在線數據推送接口。遊戲服務端可以每隔 5 分鐘自行統計在線人數,通過接口推送到 TapDB。TapDB 進行數據匯總展現。
注意:在線人數使用 json 格式上報,這與其他通用事件上報的格式有差別,請注意區分。
接口:https://se.tapdb.net/tapdb/online方法:POST格式:json必需頭信息:Content-Type: application/json
請求內容:
參數名 | 參數類型 | 參數說明 |
---|---|---|
appid | string | 遊戲的 APPID |
onlines | array | 多條在線數據(最多 100 條) |
其中 onlines 數組的結構為
參數名 | 參數類型 | 參數說明 |
---|---|---|
server | string | 服務器。TapDB 對同一服務器每一個自然 5 分鐘僅接受一次數據 |
online | number | 在線人數 |
timestamp | number | 當前統計數據的時間戳(秒)。TapDB 會按照自然 5 分鐘進行數據對齊 |
示例:
{"appid":"gkjasd13bbsa1sdk","onlines":[{ "server":"s1", "online":123, "timestamp":1489739590},{ "server":"s2", "online":188, "timestamp":1489739560}]}
成功判斷:返回的 HTTP Code 為 200 時認為發送成功,否則認為失敗
#
2.2.上報充值記錄由於 SDK 推送可能會不太準確,這裡提供服務端充值推送方法。需要忽略掉 SDK 中的相關充值推送接口。
接口:https://e.tapdb.net/event
內容(注意後面還需要處理一下):
{ "module": "GameAnalysis", // 固定參數 "ip": "8.8.8.8", // 可選。充值用戶的 IP "name": "charge", // 固定參數 "index": "APPID", // 必需。注意 APPID 需要被替換成 TapDB 的 appid "identify": "userId", // 必需。用戶 ID。必須和 SDK 的 setUser 接口傳遞的 userId 一樣,並且該用戶已經通過 SDK 接口進行過推送 "properties": { "order_id": "100000", // 可選。長度大於 0 並小於等於 256。訂單 ID。傳遞訂單 ID 可進行排重,防止計算多次 "amount": 100, // 必需。大於 0 並小於等於 100000000000。充值金額。單位分,即無論什麼幣種,都需要乘以 100 "virtual_currency_amount": 100, //獲贈虛擬幣數量,必傳,可為 0 "currency_type": "CNY", // 可選。貨幣類型。國際通行三字母表示法,為空時默認 CNY。參考:人民幣 CNY,美元 USD;歐元 EUR "product": "item1", // 可選。長度大於 0 並小於等於 256。商品名稱 "payment": "alipay" // 可選。長度大於 0 並小於等於 256。充值渠道 }}
假如游戲的 appid 為 abcd1234。構建出 json 字符串後,去掉空格和換行符,然後再進行一次 urlencode。再把結果作為 POST 數據推送 先替換換行符和空格,變成:
{"module":"GameAnalysis","name":"charge","index":"abcd1234","identify":"user_id","properties":{"order_id":"100000","amount":100,"virtual_currency_amount":100,"currency_type":"CNY","product":"item1","payment":"alipay"}}
然後 urlencode,變成如下形式。某些版本的 urlencode 可能會把':'和','進行編碼,不會影響實際使用。
%7B%22module%22:%22GameAnalysis%22,%22name%22:%22charge%22,%22index%22:%22abcd1234%22,%22identify%22:%22user_id%22,%22properties%22:%7B%22order_id%22:%22100000%22,%22amount%22:100,%22virtual_currency_amount%22:100,%22currency_type%22:%22CNY%22,%22product%22:%22item1%22,%22payment%22:%22alipay%22%7D%7D
成功判斷:返回的 HTTP Code 為 200 時認為發送成功,否則認為失敗。