iPhone - Как узнать длительность автообновляемой подписки для покупок в приложении - PullRequest
14 голосов
/ 06 марта 2011

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

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

Указатели очень ценятся!

Ответы [ 3 ]

10 голосов
/ 30 марта 2011

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

-(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;
10 голосов
/ 27 марта 2011

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

5 голосов
/ 01 марта 2018

iOS 11.2 переводит свойство subscriptionDuration в SKProduct.Я не думаю, что есть запасной вариант для старых iOS, хотя.

https://developer.apple.com/documentation/storekit/skproduct/2936884-subscriptionperiod

...