# Покупки из in-app сообщений iOS

Чтобы пользователи могли совершать покупки прямо из in-app сообщений, отображаемых в вашем iOS-приложении, вы можете реализовать готовое решение для ваших Rich Media и добавить колбэки для получения дополнительной информации о покупках в приложении.

<Aside>
Доступно для **версии iOS SDK 6.4.5 и выше**.
</Aside>

## Реализация Rich Media на JavaScript

Чтобы реализовать покупки в приложении в ваших Rich Media, используйте простой **вызов функции JavaScript**:

```javascript
pushwooshImpl.makePurchaseWithIdentifier("Premium"); // идентификатор продукта, указанный в информации о продукте в App Store
```

## Методы AppDelegate для колбэков

Если вам нужны колбэки, которые будут выполняться при покупке, реализуйте **протокол PWPurchaseDelegate** следующим образом:

1. Приведите `AppDelegate` вашего проекта в соответствие с протоколом `PWPurchaseDelegate`:

```objective-c
@interface AppDelegate : PWAppDelegate <PushNotificationDelegate, PWPurchaseDelegate>
```

2. Реализуйте методы `PWPurchaseDelegate` в вашем `AppDelegate`:

```objective-c
#pragma mark - Purchase delegate methods
- (void) onPWInAppPurchaseHelperPaymentComplete:(NSString*) identifier {
    NSLog(@“Пользовательский делегат покупки -- платеж завершен для идентификатора: %@“, identifier);
}
-(void)onPWInAppPurchaseHelperProducts:(NSArray<SKProduct *>* _Nullable)products {
    NSLog(@“Пользовательский делегат покупки -- получен список продуктов”);
}
-(void)onPWInAppPurchaseHelperPaymentFailedProductIdentifier:(NSString* _Nullable)identifier error:(NSError* _Nullable)error {
    NSLog(@“Пользовательский делегат покупки -- платеж не выполнен с идентификатором %@ и ошибкой %@“, identifier, error.description);
}
```

### Список доступных методов PWPurchaseDelegate

#### Список продуктов

```objective-c
@protocol PWPurchaseDelegate <NSObject>
// Подробная информация о списке продуктов в вашем приложении
-(void)onPWInAppPurchaseHelperProducts:(NSArray<SKProduct *>* _Nullable)products;
@end
```

#### Успешная транзакция

```objective-c
@protocol PWPurchaseDelegate &#x3C;NSObject>
// Успешно обработанная транзакция
<strong>-(void)onPWInAppPurchaseHelperPaymentComplete:(NSString* _Nullable)identifier;
</strong>
@end
```

#### Неудачная транзакция

```objective-c
@protocol PWPurchaseDelegate &#x3C;NSObject>
<strong>// Неудачная транзакция
</strong>-(void)onPWInAppPurchaseHelperPaymentFailedProductIdentifier:(NSString* _Nullable)identifier error:(NSError* _Nullable)error;
@end
```

#### Продвижение из App Store

```objective-c
@protocol PWPurchaseDelegate <NSObject>
// Покупка в приложении инициирована из App Store, и транзакция продолжается в вашем приложении.
-(void)onPWInAppPurchaseHelperCallPromotedPurchase:(NSString* _Nullable)identifier;
@end
```

#### Не удалось восстановить завершенные транзакции

```objective-c
@protocol PWPurchaseDelegate <NSObject>
// Произошла ошибка при восстановлении транзакций
-(void)onPWInAppPurchaseHelperRestoreCompletedTransactionsFailed:(NSError * _Nullable)error;
@end
```

<Aside type="note">
Если ваши потребности не покрываются методами, указанными в этом руководстве, пожалуйста, свяжитесь с нашей [службой поддержки клиентов](https://help.pushwoosh.com/hc/en-us/requests/new?utm\_content=pwwebsite\&utm\_term=footer\&utm\_campaign=support), и мы будем рады предоставить вам дальнейшие рекомендации.
</Aside>