IPhone - Как получить продолжительность для автоматической возобновляемой подписки для покупок в приложении

Я ищу настройку в App Purchase для приложения для iPhone. Я планирую использовать новый тип автоматической возобновляемой подписки. Тем не менее, я хочу предложить несколько длительностей для определенной подписки, но не могу понять, как я могу получить продолжительность из SKProduct, которая возвращается в массиве SKProductsResponse.products.

Объект SKProduct имеет цену, localizedTitle и localizedDescription. Тем не менее, если вы настроили семейство подписки с несколькими длительностями, заголовок/описание устанавливаются один раз для семейства, поэтому вы не можете включать продолжительность, а документы явно указывают, что они не включают продолжительность в заголовке/описании. Однако я не вижу другого поля, где я могу получить продолжительность для отображения в моем обычном магазине приложений. Либо я что-то пропустил, либо не будет доступен до 4.3?

Указатели очень благодарны!

Ответ 1

У вас должно быть какое-то отображение product_id => length где-нибудь, либо в вашем приложении, либо извлечено из вашего приложения.

Ответ 2

Вы можете использовать определенный productIdentifier для каждой продолжительности (в коде ниже идентификатор продукта для подписки на 1 месяц есть "com.domainname.myapp.sub1month" и для 7-дневной продолжительности это "com.domainname.myapp.sub7day" ") и найдите это в платежном вызове:

-(void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{
   for(SKPaymentTransaction *transaction in transactions){
     switch (transaction.transactionState){
        case SKPaymentTransactionStatePurchasing:
            break;
        case SKPaymentTransactionStatePurchased:
            if([transaction.payment.productIdentifier isEqualToString:@"com.domainname.myapp.sub1month"]{
                newSubscriptionEndDate=[transaction.transactionDate timeIntervalSinceReferenceDate]+3600*24*31;
            }
            if([transaction.payment.productIdentifier isEqualToString:@"com.domainname.myapp.sub7day"]  ){
                newSubscriptionEndDate=[transaction.transactionDate timeIntervalSinceReferenceDate]+3600*24*7;
            }
            [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
            break;