14

iPhone アプリのアプリ内購入の設定を検討しています。新しい自動更新可能なサブスクリプション タイプを使用する予定です。ただし、特定のサブスクリプションに複数の期間を提供したいのですが、SKProductsResponse.products 配列で返される SKProduct から期間を取得する方法がわかりません。

SKProduct オブジェクトには、price、localizedTitle、および localizedDescription があります。ただし、複数の期間でサブスクリプション ファミリーを設定する場合、タイトル/説明はファミリーに対して 1 回設定されるため、期間を含めることはできず、ドキュメントではタイトル/説明に期間を含めないように明示的に記載されています。ただし、アプリストアのカスタムで表示する期間を取得できる他のフィールドは表示されません。何か足りないのですか、それとも 4.3 まで利用できないのですか?

ポインタは大歓迎です!

4

3 に答える 3

11

product_id => lengthアプリ内またはアプリのバックエンドから取得したいずれかの場所に、何らかのマッピングが必要です。

于 2011-03-27T09:21:18.760 に答える
9

期間ごとに特定の productIdentifier を使用できます (以下のコードでは、1 か月のサブスクリプションの productIdentifier は「com.domainname.myapp.sub1month」であり、7 日間の期間は「com.domainname.myapp.sub7day」です)。 paymentQueue でそれを検索します。

-(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;
于 2011-03-30T18:34:24.457 に答える