API Sự kiện Máy chủ đến Máy chủ

  • Nhà phát triển

Giới thiệu

API này cho phép bạn gửi các sự kiện xảy ra bên ngoài ứng dụng hoặc xảy ra trong ứng dụng nhưng không được gửi qua AppsFlyer SDK. Ví dụ, nếu bạn có cả giao diện web và di động, bạn có thể ghi lại tất cả các sự kiện từ hai phương tiện này trong AppsFlyer.

 Lưu ý

Loại nội dung phải được đặt là application/json.

URL:https://api2.appsflyer.com/inappevent/{app_id}

Ví dụ Android: https://api2.appsflyer.com/inappevent/com.appsflyer.myapp

Ví dụ iOShttps://api2.appsflyer.com/inappevent/id123456789

Điều quan trọng cần đặc biệt chú ý là ID ứng dụng trên iOS chứa "id" dẫn đầu trước ID, mặt khác yêu cầu kết thúc với HTTPS 200 OK, nhưng sự kiện không được đăng ký.

 Quan trọng!

Kích thước tối đa của tải trọng JSON không được vượt quá 1K.

Tải trọng JSON phải được chuyển thành một chuỗi và giá trị sự kiện phải được xâu chuỗi.

Hãy chắc chắn rằng tải trọng JSON bao gồm tham số "af_events_api" :"true"
Tham số này đảm bảo sự kiện được cấu trúc như một sự kiện phong phú cho phép tự động lập bản đồ các giá trị sự kiện tới các đối tác khác nhau.

Xem những ví dụ dưới đây.

Phương thức: POST

Tiêu đề - "authentication"= {dev-key}

dev key được tìm thấy trong Dashboard >> App Settings >> Dev Key

iOSAndroid
{
  "appsflyer_id": {AppsFlyer Device ID }, // e.g. 1415211453000-6513894
  "idfa":{idfa},
  "customer_user_id": {customer_user_id}, // Customer User ID optional parameter
  "bundle_id":{bundle_id},
  "eventName": {The event name}, // e.g. "af_purchase"
  "eventValue": {A JSON containing a rich in-app event value - must be stringfied},
  "{

    \"af_revenue\":\"6\",
    \"af_content_type\":\"wallets\",
    \"af_content_id\":\"15854\"

  }",
  "eventCurrency": {Event currency}, // e.g "USD"
  "ip": {device IP},
  "eventTime": {Event timestamp in UTC +0}, // e.g "2014-05-15 12:17:00.000"
  "af_events_api" :"true"
}

 Lưu ý

Tất cả Ký tự dự trữ (https://tools.ietf.org/html/rfc3986#section-2.1) phải được mã hóa phần trăm trước khi tạo ra URI.

Tham số

  1. Các tham số bắt buộcappsflyer_id (AppsFlyer Device id), eventName, eventValue và af_events_api
  2. Các tham số đề xuất: idfacho iOS vàadvertising_idcho Android.
    Nếu bạn muốn ánh xạ các sự kiện trong ứng dụng của bạn từ người dùng tự nhiên với các đối tác bên ngoài, các tham số này là BẮT BUỘC. Ngoài ra, một số tính năng như Khán giả dựa vào ID thiết bị để phân khúc người dùng của bạn và cập nhật mạng.
  3. Tùy chọn - eventValue có thể cùng với giá trị rỗng, tức là: "eventValue":"", (không cần khoảng trắng)
  4. Địa chỉ IP - Tùy chọn (ip) nên là IP của thiết bị di động (trong khi xảy ra sự kiện)
  5. Tùy chọn - Trường customer user ID (customer_user_id) là tham số xác định người dùng, được ánh xạ tới trường Customer User ID trong Báo cáo thô. Customer User ID SDK API tự động đính kèm giá trị này vào tất cả các sự kiện trong ứng dụng mà SDK sinh ra. Hãy đảm bảo có trường này trong TẤT CẢ các sự kiện S2S của bạn để có chức năng tương tự.

Chuẩn bị Dữ liệu cho các Thông số

Back-end Logic là cần thiết để có được giá trị nhất định cho các thông số được đề cập ở trên. Dưới đây bạn có thể tìm thấy luồng được đề xuất để có được các giá trị này:

Liên kết (map) ID AppsFlyer với Customer User ID

AppsFlyer ID là một thông số bắt buộc khi gửi các in-app events thông qua server-to-server. Để giúp bạn dễ dàng biết được người dùng nào đã thực hiện sự kiện nào, hãy triển khai luồng bên dưới:

  1. Thiết lập customer user ID khi người dùng cài đặt ứng dụng
  2. Tải về báo cáo dữ liệu thô dành cho các lượt cài đặt thông qua export data hoặc Pull API
  3. Nhận AppsFlyer ID bằng cách liên kết (mapping) customer user ID trong các hệ thống nội bộ của bạn với customer user ID trong báo cáo dữ liệu thô
  4. Liên kết AppsFlyer ID với customer user ID trong hệ thống nội bộ của bạn (điều này là quan trọng cho việc sử dụng trong tương lai)

Khi liên kết AppsFlyer ID với customer user ID nội bộ của mình, bạn có thể dễ dàng biết người dùng nào đã thực hiện sự kiện nào. Sau đó, bạn có thể lấy AppsFlyer ID và các giá trị khác (giá trị sự kiện, tiền tệ sự kiện, thời gian sự kiện, v.v.) và gửi sử kiện trong ứng dụng máy chủ đến máy chủ.

Xác định thời gian Sự kiện

Các sự kiện Máy chủ tới Máy chủ có thể được gửi trong thời gian thực hoặc với nhãn thời gian sự kiện.

Bạn có thể dùng tham số eventTime tùy chọn để chỉ định thời gian xảy ra sự kiện (theo múi giờ UTC +0). Nếu không có tham số trong tin nhắn, AppsFlyer sử dụng dấu thời gian từ tin nhắn HTTPS nhận được. 

eventTime format is: "yyyy-MM-dd HH:mm:ss.SSS" (e.g. "2014-05-15 12:17:00.000")

Khi gửi các sự kiện với dấu thời gian, để các sự kiện này được ghi lại với dấu thời gian thực (khi chúng thực sự diễn ra), tất cả chúng phải được gửi tới AppsFlyer trước 02:00 sáng (giờ UTC +0) của ngày hôm sau.

Các sự kiện với dấu thời gian quá khứ, không được gửi trước 2:00 sáng, được ghi lại theo thời gian mà chúng được gửi.

Sự kiện với Nhãn thời gian trước 2:00 sáng, giờ UTC +0

Sự kiện được kích hoạt: ngày 2/5 lúc 22:00

Sự kiện được gửi tới các máy chủ của AppsFlyer: ngày 3/5 lúc 01:00

Sự kiện được ghi lại trong nền tảng của AppsFlyer theo thời gian thực mà sự kiện đã xảy ra (ngày 2/5 lúc 22:00).

Sự kiện với Nhãn thời gian sau 2:00 sáng, giờ UTC +0

Sự kiện được kích hoạt: ngày 2/5 lúc 22:00

Sự kiện được gửi tới các máy chủ của AppsFlyer: ngày 4 /5 lúc 09:00

Sự kiện được ghi lại trong nền tảng của AppsFlyer theo thời gian mà nó được gửi tới máy chủ AppsFlyer và không phải thời gian mà sự kiện đã xảy ra (ngày 4 tháng 5, lúc 09:00).

Sự kiện với Nhãn thời gian tương lai

Sự kiện gửi với nhãn thời gian trong tương lai luôn được ghi lại trong AppsFlyer theo thời gian chúng được gửi đến AppsFlyer chứ không phải nhãn thời gian sự kiện trong tải trọng.

Xác định Thời gian Sự kiện - Dòng thời gian Trực quan

Sự kiện Server-to-Server

 Lưu ý

Số lượng yêu cầu S2S tối đa là 60K mỗi phút hoặc 1K mỗi giây. Hãy liên hệ với Nhà quản lý Sự thành công của Khách hàng nếu bạn có yêu cầu khác.

Mã hoàn trả dịch vụ

200
OK khi yêu cầu được xử lý bởi hệ thống của Appsflyer.
401
unauthorized khi khóa được cung cấp trong đầu trang xác thực không phải là dev-key cho ứng dụng này.
400
Bad request khi yêu cầu thất bại trong ít nhất một trong các tiêu chí xác thực
500
Internal server error điều này cho biết có lỗi máy chủ

Nếu các máy chủ của bạn được bảo vệ bởi tường lửa, bạn sẽ cần liệt kê vào danh sách trắng các hồi đáp đến từ Phạm vi địa chỉ IP AWS để nhận các tin nhắn trả về.

Ví dụ về Nội dung Yêu cầu

{
  "appsflyer_id": "1415211453000-6513894",
	"advertising_id": "38412345-8cf0-aa78-b23e-10b96e40000d",
	"eventName": "af_purchase",
	"eventValue": 
	"{
		\"af_revenue\": \"6\",
		\"af_content_type\": \"wallets\",
		\"af_content_id\": \"15854\",
		\"af_quantity\" :\"1\"
   }",
	"eventCurrency": "USD",
	"ip": "1.2.3.4",
	"eventTime": "2014-05-15 12:17:00.000",
	"af_events_api" :"true"
}


Trong trường hợp này, AppsFlyer nhận được một sự kiện trong ứng dụng S2S, đại diện cho sự kiện mua hàng có doanh thu, cũng như các thuộc tính bổ sung, chẳng hạn như loại nội dung, v.v.

Trường hợp đặc biệt

Gửi doanh thu âm

Nếu bạn muốn gửi sự kiện có doanh thu âm (đối với các sự kiện như đơn hàng bị hủy hoặc hoàn tiền), bạn có thể chỉ định giá trị âm trong thông số doanh thu. Ví dụ:

{
  "appsflyer_id": "1415211453000-6513894",
	"advertising_id": "38412345-8cf0-aa78-b23e-10b96e40000d",
	"eventName": "cancel_purchase",
	"eventValue": 
	"{
		\"af_revenue\": \"-6\",
		\"af_content_type\": \"wallets\",
		\"af_content_id\": \"15854\",
		\"af_quantity\" :\"1\"
   }",
	"eventCurrency": "USD",
	"ip": "1.2.3.4",
	"eventTime": "2014-05-15 12:17:00.000",
	"af_events_api" :"true"
}

Gửi các sự kiện mà không có giá trị sự kiện

Nếu bạn muốn gửi các sự kiện mà không có giá trị sự kiện, chỉ cần chuyển một chuỗi rỗng tới giá trị sự kiện: "event_value":""

Sau đó, theo cấu hình của nhà quảng cáo, AppsFlyer có thể gửi các sự kiện trong ứng dụng phong phú cho các nguồn phương tiện để nhắm mục tiêu nâng cao, tối ưu hóa và tạo đối tượng.

Tìm nạp ID thiết bị AppsFlyer

appsflyer_id là tham số bắt buộc trong các tin nhắn sự kiện máy chủ tới máy chủ. AppsFlyer sử dụng tham số này để phân bổ sự kiện tới thiết bị ban đầu và nguồn phương tiện được phân bổ. 

Có rất nhiều cách lấy ID này.

  1. Từ thiết bị di động sử dụng SDK API của AppsFlyer (Android / iOS)
  2. Thông qua API Pull hoặc Push (nhấp vào liên kết để biết thêm thông tin về Push API hoặc Pull API)
  3. Xuất báo cáo cài đặt dữ liệu thô

 Lời khuyên

Khi thử nghiệm tin nhắn S2S, nếu bạn đang sử dụng dữ liệu thô, API push hoặc pull, hãy tìm bản ghi có nguồn phương tiện "s2s_test". Đây là thiết bị thử nghiệm của bạn và ID thiết bị AppsFlyer là ID bạn cần.

Sự khác biệt giữa Tự nhiên và Không tự nhiên

Khi bạn gửi các sự kiện trong ứng dụng S2S, AppsFlyer sẽ tự động liên kết dữ liệu bổ sung với các sự kiện này. Các dữ liệu bổ sung xuất phát từ sự kiện cài đặt trước các sự kiện trong ứng dụng. 

Điều này có nghĩa rằng một số dữ liệu mà AppsFlyer liên kết với các sự kiện trong ứng dụng S2S không tự nhiên thì không được liên kết với các sự kiện trong ứng dụng S2S tự nhiên.

 Ví dụ

Ví dụ, nếu bạn so sánh báo cáo dữ liệu thô của các sự kiện trong ứng dụng S2S tự nhiên và không tự nhiên, các sự kiện không tự nhiên có chứa dữ liệu mà các sự kiện trong ứng dụng tự nhiên không có.

Các sự kiện trong ứng dụng không tự nhiên có chứa dữ liệu về nguồn phương tiện, chiến dịch, loại chạm được phân bổ và thời gian chạm được phân bổ.

Mặt khác, các sự kiện trong ứng dụng tự nhiên đi theo một cài đặt tự nhiên. Cài đặt tự nhiên không có dữ liệu liên quan đến chiến dịch, các nguồn phương tiện hoặc loại chạm và thời gian chạm được phân bổ. 

Bài viết này có hữu ích không?
4 trên 12 thấy hữu ích