Покупки В Приложении
Отслеживание покупок в приложении будет работать только при подключении к Adjust или AppsFlyer. Чтобы подключить их, следуйте этому руководству для Adjust и этому руководству для AppsFlyer.
Можно отслеживать информацию о покупках в приложении и отправлять информацию на серверы Appodeal для аналитики. Это позволяет группировать пользователей по факту покупки. Это поможет вам настроить рекламу для таких пользователей или просто отключить ее, если это необходимо. Чтобы эта наст ройка работала правильно, отправьте информацию о покупке через Appodeal SDK.
Шаг 1. Отслеживание Покупок В Приложении
Если вы используете собственный Adjust аккаунт, вам нужно выполнить шаг 2 из нашей Event Tracking инструкции и создать обязательные события на стороне Adjust.
Чтобы все работало правильно, отправьте информацию о покупке через Appodeal SDK.
Следуйте официальной инструкции Unity IAP чтобы настроить покупки и получать информацию о покупках.
- UPM Дистрибуция
- Manual Дистрибуция
#if UNITY_ANDROID
var additionalParams = new Dictionary<string, string> { { "key1", "value1" }, { "key2", "value2" } };
var purchase = new PlayStoreInAppPurchase.Builder(PlayStorePurchaseType.Subs)
.WithAdditionalParameters(additionalParams)
.WithPurchaseTimestamp(793668600)
.WithDeveloperPayload("payload")
.WithPurchaseToken("token")
.WithPurchaseData("data")
.WithPublicKey("key")
.WithSignature("signature")
.WithCurrency("USD")
.WithOrderId("orderId")
.WithPrice("1.99")
.WithSku("sku")
.Build();
Appodeal.ValidatePlayStoreInAppPurchase(purchase, this);
#elif UNITY_IOS
var additionalParams = new Dictionary<string, string> { { "key1", "value1" }, { "key2", "value2" } };
var purchase = new AppStoreInAppPurchase.Builder(AppStorePurchaseType.Consumable)
.WithAdditionalParameters(additionalParams)
.WithTransactionId("transactionId")
.WithProductId("productId")
.WithCurrency("USD")
.WithPrice("2.89")
.Build();
Appodeal.ValidateAppStoreInAppPurchase(purchase, this);
#endif
Для Android:
Убедитесь, что если вы создали продукт в приложении в разделе Google Play Console → Monetize, то используйте:
PlayStorePurchaseType.InApp
для внутриигровых покупок.PlayStorePurchaseType.Subs
для подписок.
Для iOS:
Убедитесь, что если вы создали продукт в приложении в App Store Connect, то используйте:
AppStorePurchaseType.Consumable
илиAppStorePurchaseType.NonConsumable
для внутриигровых покупок.AppStorePurchaseType.AutoRenewableSubscription
илиAppStorePurchaseType.NonRenewingSubscription
для подписок.
#if UNITY_ANDROID
var additionalParams = new Dictionary<string, string> { { "key1", "value1" }, { "key2", "value2" } };
var purchase = new PlayStoreInAppPurchase.Builder(Appodeal.PlayStorePurchaseType.Subs)
.withAdditionalParameters(additionalParams)
.withPurchaseTimestamp(793668600)
.withDeveloperPayload("payload")
.withPurchaseToken("token")
.withPurchaseData("data")
.withPublicKey("key")
.withSignature("signature")
.withCurrency("USD")
.withOrderId("orderId")
.withPrice("1.99")
.withSku("sku")
.build();
Appodeal.validatePlayStoreInAppPurchase(purchase, this);
#elif UNITY_IOS
var additionalParams = new Dictionary<string, string> { { "key1", "value1" }, { "key2", "value2" } };
var purchase = new AppStoreInAppPurchase.Builder(Appodeal.AppStorePurchaseType.Consumable)
.withAdditionalParameters(additionalParams)
.withTransactionId("transactionId")
.withProductId("productId")
.withCurrency("USD")
.withPrice("2.89")
.build();
Appodeal.validateAppStoreInAppPurchase(purchase, this);
#endif
Для Android:
Убедитесь, что если вы создали продукт в приложении в разделе Google Play Console → Monetize, то используйте:
Appodeal.PlayStorePurchaseType.Subs
для внутриигровых покупок.Appodeal.PlayStorePurchaseType.Subs
для подписок.
Для iOS:
Убедитесь, что если вы создали продукт в приложении в App Store Connect, то используйте:
Appodeal.AppStorePurchaseType.Consumable
илиAppodeal.AppStorePurchaseType.NonConsumable
для внутриигровых покупок.Appodeal.AppStorePurchaseType.AutoRenewableSubscription
илиAppodeal.AppStorePurchaseType.NonRenewingSubscription
для подписок.
Параметр | Описание | Использование |
---|---|---|
purchaseType | Тип покупки. Должен быть InApp или Subs | Adjust/AppsFlyer |
publicKey | Публичный ключ из Google Developer Console | AppsFlyer |
signature | Подпись транзакции (возвращается из Google API после завершения покупки) | Adjust/AppsFlyer |
purchaseData | Продукт, приобретенный в формате JSON (возвращается из Google API после завершения покупки) | AppsFlyer |
purchaseToken | Токен приобретенного продукта (возвращается из Google API после завершения покупки) | Adjust |
purchaseTimestamp | Отметка времени покупки продукта (возвращается из Google API после завершения покупки) | Adjust |
developerPayload | Полезная нагрузка разработчика в приобретенном продукте (возвращается из Google API после завершения покупки) | Adjust |
orderId | Уникальный идентификатор заказа для транзакции приобретенного продукта (возвращается из Google API после завершения покупки) | Adjust |
sku | Уникальный идентификатор единицы товара | Adjust |
price | Доход от события в приложении | Adjust/AppsFlyer/Appodeal |
currency | Валюта события в приложении | Adjust/AppsFlyer/Appodeal |
additionalParameters | Допольнительные параметры in-app события | - |
transactionId | Некоторый идентификатор транзакции | Adjust/AppsFlyer |
productId | Некоторый идентификатор продукта | Adjust/AppsFlyer |
Для iOS
- Все параметры являются обязательными
Для Android
- Adjust In-app Purchase
- Adjust In-App Subscription
- AppsFlyer
- purchaseType
- purchaseToken
- developerPayload
- sku
- price
- currency
- additionalParameters
- purchaseType
- signature
- purchaseToken
- purchaseTimestamp
- orderId
- sku
- price
- currency
- additionalParameters
- purchaseType
- publicKey
- signature
- purchaseData
- price
- currency
- additionalParameters
Шаг 2. Методы Обратного Вызова
Методы обратного вызова позволяют отслеживать успешные и неудачные покупки в приложении. Для использования этих методов выполните следующие действия:
- UPM Дистрибуция
- Manual Дистрибуция
- Подпишитесь на желаемое событие In-App Purchase, используя один из методов из нашей инструкции. (вы можете подписаться к любому событию, которому захотите)
- Вы можете использо вать методы обратного вызова как показано ниже:
public void SomeMethod()
{
AppodealCallbacks.InAppPurchase.OnValidationSucceeded += OnInAppPurchaseValidationSucceeded;
AppodealCallbacks.InAppPurchase.OnValidationFailed += OnInAppPurchaseValidationFailed;
}
#region InAppPurchaseValidation Callbacks
private void OnInAppPurchaseValidationSucceeded(object sender, InAppPurchaseEventArgs e)
{
Debug.Log("In-App Purchase Validation Succeeded");
}
private void OnInAppPurchaseValidationFailed(object sender, InAppPurchaseEventArgs e)
{
Debug.Log("In-App Purchase Validation Failed");
}
#endregion
- Наследуйте Ваш класс от
IInAppPurchaseValidationListener
:
SomeClassName : IInAppPurchaseValidationListener {}
- Добавьте обязательные методы обратного вызова в ваш класс:
#region InAppPurchaseValidation Callbacks
private void onInAppPurchaseValidationSucceeded(string json)
{
Debug.Log("In-App Purchase Validation Succeeded");
}
private void onInAppPurchaseValidationFailed(string json)
{
Debug.Log("In-App Purchase Validation Failed");
}
#endregion
Шаг 3. Создайте Файл Json В Google Cloud (Только Для Android)
- Войдите в Google Cloud со своими учетными данными.
- Выберите Google Play Console Developer проект в левом верхнем углу, как показано ниже.
Убедитесь, что на этом шаге выбран Google Play Console Developer, а не конкретный проект вашего приложения. Google Play Console позволяет связывать только облачные проекты Google Play Console Developer (позже на шаге 3).
- Выберите Credentials → Create Credentials → Service Account.
- Выберите Viewer в качестве роли для Service Account и нажмите Done.
- Перейдите в ваш service account и нажмите keys → Add key → choose JSON and отправьте нам файл JSON на электронную почту support@appodeal.com или в чате.
Шаг 4. Добавьте Необходимые Разрешения В Google Play Console (Только Для Android)
- Перейдите в Google Play Console и авторизируйтесь.
- Перейдите в Google Play Console → Manage developer accounts → Choose developer account → Setup → API Access и выберите свой проект Google Play Console Developer из шага 2, где вы создали свой Service Account.
Если вы не видите Google Play Console Developer проект в списке, обновите веб-страницу.
Если проблема не устранена, убедитесь, что ваша учетная запись разработчика Google Play (адрес электронной почты) является владельцем проекта Google Cloud. Вы можете прочитать больше здес ь.
- Внизу будет список ваших Service Accounts, которые доступны в этом проекте Google Cloud. Выберите тот, с которого был отправлен JSON.
- Выберите View Play Console permissions. В разделе App Permissions выберите необходимые приложения, в которых будут использоваться внутренние события.
- Перейдите в раздел Account Permissions и выберите все разрешения для Financial Data:
- View financial data
- Manage Orders and subscriptions
Шаг 5. Свяжитесь С Нами
После выполнения всех шагов свяжитесь с нашей службой поддержки по электронной почте support@appodeal.com или в чате со следующей информацией:
- JSON-файл вашего Service Account. (Только для Android)
- Логика реализации покупок в вашем приложении (когда и где вы вызываете метод валидации покупок и валидируете покупки)
- Предоставьте нам доступ для тестирования покупки через Google Developer console по электронной почте support@appodeal.com. (Только для Android)
- Ваш apk файл в архиве zip для тестирования. (Только для Android)
- Предоставьте нам доступ для тестирования покупки в приложении и отправьте testflight по электронной почте support@appodeal.com. (Только для iOS)
Шаг 6. Тестирование
После того, как вы связались с нашей службой поддержки и предоставили всю необходимую информацию, вы можете протестировать свое приложение, чтобы убедиться, что покупки валидированы.
- Перейдите по пути App Settings → Attribution Settings и измените Adjust Environment с
Production
наSandbox
, чтобы протестировать валидацию покупок и не забудьте нажать Save в конце страницы.
- Подключите ваше устройство к компьютеру с открытой консолью (Android Studio logcat или iOS Console) и отсортируйте логи по слову purchase.
- Теперь вы можете открыть свое приложение и совершить пробную покупку. Если в консоли отображается надпись Valid Purchase, значит, валидация прошла успешно.
- Если валидация не прошла успешно, то повторите все шаги, описанные выше, и убедитесь, что все шаги выполнены.
- После тестирования, смените ваш Adjust Environment на
Production
по пути App Settings → Attribution Settings.