# Compras em mensagens in-app para iOS

Para permitir que seus usuários façam compras diretamente das mensagens in-app exibidas em seu aplicativo iOS, você pode implementar a solução pronta para uso para suas Rich Medias e adicionar callbacks para obter mais informações sobre as compras in-app.

<Aside>
Disponível para a **versão 6.4.5 do SDK para iOS e posteriores**.
</Aside>

## Implementação JavaScript de Rich Media

Para implementar compras in-app em suas Rich Medias, use uma simples **chamada de função JavaScript**:

```javascript
pushwooshImpl.makePurchaseWithIdentifier("Premium"); // identificador do produto especificado nas informações do seu produto na App Store
```

## Métodos AppDelegate para callbacks

Se você precisar que callbacks sejam executados em uma compra, implemente o **protocolo PWPurchaseDelegate** da seguinte forma:

1\. Faça com que o AppDelegate do seu projeto esteja em conformidade com o protocolo PWPurchaseDelegate:

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

2\. Implemente os métodos do PWPurchaseDelegate em seu AppDelegate:

```objective-c
#pragma mark - Purchase delegate methods
- (void) onPWInAppPurchaseHelperPaymentComplete:(NSString*) identifier {
    NSLog(@“Custom purchase delegate -- payment complete for identifier: %@“, identifier);
}
-(void)onPWInAppPurchaseHelperProducts:(NSArray<SKProduct *>* _Nullable)products {
    NSLog(@“Custom purchase delegate -- retrieved list of products”);
}
-(void)onPWInAppPurchaseHelperPaymentFailedProductIdentifier:(NSString* _Nullable)identifier error:(NSError* _Nullable)error {
    NSLog(@“Custom purchase delegate -- payment failed with identifier %@ and error %@“, identifier, error.description);
}
```

### Lista de métodos PWPurchaseDelegate disponíveis

#### Lista de produtos

```objective-c
@protocol PWPurchaseDelegate <NSObject>
// Informações detalhadas sobre a lista de produtos em seu aplicativo 
-(void)onPWInAppPurchaseHelperProducts:(NSArray<SKProduct *>* _Nullable)products;
@end
```

#### Transação bem-sucedida

```objective-c
@protocol PWPurchaseDelegate &#x3C;NSObject>
// Uma transação processada com sucesso 
<strong>-(void)onPWInAppPurchaseHelperPaymentComplete:(NSString* _Nullable)identifier;
</strong>
@end
```

#### Transação que falhou

```objective-c
@protocol PWPurchaseDelegate &#x3C;NSObject>
<strong>// Uma transação que falhou 
</strong>-(void)onPWInAppPurchaseHelperPaymentFailedProductIdentifier:(NSString* _Nullable)identifier error:(NSError* _Nullable)error;
@end
```

#### Promovido da App Store

```objective-c
@protocol PWPurchaseDelegate <NSObject>
// Uma compra in-app é iniciada a partir da App Store, e a transação continua em seu aplicativo.
-(void)onPWInAppPurchaseHelperCallPromotedPurchase:(NSString* _Nullable)identifier;
@end
```

#### Falha ao restaurar transações concluídas

```objective-c
@protocol PWPurchaseDelegate <NSObject>
// Ocorreu um erro ao restaurar as transações
-(void)onPWInAppPurchaseHelperRestoreCompletedTransactionsFailed:(NSError * _Nullable)error;
@end
```

<Aside type="note">
Se suas necessidades não forem atendidas pelos métodos especificados neste guia, entre em contato com nossa [equipe de Suporte ao Cliente](https://help.pushwoosh.com/hc/en-us/requests/new?utm\_content=pwwebsite\&utm\_term=footer\&utm\_campaign=support), e teremos prazer em fornecer mais orientações.
</Aside>