Khái quát: Sử dụng URI để nhận báo cáo hợp nhất AppsFlyer của bạn dưới dạng tệp tin CSV.
Bạn đang tìm kiếm dữ liệu thô API Pull?
Đặc điểm của dữ liệu hợp nhất API Pull
- Báo cáo trả về dưới dạng tệp tin CSV.
- Tốc độ cập nhật dữ liệu giống như báo cáo tương đương trên trang Xuất Dữ liệu và trang bảng điều khiển Tổng quan. Xin lưu ý rằng chi phí có thể cập nhật với độ trễ vài giờ và điều này phụ thuộc vào đối tác cung cấp dữ liệu chi phí.
- Lọc theo các tùy chọn có sẵn: Nguồn truyền thông và phạm vi ngày.
- Các khả năng khác trong API Pull là:
- Có khả năng lọc theo kiểu tiếp xúc phân bổ
- Có thể lựa chọn múi giờ
- API Pull phù hợp cho người dùng tài khoản và nhà phát triển BI sử dụng;
- Người dùng tài khoản nhận báo cáo bằng cách dán URI vào trình duyệt của họ. Các mẫu URI có sẵn trong Bảng điều khiển. Đi đến Integration > API access.
- Nhà phát triển BI lấy báo cáo bằng cách nhúng các URI vào tập lệnh.
danh mục | UA | Nhắm mục tiêu lại* | Protect360 |
---|---|---|---|
Đối tác (nguồn truyền thông) | ✓ | ✓ | ✓ |
Đối tác theo ngày |
✓ | ✓ | ✓ |
Hằng ngày |
✓ | ✓ | ✓ |
Địa lý |
✓ | ✓ | ✓ |
Báo cáo Địa lý theo ngày |
✓ | ✓ | ✓ |
* Đối với các báo cáo nhắm mục tiêu lại, hãy thêm |
Bài viết liên quan:
Bảng thuật ngữ
Thuật ngữ | Mô tả |
---|---|
API Pull |
Giải pháp tải xuống báo cáo CSV bằng URI. |
Lệnh gọi API hoặc lệnh gọi |
Gửi URI tới AppsFlyer bằng cách dán URI vào thanh địa chỉ của trình duyệt hoặc sử dụng tập lệnh. |
URI |
|
Hướng dẫn cho người dùng tài khoản
Giới thiệu về mẫu URI
- Các mẫu URI có sẵn trong trung tâm nhà phát triển được điền bằng ID ứng dụng và loại báo cáo.
- Các mẫu này có phần giữ chỗ cho mã thông báo API V1.0 và ngày bắt đầu/kết thúc mà bạn cần chỉnh sửa.
- Phần của URI ở bên phải dấu chấm hỏi (?) chứa thông số. Mỗi thông số bắt đầu bằng ký hiệu (&). Các thông số được sử dụng để đặt bộ lọc, chỉ định các trường sẽ được thêm vào, tiền tệ và múi giờ. Ví dụ: trong các báo cáo hợp nhất để giới hạn (lọc theo) một nguồn truyền thông cụ thể, hãy sử dụng thông số media_source:
&media_source=facebook
- Để hiểu rõ hơn về API Pull, hãy hoàn thành hướng dẫn sau.
Nhận hướng dẫn báo cáo API Pull lần đầu của bạn
Trước khi bạn bắt đầu:- Yêu cầu người dùng quản trị cung cấp cho bạn mã thông báo V1.0.
Để tải xuống báo cáo từ trung tâm nhà phát triển:
-
Đi đến API reference ở trung tâm nhà phát triển của AppsFlyer.
-
Chọn loại báo cáo từ menu bên trái.
Ví dụ, Raw data reports (non-organic) > Installs.
Xem bảng dưới đây để biết danh sách tất cả các loại báo cáo. - Điền vào tất cả các trường bắt buộc
- Mẫu URI hiển thị ở bên phải.
- Sao chép URI bằng cách nhấp vào biểu tượng sao chép.
- Mở một tab mới trong trình duyệt của bạn rồi dán URI.
- Nhấp vào <Enter> để gửi lệnh gọi API.
Báo cáo được tải xuống.
Báo cáo | Mô tả | Tần suất làm mới |
---|---|---|
Báo cáo dữ liệu thô (không tự nhiên) | ||
Lượt cài đặt | Ghi nhận lượt cài đặt không tự nhiên. Bản ghi được tạo khi người dùng mở ứng dụng lần đầu. |
Thời gian thực |
Sự kiện trong Ứng dụng | Ghi nhận các sự kiện được người dùng thực hiện. |
Thời gian thực |
Gỡ cài đặt | Ghi nhận khi người dùng gỡ cài đặt ứng dụng. |
Hằng ngày |
Lượt cài đặt lại |
Ghi nhận những người dùng mà sau khi gỡ cài đặt ứng dụng sẽ tương tác với nguồn truyền thông UA và cài đặt lại ứng dụng trong khung thời gian phân bổ lại. | Thời gian thực |
Báo cáo dữ liệu thô (tự nhiên) |
||
Lượt cài đặt tự nhiên |
Ghi nhận khi người dùng mở ứng dụng lần đầu. |
Liên tục |
Sự kiện trong ứng dụng tự nhiên |
Ghi nhận thông tin chi tiết về các sự kiện do người dùng thực hiện. |
Liên tục |
Các lượt gỡ cài đặt tự nhiên |
Ghi nhận người dùng gỡ cài đặt ứng dụng. |
Hằng ngày |
Lượt cài đặt lại tự nhiên |
Ghi nhận doanh thu quảng cáo cho người dùng được phân bổ cho nguồn truyền thông nhắm mục tiêu lại trong khung thời gian thu hút lại. |
Hàng ngày |
Dữ liệu thô về doanh thu quảng cáo |
||
Doanh thu quảng cáo được phân bổ |
Ghi nhận doanh thu quảng cáo cho người dùng được phân bổ cho một nguồn truyền thông. | Hằng ngày |
Doanh thu quảng cáo tự nhiên | Ghi nhận doanh thu quảng cáo cho người dùng không được phân bổ cho nguồn truyền thông. | Hằng ngày |
Gian lận Protect360 | ||
Lượt cài đặt | Ghi nhận lượt cài đặt được xác định là gian lận và do đó không được phân bổ cho bất kỳ nguồn truyền thông nào. | Thời gian thực |
Lượt cài đặt hậu phân bổ | Ghi nhận các sự kiện trong ứng dụng từ các lượt cài đặt gian lận và do đó hoàn toàn không được phân bổ. | Thời gian thực |
Sự kiện trong Ứng dụng | Ghi nhận các sự kiện trong ứng dụng được Protect360 xác định là gian lận. | Hằng ngày |
Sự kiện trong ứng dụng hậu phân bổ | Ghi nhận các sự kiện trong ứng dụng đối với các lượt cài đặt được xác định là gian lận sau khi được phân bổ cho một nguồn truyền thông hoặc bị đánh giá là gian lận mà không liên quan đến chính lượt cài đặt đó. | Hằng ngày |
Lượt nhấp | Ghi nhận các lượt nhấp được người dùng thực hiện bị Protect360 chặn. | Hằng ngày |
Postback lượt cài đặt bị chặn | Ghi nhận các bản sao của các đăng lại được gửi đến nguồn truyền thông dẫn đến lượt cài đặt bị chặn. | Thời gian thực |
Đăng lại | ||
Các đăng lại lượt cài đặt | Ghi nhận các sự kiện cài đặt được tạo khi người dùng mở ứng dụng lần đầu. | Hằng ngày |
Postback Sự kiện trong Ứng dụng | Ghi nhận các đăng lại sự kiện trong ứng dụng được gửi đến nguồn truyền thông. | Hằng ngày |
Nhắm mục tiêu lại các đăng lại sự kiện trong ứng dụng | Ghi nhận các sự kiện trong ứng dụng mà người dùng đã thực hiện trong khung thời gian thu hút lại. | Thời gian thực |
Đăng lại lượt chuyển đổi nhắm mục tiêu lại | Ghi nhận các sự kiện trong ứng dụng mà người dùng đã thực hiện trong khung thời gian thu hút lại. | Thời gian thực |
Thông số dữ liệu hợp nhất API Pull
URI báo cáo hợp nhất và thông số
Tham số | Mô tả |
---|---|
api_token | Mã thông báo API V1.0. Trong ví dụ, các lệnh gọi này được hiển thị là: <API TOKEN HERE>. |
từ |
|
tới |
Ngày kết thúc. Đối với from
|
Tham số | Mô tả |
---|---|
media_source |
Sử dụng để giới hạn (lọc) cho một nguồn truyền thông cụ thể.
|
attribution_touch_type |
Đặt thông số này như trong ví dụ minh họa để lấy KPI phân bổ lượt xem hết (VTA). Ví dụ: |
tiền tệ |
Đơn vị tiền tệ của doanh thu và chi phí. Báo cáo API Pull hợp nhất luôn sử dụng đơn vị tiền tệ dành riêng cho ứng dụng. |
reattr |
Nhận dữ liệu lượt chuyển đổi nhắm mục tiêu lại.
|
Múi giờ |
[Mặc định] Dữ liệu trả về bằng cách sử dụng UTC.
Lưu ý về việc chọn múi giờ
|
Báo cáo đã lọc của Google Ads
https://hq.appsflyer.com/export/com.greatapp/partners_report/v5?api_token=xxxx
&from=2018-04-09&to=2018-05-09&media_source=googleadwords_int
Báo cáo đã lọc của Facebook
https://hq.appsflyer.com/export/com.greatapp/partners_report/v5?api_token=xxxx
&from=2018-04-09&to=2018-05-09&media_source=facebook
Tham số | Mô tả |
---|---|
URI |
|
PID |
Để lọc báo cáo theo một nguồn truyền thông cụ thể, hãy sử dụng thông số |
Múi giờ |
Chọn múi giờ được sử dụng để trả về dữ liệu. Nếu múi giờ không được gửi, dữ liệu được trả về sử dụng UTC. Mẫu bao gồm thông số múi giờ. Ví dụ: |
KPI |
Tham số Protect360 ở API kéo và API chính là giống nhau.
|
KPI phân bổ lượt xem hết (VTA)
- Để lấy KPI VTA, hãy thêm thông số attribution_touch_type=impression vào URI báo cáo hợp nhất API Pull được nêu chi tiết trong ví dụ.
- Bạn có thể sử dụng thông số cùng bất kỳ báo cáo hợp nhất nào có sẵn. Chỉ cần sao chép URI từ giao diện người dùng và nối thêm thông số.
- Bạn cũng có thể thêm thông số &media_source để giới hạn báo cáo chỉ một nguồn phương tiện cụ thể như được mô tả trong ví dụ sau.
- Một số KPI VTA, như lượt nhấp, lượt hiển thị và API chi phí, không có giá trị được liên kết với chúng và thay vào đó sẽ hiển thị giá trị N/A.
Ví dụ: | URI ví dụ |
---|---|
Chỉ VTA | https://hq.appsflyer.com/export/{app_id}/partners_report/v5?api_token={API token}&from=yyyy-mm-dd&to=yyyy-mm-dd&attribution_touch_type=impression |
VTA và nguồn truyền thông |
https://hq.appsflyer.com/export/{app_id}/partners_report/v5?api_token={API token}&from=yyyy-mm-dd&to=yyyy-mm-dd&attribution_touch_type=impression&media_source=example_ad_network |
API Pull dành cho nhà phát triển
Nguyên tắc thực hiện
Điều kiện tiên quyết:
Tự tìm hiểu hướng dẫn API Pull dành cho người dùng tài khoản.
Cân nhắc:
- Đối với mỗi loại báo cáo có sẵn, sẽ có một URI mẫu trong trung tâm nhà phát triển. Chọn loại báo cáo từ menu bên trái.
- Bạn sửa đổi mẫu để có được dữ liệu bạn cần, ví dụ như bằng cách đặt phạm vi ngày và bộ lọc theo thông số.
- Các thông số cho dữ liệu thô và báo cáo dữ liệu hợp nhất sẽ khác nhau và được trình bày chi tiết trong các phần báo cáo.
Đường dẫn |
|
Thông số đường dẫn |
|
Phương thức HTTP |
|
Tham số | Mô tả |
---|---|
URI ví dụ |
|
api_token |
|
Các thông số khác |
Các thông số khác nhau tùy thuộc vào |
Ví dụ
Ví dụ về lệnh gọi URI bao gồm các thông số bổ sung:
https://hq.appsflyer.com/export/example.app.com/installs_report/v5?
api_token={Account owner API key should be used}&from=yyyy-mm-dd
&to=yyyy-mm-dd&additional_fields=keyword_id,store_reinstall,
deeplink_url,oaid,install_app_store,contributor1_match_type,
contributor2_match_type,contributor3_match_type,match_type
Các tập lệnh ví dụ
Tích hợp API Pull vào các tập lệnh để truy xuất dữ liệu.
- Khi cần, hãy chỉnh sửa tập lệnh về loại báo cáo, phạm vi ngày và bộ lọc.
- Các ví dụ này sử dụng báo cáo lượt cài đặt.
import okhttp3.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.concurrent.TimeUnit;
public class PullApi {
public static void main(String[] args){
String appID = "<APP_ID>";
String reportType = "<REPORT_TYPE>";
String apiToken = "<API_TOKEN>";
String from = "<FROM_DATE>";
String to = "<TO_DATE>";
String requestUrl = "https://hq.appsflyer.com/export/" + appID + "/" + reportType + "/v5?api_token=" + apiToken + "&from=" + from + "&to=" + to;
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.url(requestUrl)
.addHeader("Accept", "text/csv")
.build();
try {
Response response = client.newCall(request).execute();
if(response.code() != 200) {
if(response.code() == 404) {
System.out.println("There is a problem with the request URL. Please make sure it is correct");
}
else {
assert response.body() != null;
System.out.println("There was a problem retrieving the data: " + response.body().string());
}
} else {
assert response.body() != null;
String data = response.body().string();
BufferedWriter writer;
writer = new BufferedWriter(new FileWriter(appID + "-" + reportType + "-" + from + "-to-" + to + ".csv"));
writer.write("");
writer.write(data);
writer.close();
}
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
request = require('request');
const fs = require('fs');
const appID = '<APP_ID>';
const reportType = '<REPORT_TYPE>';
const apiToken = '<API_TOKEN>';
const from = '<FROM_DATA>';
const to = '<T0_DATE>';
const requestUrl = `https://hq.appsflyer.com/export/${appID}/${reportType}/v5?api_token=${apiToken}&from=${from}&to=${to}`;
request(requestUrl, (error, response, body) => {
if (error) {
console.log('There was a problem retrieving data:', error);
}
else if (response.statusCode != 200) {
if (response.statusCode === 404) {
console.log('There is a problem with the request URL. Make sure that it is correct');
} else {
console.log('There was a problem retrieving data:', response.body);
}
} else {
fs.writeFile(`${appID}-${reportType}-${from}-to-${to}.csv`, response.body, (err) => {
if (err) {
console.log('There was a problem writing to file: ', err);
} else {
console.log('File was saved');
}
});
}
});
import requests
app_id = '<APP_ID>'
report_type = '<REPORT_TYPE>'
params = {
'api_token': '<API_TOKEN>',
'from': 'FROM_DATE',
'to': 'TO_DATE'
}
request_url = 'https://hq.appsflyer.com/export/{}/{}/v5'.format(app_id, report_type)
res = requests.request('GET', request_url, params=params)
if res.status_code != 200:
if res.status_code == 404:
print('There is a problem with the request URL. Make sure that it is correct')
else:
print('There was a problem retrieving data: ', res.text)
else:
f = open('{}-{}-{}-to-{}.csv'.format(app_id, report_type, params['from'], params['to']), 'w', newline='', encoding="utf-8")
f.write(res.text)
f.close()
using System;
using RestSharp;
using System.Text;
using System.Net;
using System.IO;
namespace Pull_API
{
class PullAPi
{
static void Main(string[] args)
{
var appID = "<APP_ID>";
var reportType = "<REPORT_TYPE>";
var apiToken = "<API_TOKEN>";
var from = "<FROM_DATE>";
var to = "<TO_DATE>";
var requestUrl = "https://hq.appsflyer.com/export/" + appID + "/" + reportType + "/v5?api_token=" + apiToken + "&from=" + from + "&to=" + to;
var client = new RestClient(requestUrl);
var request = new RestRequest(Method.GET);
request.AddHeader("Accept", "text/csv; charset=UTF-8");
IRestResponse response = client.Execute(request);
HttpStatusCode statusCode = response.StatusCode;
int numericStatusCode = (int)statusCode;
if(numericStatusCode != 200){
if(numericStatusCode == 404){
Console.WriteLine("There is a problem with the request URL. Make sure that it is correct.");
} else {
Console.WriteLine("There was a problem retrieving data: " + response.Content);
}
} else {
System.IO.File.WriteAllText(@"" + appID + "-" + reportType + "-" + from + "-to-" + to + ".csv", response.Content);
Console.WriteLine("Data retrieved succesfully");
}
}
}
}
<?
$appID = '<APP_ID>';
$reportType = '<REPORT_TYPE>';
$apiToken = '<API_TOKEN>';
$from = '<FROM_DATE>';
$to = '<TO_DATE>';
$query = http_build_query([
'api_token' => $apiToken,
'from' => $from,
'to' => $to
]);
$requestUrl = 'https://hq.appsflyer.com/export/' . $appID . '/' . $reportType . '/v5?'.$query;
$report = $appID . '-' . $report . '-' . $from . '-to-' . $to;
$curl = curl_init($requestUrl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_ENCODING, "");
curl_setopt($curl, CURLOPT_NOSIGNAL, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 100);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"cache-control: no-cache",
"Accept: text/csv; charset=UTF-8"
));
$response = curl_exec($curl);
$info = curl_getinfo($curl);
$err = curl_error($curl);
curl_close($curl);
var_dump($response);
if ($err) {
echo $info['http_code'];
echo "cURL Error #: " . $err . '. ';
if ($info['http_code'] == 404) {
echo 'There is a problem with the request URL. Make sure that it is correct';
}
if ($info['http_code'] == 401) {
echo 'There was a problem retrieving data: authentication failed.';
}
echo PHP_EOL;
} else {
$fp = fopen($report, 'w+');
fwrite($fp, $response);
fclose($fp);
echo $response;
}
?>
Thông tin Bổ sung
Đặc điểm và hạn chế
Đặc điểm | Nhận xét |
---|---|
Loại mã thông báo API bắt buộc |
![]() |
Truy cập mạng quảng cáo | N |
Truy cập đại lý | Y |
Tính minh bạch của agency | Y |
Tiền tệ dành riêng cho ứng dụng | Y |
Múi giờ riêng cho ứng dụng | Y |
Chi phí | Dữ liệu chi phí chỉ dành cho các chiến dịch UA; không dành cho các chiến dịch nhắm mục tiêu lại hoặc không hoạt động (chiến dịch không có bất kỳ lượt cài đặt nào). |
Độ mới của dữ liệu | Liên tục |
Dữ liệu lịch sử | Y |
Dữ liệu không tự nhiên | Y |
Dữ liệu tự nhiên | Y |
Giới hạn lưu lượng | |
Hạn chế về kích thước |
Lưu ý! API Pull lấy dữ liệu thô chỉ hỗ trợ 1 triệu hàng. Báo cáo dữ liệu hợp nhất có giới hạn chỉ 200 nghìn hàng. |
Thay đổi tên chiến dịch | Báo cáo API Pull không hỗ trợ thay đổi tên chiến dịch |
Mã lỗi API và khắc phục sự cố
Trạng thái | Mã | Dấu hiệu/thông báo | Giải pháp |
---|---|---|---|
OK | 200 | Tệp tin CSV trống |
|
OK |
200 |
|
Không tìm thấy mã thông báo API nào trong URI |
Yêu cầu không đạt |
400 |
Thời gian xem lại lịch sử báo cáo thô được giới hạn trong 90 ngày |
Sử dụng thông số |
Yêu cầu không đạt |
400 |
Đã đạt đến giới hạn lệnh gọi API của bạn cho loại báo cáo nhất định |
- |
Không được phép |
401 |
Mã thông báo API được cấp không hợp lệ |
Yêu cầu quản trị viên cấp mã thông báo hiện tại. |
Không được phép |
401 |
Tài khoản có thể bị tạm ngừng hoạt động |
Đăng nhập vào bảng điều khiển và kiểm tra trạng thái của tài khoản. |
Không tìm thấy |
404 |
Xuất hiện trang thông báo lỗi 404 của AppsFlyer |
|