Amazon S3

Tích hợp Amazon S3 của Adapty cho phép bạn lưu trữ dữ liệu sự kiện và lượt truy cập paywall một cách an toàn tại một vị trí trung tâm. Bạn có thể lưu các sự kiện gói đăng ký vào Amazon S3 bucket của mình dưới dạng file .csv.
Để thiết lập tích hợp này, bạn cần thực hiện một vài bước đơn giản trong AWS Console và Adapty Dashboard.

Lịch trình

Adapty gửi dữ liệu của bạn mỗi 24h lúc 4:00 UTC.

Mỗi file sẽ chứa dữ liệu cho các sự kiện được tạo trong toàn bộ ngày theo lịch trước đó theo UTC. Ví dụ: dữ liệu được xuất tự động lúc 4:00 UTC ngày 8 tháng 3 sẽ chứa tất cả các sự kiện được tạo vào ngày 7 tháng 3 từ 00:00:00 đến 23:59:59 theo UTC.

Cách thiết lập tích hợp Amazon S3

Để bắt đầu nhận dữ liệu, bạn cần có các thông tin xác thực sau:

  1. Access key ID
  2. Secret access key
  3. Tên S3 bucket
  4. Tên thư mục bên trong S3 bucket

Thư mục lồng nhau

Bạn có thể chỉ định các thư mục lồng nhau trong trường tên Amazon S3 bucket, ví dụ: adapty-events/com.sample-app

Để tích hợp Amazon S3, hãy vào Integrations -> Amazon S3, bật toggle từ tắt sang bật và điền vào các trường thông tin.

Trước tiên, hãy nhập thông tin xác thực để thiết lập kết nối giữa Amazon S3 và hồ sơ người dùng Adapty.

2b1a6e3-CleanShot_2023-03-24_at_14.51.272x.webp

Trong Adapty Dashboard, các trường sau đây cần được điền để thiết lập kết nối:

TrườngMô tả
Access Key IDMột mã định danh duy nhất dùng để xác thực quyền truy cập của người dùng hoặc ứng dụng vào dịch vụ AWS. Tìm ID này trong tệp csv đã tải xuống.
Secret Access KeyKhóa bí mật được dùng kết hợp với Access Key ID để xác thực quyền truy cập của người dùng hoặc ứng dụng vào dịch vụ AWS. Tìm khóa này trong tệp csv đã tải xuống.
S3 Bucket NameTên duy nhất trên toàn cầu để xác định một S3 bucket cụ thể trong đám mây AWS. S3 bucket là dịch vụ lưu trữ đơn giản cho phép người dùng lưu trữ và truy xuất các đối tượng dữ liệu như tệp và hình ảnh trên đám mây.
Folder Inside the BucketTên thư mục bạn muốn tạo bên trong S3 bucket đã chọn. Lưu ý rằng S3 mô phỏng các thư mục bằng cách sử dụng tiền tố khóa đối tượng, về cơ bản chính là tên thư mục.

Cách tạo thông tin xác thực Amazon S3

Hướng dẫn này sẽ giúp bạn tạo các thông tin xác thực cần thiết trong AWS Console.

1. Tạo Access Policy

Đầu tiên, truy cập IAM Policy Dashboard trong AWS Console và chọn Create Policy.

7af075c-CleanShot_2023-03-21_at_10.52.002x.webp

In the Policy editor, paste the following JSON and change adapty-s3-integration-test to your bucket name:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListObjectsInBucket",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::adapty-s3-integration-test"
        },
        {
            "Sid": "AllowAllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                "arn:aws:s3:::adapty-s3-integration-test/*",
                "arn:aws:s3:::adapty-s3-integration-test"
            ]
        },
        {
            "Sid": "AllowBucketLocation",
            "Effect": "Allow",
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::adapty-s3-integration-test"
        }
    ]
}
d4e474a-CleanShot_2023-03-21_at_10.56.212x.webp

Sau khi hoàn tất cấu hình policy, bạn có thể thêm tags (tùy chọn) rồi nhấn Next để chuyển sang bước cuối. Ở bước này, bạn đặt tên cho policy và nhấn Create policy để hoàn tất quá trình tạo.

7dcb02f-CleanShot_2023-03-21_at_11.03.372x.webp

2. Tạo IAM user

Để Adapty có thể tải các báo cáo dữ liệu thô lên bucket của bạn, bạn cần cung cấp cho họ Access Key ID và Secret Access Key của một user có quyền ghi vào bucket đó.

Để thực hiện, hãy truy cập IAM Console và chọn mục Users. Từ đó, nhấp vào nút Add users.

bb612c8-CleanShot_2023-03-21_at_11.12.392x.webp

Đặt tên cho người dùng, chọn Access key – Programmatic access, rồi tiến hành cài đặt quyền.

467ee4d-j6aoX.webp

Ở bước tiếp theo, hãy chọn tùy chọn Add user to group rồi nhấn nút Create group.

bfd0e80-CleanShot_2023-03-21_at_11.24.592x.webp

Tiếp theo, bạn cần đặt tên cho User Group và chọn policy mà bạn đã tạo trước đó. Sau khi chọn xong policy, nhấn vào nút Create group để hoàn tất quá trình.

df29c12-CleanShot_2023-03-21_at_11.28.052x.webp

Sau khi tạo nhóm thành công, vui lòng chọn nhóm đó và tiến hành bước tiếp theo.

1f3722e-CleanShot_2023-03-21_at_11.36.192x.webp

Đây là bước cuối cùng của phần này, bạn chỉ cần nhấn vào nút Create User để tiếp tục.

ea43722-CleanShot_2023-03-21_at_11.40.462x.webp

Cuối cùng, bạn có thể tải thông tin xác thực ở định dạng .csv hoặc sao chép và dán trực tiếp từ dashboard.

bcf35e1-S3created.webp

Xuất dữ liệu thủ công

Ngoài tính năng tự động xuất dữ liệu sự kiện sang Amazon S3, Adapty còn cung cấp chức năng xuất file thủ công. Với tính năng này, bạn có thể chọn một khoảng thời gian cụ thể cho dữ liệu sự kiện và xuất thủ công sang S3 bucket của mình. Điều này giúp bạn kiểm soát tốt hơn dữ liệu cần xuất và thời điểm xuất.

Khoảng ngày được chỉ định sẽ được dùng để xuất các sự kiện được tạo từ Ngày A lúc 00:00:00 UTC đến Ngày B lúc 23:59:59 UTC.

466bd29-CleanShot_2023-03-21_at_12.35.252x.webp

Cấu trúc bảng

Trong tích hợp AWS S3, Adapty cung cấp một bảng để lưu trữ dữ liệu lịch sử cho các sự kiện giao dịch và lượt truy cập paywall. Bảng này chứa thông tin về hồ sơ người dùng, doanh thu và lợi nhuận, cửa hàng gốc, cùng nhiều điểm dữ liệu khác. Về cơ bản, các bảng này ghi lại toàn bộ giao dịch được tạo ra bởi một ứng dụng trong một khoảng thời gian nhất định.

Lưu ý rằng cấu trúc này có thể mở rộng theo thời gian — với dữ liệu mới được chúng tôi hoặc các bên thứ ba mà chúng tôi hợp tác giới thiệu. Hãy đảm bảo rằng code xử lý dữ liệu của bạn đủ linh hoạt và chỉ phụ thuộc vào các trường cụ thể, không phụ thuộc vào toàn bộ cấu trúc.

Dưới đây là cấu trúc bảng cho các sự kiện:

CộtMô tả
profile_idID người dùng Adapty.
event_typeTên sự kiện viết thường. Xem phần Events để tìm hiểu các loại sự kiện.
event_datetimeNgày theo chuẩn ISO 8601.
transaction_idMã định danh duy nhất cho một giao dịch như mua hàng hoặc gia hạn.
original_transaction_idMã định danh giao dịch của lần mua hàng gốc.
subscription_expires_atNgày hết hạn của gói đăng ký. Thường là trong tương lai.
environmentCó thể là Sandbox hoặc Production.
revenue_usdDoanh thu tính bằng USD. Có thể trống.
proceeds_usdTiền thu về tính bằng USD. Có thể trống.
net_revenue_usdDoanh thu thuần (thu nhập sau thuế) tính bằng USD. Có thể trống.
tax_amount_usdSố tiền khấu trừ cho thuế tính bằng USD. Có thể trống.
revenue_localDoanh thu tính bằng đơn vị tiền tệ địa phương. Có thể trống.
proceeds_localTiền thu về tính bằng đơn vị tiền tệ địa phương. Có thể trống.
net_revenue_localDoanh thu thuần (thu nhập sau thuế) tính bằng đơn vị tiền tệ địa phương. Có thể trống.
tax_amount_localSố tiền khấu trừ cho thuế tính bằng đơn vị tiền tệ địa phương. Có thể trống.
customer_user_idID người dùng do nhà phát triển cung cấp. Ví dụ: có thể là UUID, email hoặc bất kỳ ID nào khác của người dùng. Null nếu bạn chưa thiết lập.
storeCó thể là app_store hoặc play_store.
product_idID sản phẩm trên Apple App Store, Google Play Store hoặc Stripe.
base_plan_idID gói cơ bản trên Google Play Store hoặc ID giá trên Stripe.
developer_idID nhà phát triển (SDK) của paywall nơi giao dịch bắt nguồn.
ab_test_nameTên A/B test nơi giao dịch bắt nguồn.
ab_test_revisionPhiên bản của A/B test nơi giao dịch bắt nguồn.
paywall_nameTên paywall nơi giao dịch bắt nguồn.
paywall_revisionPhiên bản của paywall nơi giao dịch bắt nguồn.
profile_countyQuốc gia của hồ sơ người dùng do Adapty xác định dựa trên địa chỉ IP.
install_dateNgày cài đặt theo chuẩn ISO 8601.
idfvidentifierForVendor trên thiết bị iOS
idfaadvertisingIdentifier trên thiết bị iOS
advertising_idAdvertising ID là mã duy nhất do hệ điều hành Android cấp, mà các nhà quảng cáo có thể dùng để nhận dạng thiết bị của người dùng
ip_addressĐịa chỉ IP của thiết bị (có thể là IPv4 hoặc IPv6, ưu tiên IPv4 nếu có). Được cập nhật mỗi khi địa chỉ IP của thiết bị thay đổi.
cancellation_reason

Lý do người dùng hủy gói đăng ký.

Có thể là:

iOS & Android voluntarily_cancelled, billing_error, refund

iOS price_increase, product_was_not_available, unknown, upgraded

Android new_subscription_replace, cancelled_by_developer

android_app_set_idMột AppSetId - ID duy nhất theo thiết bị, theo tài khoản nhà phát triển, có thể đặt lại bởi người dùng, dành cho các trường hợp quảng cáo không liên quan đến kiếm tiền.
android_idTrên Android 8.0 (API level 26) và các phiên bản cao hơn, đây là một số 64-bit (biểu diễn dưới dạng chuỗi thập lục phân), duy nhất cho mỗi tổ hợp khóa ký ứng dụng, người dùng và thiết bị. Xem thêm tại tài liệu dành cho nhà phát triển Android.
deviceTên model thiết bị hiển thị cho người dùng.
currencyMã tiền tệ 3 chữ cái (ISO-4217) của giao dịch.
store_countryQuốc gia của hồ sơ người dùng do Apple/Google store xác định.
attribution_sourceNguồn attribution.
attribution_network_user_idID do nguồn attribution cấp cho người dùng.
attribution_statusCó thể là organic, non_organic hoặc unknown.
attribution_channelTên kênh marketing.
attribution_campaignTên chiến dịch marketing.
attribution_ad_groupNhóm quảng cáo attribution.
attribution_ad_setBộ quảng cáo attribution.
attribution_creativeTừ khóa creative của attribution.
attributesJSON của thuộc tính người dùng tùy chỉnh. Bao gồm các thuộc tính tùy chỉnh mà bạn đã thiết lập để gửi từ ứng dụng mobile. Để gửi, hãy bật tùy chọn Send User Attributes trong trang Integrations -> Webhooks.
integration_idsTất cả các ID tích hợp liên kết với một hồ sơ người dùng. Dạng từ điển. Ví dụ: {‘mixpanel_user_id’: ‘mixpanelUserId-test’, ‘facebook_anonymous_id’: ‘facebookAnonymousId-test’}
Here is the table structure for the paywall visits:
CộtMô tả
:--------------------:-----------------------------------------------------------------------------------------------------------------------
profile_idID người dùng Adapty.
customer_user_idID người dùng do nhà phát triển đặt. Ví dụ: UUID, email, hoặc bất kỳ ID nào khác. Null nếu bạn chưa thiết lập.
profile_countryQuốc gia của hồ sơ người dùng được xác định bởi cửa hàng Apple/Google.
install_dateNgày cài đặt theo định dạng ISO 8601.
storeCó thể là app_store hoặc play_store.
paywall_showed_atNgày paywall được hiển thị cho khách hàng.
developer_idID (SDK) của nhà phát triển cho paywall nơi giao dịch bắt nguồn.
ab_test_nameTên của A/B test nơi giao dịch bắt nguồn.
ab_test_revisionPhiên bản của A/B test nơi giao dịch bắt nguồn.
paywall_nameTên của paywall nơi giao dịch bắt nguồn.
paywall_revisionPhiên bản của paywall nơi giao dịch bắt nguồn.

Sự kiện và thẻ tag

Bạn có thể quản lý dữ liệu nào được truyền qua integration. Integration cung cấp các tùy chọn cấu hình sau:

Cài đặtMô tả
Exclude Historical EventsChọn để loại trừ các sự kiện đã xảy ra trước khi người dùng cài đặt ứng dụng có tích hợp Adapty SDK. Điều này giúp tránh trùng lặp sự kiện và đảm bảo báo cáo chính xác. Ví dụ: nếu người dùng kích hoạt gói đăng ký hàng tháng vào ngày 10 tháng 1 và cập nhật ứng dụng có Adapty SDK vào ngày 6 tháng 3, Adapty sẽ bỏ qua các sự kiện trước ngày 6 tháng 3 và chỉ giữ lại các sự kiện sau đó.
Include events without profileChọn để bao gồm các giao dịch không được liên kết với hồ sơ người dùng trong Adapty. Những giao dịch này có thể bao gồm các sản phẩm mua một lần được thực hiện trước khi cài đặt Adapty SDK hoặc các giao dịch nhận được từ thông báo máy chủ của cửa hàng mà chưa thể liên kết ngay với một người dùng cụ thể.
Send User AttributesNếu bạn muốn gửi các thuộc tính riêng của người dùng, chẳng hạn như tùy chọn ngôn ngữ, và gói OneSignal của bạn hỗ trợ hơn 10 tag, hãy chọn tùy chọn này. Khi bật tùy chọn này, bạn có thể gửi thêm thông tin ngoài 10 tag mặc định. Lưu ý rằng việc vượt quá giới hạn tag có thể dẫn đến lỗi.
s3-settings.webp

Bên dưới cài đặt tích hợp, có ba nhóm sự kiện bạn có thể xuất, gửi và lưu trữ trong Amazon S3 từ Adapty. Chỉ cần bật những nhóm bạn cần. Xem danh sách đầy đủ các sự kiện mà Adapty cung cấp tại đây.

fd5ccb9-CleanShot_2023-08-17_at_14.49.282x.webp