ÿÿ ユーザーã®è­˜åˆ¥ | Unity SDK | Adapty ドキュメント

Unity SDKã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’識別ã™ã‚‹

Adaptyã¯ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å¯¾ã—ã¦å†…部プロファイルIDを作æˆã—ã¾ã™ã€‚ãŸã ã—ã€ç‹¬è‡ªã®èªè¨¼ã‚·ã‚¹ãƒ†ãƒ ã‚’ãŠæŒã¡ã®å ´åˆã¯ã€Customer User IDを設定ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚Profilesセクションã§Customer User IDã«ã‚ˆã£ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’検索ã—ãŸã‚Šã€ã™ã¹ã¦ã®ã‚¤ãƒ³ãƒ†ã‚°ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«é€ä¿¡ã•れるサーãƒãƒ¼ã‚µã‚¤ãƒ‰APIã§ã‚‚使用ã§ãã¾ã™ã€‚

設定時ã«Customer User IDを設定ã™ã‚‹

設定時ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼IDãŒã‚ã‚‹å ´åˆã¯ã€.activate()メソッドã®customerUserIdパラメーターã¨ã—ã¦æ¸¡ã™ã ã‘ã§ã™ã€‚

using UnityEngine;
using AdaptySDK;

var builder = new AdaptyConfiguration.Builder("YOUR_API_KEY")
    .SetCustomerUserId("YOUR_USER_ID");

Adapty.Activate(builder.Build(), (error) => {
    if (error != null) {
        // handle the error
        return;
    }
}); 

Adapty SDK ãŒãƒ¢ãƒã‚¤ãƒ«ã‚¢ãƒ—リã«ã©ã®ã‚ˆã†ã«çµ±åˆã•れã¦ã„ã‚‹ã‹ã€å®Ÿéš›ã®ä¾‹ã‚’見ã¦ã¿ã¾ã›ã‚“ã‹ï¼Ÿãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã®è¡¨ç¤ºã€è³¼å…¥å‡¦ç†ã€ãã®ä»–ã®åŸºæœ¬æ©Ÿèƒ½ã‚’å«ã‚€å®Œå…¨ãªã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—を実演ã—ã¦ã„るサンプルアプリをã”覧ãã ã•ã„。

設定後ã«Customer User IDを設定ã™ã‚‹

SDK設定時ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼IDãŒãªã„å ´åˆã¯ã€.identify()メソッドを使ã£ã¦ã„ã¤ã§ã‚‚後ã‹ã‚‰è¨­å®šã§ãã¾ã™ã€‚ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒæœ€ã‚‚よã使ã‚れるã®ã¯ã€ç™»éŒ²å¾Œã‚„èªè¨¼å¾Œã€ã¤ã¾ã‚Šãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒåŒ¿åユーザーã‹ã‚‰èªè¨¼æ¸ˆã¿ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«åˆ‡ã‚Šæ›¿ã‚るタイミングã§ã™ã€‚

Adapty.Identify("YOUR_USER_ID", (error) => {
  if(error == null) {
    // successful identify
  }
});

リクエストパラメーター:

  • Customer User ID(必須):文字列ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼è­˜åˆ¥å­ã€‚

é‡è¦ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ã®å†é€ä¿¡ã«ã¤ã„ã¦

ユーザーãŒå†åº¦ãƒ­ã‚°ã‚¤ãƒ³ã—ãŸå ´åˆãªã©ã€Adaptyã®ã‚µãƒ¼ãƒãƒ¼ã«ã™ã§ã«ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æƒ…å ±ãŒå­˜åœ¨ã—ã¦ã„ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ã“ã®ã‚ˆã†ãªå ´åˆã€Adapty SDKã¯è‡ªå‹•çš„ã«æ–°ã—ã„ユーザーã¨ã—ã¦åˆ‡ã‚Šæ›¿ã‚りã¾ã™ã€‚カスタム属性やサードパーティãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‹ã‚‰ã®ã‚¢ãƒˆãƒªãƒ“ューションãªã©ã€åŒ¿åユーザーã«å¯¾ã—ã¦é€ä¿¡ã—ãŸãƒ‡ãƒ¼ã‚¿ãŒã‚ã‚‹å ´åˆã¯ã€è­˜åˆ¥ã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å¯¾ã—ã¦ãã®ãƒ‡ãƒ¼ã‚¿ã‚’å†é€ä¿¡ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

ã¾ãŸã€æ–°ã—ã„ユーザーã®ãƒ‡ãƒ¼ã‚¿ãŒç•°ãªã‚‹å ´åˆãŒã‚ã‚‹ãŸã‚ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’識別ã—ãŸå¾Œã¯ã™ã¹ã¦ã®ãƒšã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ã¨ãƒ—ロダクトをå†å–å¾—ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«ã‚‚注æ„ã—ã¦ãã ã•ã„。

ログアウトã¨ãƒ­ã‚°ã‚¤ãƒ³

.logout()メソッドを呼ã³å‡ºã™ã“ã¨ã§ã€ã„ã¤ã§ã‚‚ユーザーをログアウトã§ãã¾ã™ã€‚

Adapty.Logout((error) => {
  if(error == null) {
    // successful logout
  }
});

ãã®å¾Œã€.identify()メソッドを使ã£ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ログインã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

appAccountTokenを設定ã™ã‚‹ï¼ˆiOS)

appAccountTokenã¯ã€App Storeã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¨å†…部ユーザーIDã‚’ç´ã¥ã‘ã‚‹ãŸã‚ã®UUIDã§ã™ã€‚
StoreKitã¯ã“ã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚’ã™ã¹ã¦ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«é–¢é€£ä»˜ã‘ã‚‹ãŸã‚ã€ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã§App Storeã®ãƒ‡ãƒ¼ã‚¿ã‚’自社ユーザーã¨ç…§åˆã§ãã¾ã™ã€‚

ユーザーã”ã¨ã«å®‰å®šã—ãŸUUIDを生æˆã—ã€ãƒ‡ãƒã‚¤ã‚¹ã‚’ã¾ãŸã„ã§åŒã˜ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«å†åˆ©ç”¨ã—ã¦ãã ã•ã„。 ã“れã«ã‚ˆã‚Šã€è³¼å…¥æƒ…報やApp Storeã®é€šçŸ¥ãŒæ­£ã—ãç´ã¥ã‘られã¾ã™ã€‚

トークンã®è¨­å®šæ–¹æ³•ã¯2通りã‚りã¾ã™ã€‚SDK有効化時ã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼è­˜åˆ¥æ™‚ã§ã™ã€‚

appAccountTokenã¯å¿…ãšcustomerUserIdã¨ä¸€ç·’ã«æ¸¡ã—ã¦ãã ã•ã„。 トークンã ã‘を渡ã—ã¦ã‚‚ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«ã¯å«ã¾ã‚Œã¾ã›ã‚“。

using UnityEngine;
using AdaptySDK;
using System;

// During configuration:
var appAccountToken = new Guid("YOUR_APP_ACCOUNT_TOKEN");
var builder = new AdaptyConfiguration.Builder("YOUR_API_KEY")
    .SetCustomerUserId("YOUR_USER_ID", appAccountToken);

Adapty.Activate(builder.Build(), (error) => {
    if (error != null) {
        // handle the error
        return;
    }
}); 

// Or when identifying users
Adapty.Identify("YOUR_USER_ID", appAccountToken, (error) => {
    if (error == null) {
        // successful identify
    }
});

難読化アカウントIDを設定ã™ã‚‹ï¼ˆAndroid)

Google Playã§ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ—ライãƒã‚·ãƒ¼ã¨ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚’強化ã™ã‚‹ãŸã‚ã«ã€ç‰¹å®šã®ãƒ¦ãƒ¼ã‚¹ã‚±ãƒ¼ã‚¹ã§é›£èª­åŒ–アカウントIDãŒå¿…è¦ã§ã™ã€‚ã“れらã®IDã«ã‚ˆã‚Šã€Google Playã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…報を匿åã«ä¿ã¡ãªãŒã‚‰è³¼å…¥ã‚’識別ã§ãã¾ã™ã€‚ã“れã¯ç‰¹ã«ä¸æ­£é˜²æ­¢ã‚„アナリティクスã«ãŠã„ã¦é‡è¦ã§ã™ã€‚

ã‚¢ãƒ—ãƒªãŒæ©Ÿå¯†æ€§ã®é«˜ã„ユーザーデータを扱ã†å ´åˆã‚„ã€ç‰¹å®šã®ãƒ—ライãƒã‚·ãƒ¼è¦åˆ¶ã¸ã®æº–æ‹ ãŒæ±‚ã‚られる場åˆã«ã€ã“れらã®IDを設定ã™ã‚‹å¿…è¦ãŒç”Ÿã˜ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚難読化IDを使用ã™ã‚‹ã“ã¨ã§ã€Google Playã¯å®Ÿéš›ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼è­˜åˆ¥å­ã‚’公開ã›ãšã«è³¼å…¥ã‚’追跡ã§ãã¾ã™ã€‚

using UnityEngine;
using AdaptySDK;

// During configuration:
var builder = new AdaptyConfiguration.Builder("YOUR_API_KEY")
    .SetCustomerUserId("YOUR_USER_ID", null, "YOUR_OBFUSCATED_ACCOUNT_ID");

Adapty.Activate(builder.Build(), (error) => {
    if (error != null) {
        // handle the error
        return;
    }
});

// Or when identifying users
Adapty.Identify("YOUR_USER_ID", null, "YOUR_OBFUSCATED_ACCOUNT_ID", (error) => {
    if (error == null) {
        // successful identify
    }
});

デãƒã‚¤ã‚¹ã‚’ã¾ãŸã„ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’検出ã™ã‚‹

SDKãŒæœ‰åŠ¹åŒ–ã•れるã¨ã€StoreKit(iOS)ã¾ãŸã¯Google Play Billing(Android)ã‹ã‚‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ—¢å­˜ã®ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆã‚’自動的ã«èª­ã¿å–りã€Adaptyãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¨åŒæœŸã—ã¾ã™ã€‚有効ãªã‚µãƒ–スクリプションã¯ã€ã‚¢ãƒ—リãŒrestorePurchasesを呼ã³å‡ºã™ã“ã¨ãªãã€Adaptyプロファイルã«è¡¨ç¤ºã•れã¾ã™ã€‚

自動ã§ã¯è¡Œã‚れãªã„ã®ã¯ã€æ–°ã—ã„デãƒã‚¤ã‚¹ã®ãƒ—ロファイルãŒå…ƒã®ãƒ‡ãƒã‚¤ã‚¹ã¨åŒã˜ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚‚ã®ã§ã‚ã‚‹ã“ã¨ã®èªè­˜ã§ã™ã€‚Adaptyã¯Customer User IDã§ãƒ—ロファイルを照åˆã™ã‚‹ãŸã‚ã€åŒä¸€æ€§ã®ç¶™ç¶šæ€§ã¯CUIDã¨ã—ã¦ä½•を使用ã™ã‚‹ã‹ã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ã€‚

デãƒã‚¤ã‚¹é–“ã§AdaptyãŒæ¤œå‡ºã§ãã‚‹ã“ã¨

ã‚ãªãŸã®è¨­å®šAdaptyãŒæ¤œå‡ºã™ã‚‹ã“ã¨å¿…è¦ãªå¯¾å¿œ
Customer User ID = device_id(アプリã®ãƒ­ã‚°ã‚¤ãƒ³ãªã—)新ã—ã„デãƒã‚¤ã‚¹ã¯ç•°ãªã‚‹CUIDã‚’å–å¾—ã™ã‚‹ãŸã‚ã€ç•°ãªã‚‹ãƒ—ロファイルãŒä½œæˆã•れã¾ã™ã€‚サブスクリプションã¯Access level updatedイベントを通ã˜ã¦æ–°ã—ã„プロファイルã«åŒæœŸã•れã¾ã™ãŒã€subscription_startedã¯ç™ºç«ã—ã¾ã›ã‚“。新ã—ã„プロファイルã¯å…ƒã®è³¼å…¥ã®ç¶™æ‰¿è€…ã¨ã—ã¦æ‰±ã‚れã¾ã™ã€‚subscription_startedã«åŸºã¥ãアナリティクスã¯ã€ãƒªã‚¿ãƒ¼ãƒ‹ãƒ³ã‚°ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’カウントä¸è¶³ã—ã¾ã™ã€‚ãƒªã‚¿ãƒ¼ãƒ‹ãƒ³ã‚°ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ—¢å­˜ã®ãƒ—ロファイルをデãƒã‚¤ã‚¹é–“ã§ç…§åˆã§ãるよã†ã€å®‰å®šã—ãŸã‚¢ã‚«ã‚¦ãƒ³ãƒˆIDã‚’Customer User IDã¨ã—ã¦ä½¿ç”¨ã—ã¦ãã ã•ã„。
Customer User ID = 安定ã—ãŸã‚¢ã‚«ã‚¦ãƒ³ãƒˆID(ã™ã¹ã¦ã®ãƒ‡ãƒã‚¤ã‚¹ã§ãƒ­ã‚°ã‚¤ãƒ³ï¼‰SDKã¯activate()ã§ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã‚’è‡ªå‹•åŒæœŸã—ã€identify()ãŒCUIDã§æ—¢å­˜ã®ãƒ—ロファイルを照åˆã—ã¾ã™ã€‚追加ã®è¨­å®šã¯ä¸è¦ã§ã™ã€‚IDã¨ã‚µãƒ–スクリプションã®ä¸¡æ–¹ãŒè‡ªå‹•çš„ã«è§£æ±ºã•れã¾ã™ã€‚
Apple Family Sharing ã®ç¶™æ‰¿è€…ファミリーメンãƒãƒ¼ã¯Access level updatedイベントã®ã¿ã‚’通ã˜ã¦ã‚µãƒ–スクリプションをå—ã‘å–りã¾ã™ã€‚subscription_startedã¯ç™ºç«ã—ã¾ã›ã‚“。Access level updatedをリッスンã—ã¦ãã ã•ã„。完全ãªã‚¤ãƒ™ãƒ³ãƒˆãƒžãƒˆãƒªã‚¯ã‚¹ã¯Apple Family Sharingã‚’å‚ç…§ã—ã¦ãã ã•ã„。
åŒã˜Apple/Googleアカウントã€ç•°ãªã‚‹ã‚¢ãƒ—リ内ユーザー最åˆã«è³¼å…¥ã‚’記録ã—ãŸãƒ—ロファイルãŒè¦ªã«ãªã‚Šã¾ã™ã€‚ãã®å¾Œã®ãƒ—ロファイルã¯ç¶™æ‰¿è€…ãƒã‚§ãƒ¼ãƒ³ã‚’通ã˜ã¦ã‚µãƒ–スクリプションを確èªã—ã€Access level updatedイベントãŒ1回発生ã—ã¾ã™ã€‚ログインを必須ã«ã—ã€ã‚ãªãŸã®ãƒ¢ãƒ‡ãƒ«ã«åˆã£ãŸå…±æœ‰ãƒ¢ãƒ¼ãƒ‰ã‚’é¸æŠžã—ã¦ãã ã•ã„。

æ–°ã—ã„デãƒã‚¤ã‚¹ã§ã®è³¼å…¥ã®å¾©å…ƒ

ペイウォールã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ“作ã§ãる「購入を復元ã€ãƒœã‚¿ãƒ³ã‚’設置ã—ã¦ãã ã•ã„。Apple App Review(ガイドライン3.1.1)ã§å¿…é ˆã¨ã•れã¦ãŠã‚Šã€è‡ªå‹•åŒæœŸãŒã‚¨ãƒƒã‚¸ã‚±ãƒ¼ã‚¹ã‚’見逃ã—ãŸå ´åˆã®ãƒ•ォールãƒãƒƒã‚¯ã¨ã—ã¦æ©Ÿèƒ½ã—ã¾ã™ã€‚ã“ã®ãƒœã‚¿ãƒ³ã¯SDKã®restorePurchasesを呼ã³å‡ºã™å¿…è¦ãŒã‚りã¾ã™ã€‚

åˆå›žèµ·å‹•時ã«ãƒ—ログラムã§restorePurchasesを呼ã³å‡ºã™ã“ã¨ã¯ã€é€šå¸¸ã®ä½¿ç”¨ã§ã¯å¿…è¦ã‚りã¾ã›ã‚“。SDKã¯ã™ã§ã«activate()ã§åŒç­‰ã®å‡¦ç†ã‚’実行ã—ã¦ã„ã¾ã™ã€‚プログラムã«ã‚ˆã‚‹å‘¼ã³å‡ºã—ã¯ã€activate()完了後ã«ã‚¢ã‚¯ã‚»ã‚¹ãŒæ¬ è½ã—ã¦ã„ã‚‹å ´åˆã®ãƒ‡ãƒãƒƒã‚°ãªã©ã€å¼·åˆ¶çš„ã«æ–°ã—ã„レシートãƒã‚§ãƒƒã‚¯ã‚’行ã†å ´åˆã«ã®ã¿ä½¿ç”¨ã—ã¦ãã ã•ã„。

ÿÿÿÿ