1

自動更新サブスクリプションを実装しようとしていますが、何かよくわかりません。

たとえば、雑誌のようなアプリがあり、サブスクリプションが無効になっていてもサブスクリプションを追跡したい場合、レシートをアプリ (コア データなど) に保存する必要がありますか? サブスクリプションが無効であっても、ユーザーに古い問題へのアクセスを許可する必要があるため、それらすべてを追跡する必要があります。したがって、ステータスコードは 0 または 21006 です。

もう 1 つの疑問は、たとえば誰かがサブスクリプションを誤って作成したなどの理由で Apple によってキャンセルされた、キャンセルされたサブスクリプションに対して Apple が 21006 ステータス コードを使用する理由です。現在無効であることがわかっているだけで、それが起こったかどうかをどのように判断できますか? また、購読期間外のため無効となる場合があります。この情報は、iTunes U の WWDC 2011 ビデオからのものです。

どんな助けでも大歓迎です;-)

4

2 に答える 2

0

Apple では、必ずしもアプリではなく、サーバーにすべての領収書を保存して確認することをお勧めします。誰かのサブスクリプションのステータスを確認するには、そのユーザー用に保存した領収書を確認してください。(同じサブスクリプション ファミリーからの領収書である必要があります) その後、Apple はそのサブスクリプションの最新の領収書で応答します。この情報を使用して、レシートの有効期限までの雑誌のすべての号をユーザーに提供できます。必要に応じて、これらすべてをアプリで行うことができますが、iTunessecretの確認をアプリ自体に保存する必要があるため、Apple は推奨していません。

2 番目の質問についてですが、私の推測では、Apple は返金を標準外と見なしているということです。したがって、彼らはそれに対して譲歩をしたくありません。彼らはそれを簡単にしたり自動化したりしたくありません。そのため、「ユーザーのサブスクリプションは払い戻しによりキャンセルされました」という特別なコードは取得されません。返金されたユーザーに雑誌の記事を無料で提供するだけで破産しないように、これが十分にまれであることを願っています. (そして、領収書の確認により、アカウントが更新されていないことが示されるため、新しい発行を発行する必要はありません)。

于 2012-03-07T08:56:47.303 に答える
0

Apple では、すべてのレシートをサーバーに保存して確認することをお勧めします。

(また)

RMStore は、トランザクションの永続性を委任し、キーチェーンまたは NSUserDefaults にトランザクションを格納するための 2 つのオプションの参照実装を提供します。トランザクションを実装したり、ライブラリが提供する参照実装を使用したり、非消耗品や自動更新サブスクリプションの場合は、レシートから直接トランザクションを取得したりできます。

  -(void) startProductPurchase{

 [[RMStore defaultStore] requestProducts:[NSSet setWithArray:_products] success:^(NSArray   *products, NSArray *invalidProductIdentifiers) {

    _productsRequestFinished = YES;
    NSLog(@"Product Request Finished");
    [self buyApplication:products];
   } failure:^(NSError *error) {

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Products Request Failed", @"")
                                                        message:error.localizedDescription
                                                       delegate:nil
                                              cancelButtonTitle:NSLocalizedString(@"OK", @"")
                                              otherButtonTitles:nil];
    [alertView show];
   }];

受信通知の更新 (iOS 7 以降のみ)

 - (void)storeRefreshReceiptFailed:(NSNotification*)notification;
 {
 NSError *error = notification.rm_storeError;
}

 - (void)storeRefreshReceiptFinished:(NSNotification*)notification { }

領収書の確認

RMStore は既定では受信確認を実行しませんが、参照実装を提供します。独自のカスタム検証を実装するか、ライブラリが提供する参照検証ツールを使用できます。

両方のオプションの概要を以下に示します。詳細については、wiki を参照してください。

参照検証者

RMStore は、RMStoreAppReceiptVerificator (iOS 7 以降の場合) および RMStoreTransactionReceiptVerificator (iOS 6 以前の場合) を介してレシート検証を提供します。それらのいずれかを使用するには、RMStore/Optional から対応するファイルをプロジェクトに追加し、起動時にベリフィケーター デリゲート (receiptVerificator) を設定します。例えば:

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
  const BOOL iOS7OrHigher = floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1;
_receiptVerificator = iOS7OrHigher ? [[RMStoreAppReceiptVerificator alloc] init] : [[RMStoreTransactionReceiptVerificator alloc] init];
[RMStore defaultStore].receiptVerificator = _receiptVerificator;
// Your code
return YES;
 }

詳細については、以下のリンクをたどってください。

iOS アプリ内購入が簡単に

アプリ内購入用の軽量 iOS ライブラリ

いらっしゃいませ。

それがあなたを助けることを願って.............

于 2014-09-09T07:51:15.883 に答える