Магазины могут предлагать уникальные функции, которые не вписываются в обычный процесс покупки на разных платформах. Доступ к этой расширенной функциональности осуществляется через IExtensionProvider
, который предоставляется вашему приложению, когда Unity IAPСокращение от Unity In App Purchase
См. Словарь инициализируется успешно.
При использовании расширений нет необходимости использовать компиляцию, зависящую от платформы; каждое расширение поставляется с фальшивой реализацией no-op, которая используется при работе на платформе, которая не предлагает расширенную функциональность.
Например, следующий фрагмент кода обращается к механизму RefreshReceipt
, который Apple предлагает для получения обновленной квитанции о приложении с серверов Apple. Его можно скомпилировать на любой платформе Unity IAP, и если вы запустите его на платформе, отличной от Apple, такой как Android, это не будет иметь никакого эффекта; предоставленная лямбда никогда не будет вызвана.
/// <summary>
/// Called when Unity IAP is ready to make purchases.
/// </summary>
public void OnInitialized (IStoreController controller, IExtensionProvider extensions)
{
extensions.GetExtension<IAppleExtensions> ().RefreshAppReceipt (result => {
if (result) {
// Refresh finished successfully.
} else {
// Refresh failed.
}
});
}