Ответ 1
У вас должно быть какое-то отображение product_id => length
где-нибудь, либо в вашем приложении, либо извлечено из вашего приложения.
Я ищу настройку в App Purchase для приложения для iPhone. Я планирую использовать новый тип автоматической возобновляемой подписки. Тем не менее, я хочу предложить несколько длительностей для определенной подписки, но не могу понять, как я могу получить продолжительность из SKProduct, которая возвращается в массиве SKProductsResponse.products.
Объект SKProduct имеет цену, localizedTitle и localizedDescription. Тем не менее, если вы настроили семейство подписки с несколькими длительностями, заголовок/описание устанавливаются один раз для семейства, поэтому вы не можете включать продолжительность, а документы явно указывают, что они не включают продолжительность в заголовке/описании. Однако я не вижу другого поля, где я могу получить продолжительность для отображения в моем обычном магазине приложений. Либо я что-то пропустил, либо не будет доступен до 4.3?
Указатели очень благодарны!
У вас должно быть какое-то отображение product_id => length
где-нибудь, либо в вашем приложении, либо извлечено из вашего приложения.
Вы можете использовать определенный 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;