質問編集履歴

1 文章の修正

Ryo1012

Ryo1012 score 11

2016/10/27 14:18  投稿

ios アプリ内課金されたことをローカルに保存する方法
質問させていただきます。
iosにて消耗型のプロダクトを用いたアプリ内課金のアプリを開発しています。
■ご教示いただきたいこと
課金されたことをローカルに保存する方法
■詳細
Appleのドキュメントによれば、消耗型のプロダクトを課金された場合は、課金したユーザーが利用する全ての端末でサービスを提供できるようにする必要があると書いてありました。
そのため以下の方法でアプリを作成しました。
1.アプリ内でユーザーにユーザー登録していただく。
2.ログイン後、「課金」ボタンを表示
3.課金後コンテンツを表示可能にする
4.また、課金されたらユーザーが登録したアドレスに紐づけて課金されたことを独自サーバーのDBに保存
5.別端末でログインされた場合も、独自サーバーの情報に課金されたことが記録された場合はコンテンツを表示可能にする。
5.別端末でログインされた場合も、独自サーバーの情報に課金されたことが記録されていた場合はコンテンツを表示可能にする。
※コンテンツは複数あるため、課金は複数回あります。
以上のような内容でアプリを開発し審査に通したところ、Appleにリジェクトされてしまいました。
理由は
・課金のためにユーザー登録を必須にしてはならない。
・あくまでユーザーの任意でユーザー登録を行い複数端末で利用できるようにする。
・そのため、ユーザー登録をしなくても課金できる必要がある。
・その場合サーバーではなくローカルに課金されたことを保存しておく必要がある。
とのことでした。
今までサーバーで課金されたことを管理することばかりに目を向けていたため、ローカルで課金されたことを保存する方法が分からなくて悩んでいます。
UserDefaultなどいくつか方法があることは分かったのですが、どの方法が一番いいのか分からない状態です。
このような情報をiosのローカルに保存する最適な方法をご教示していただけたらと思います。
■保存したい情報
課金したコンテンツのコンテンツIDと購入した日付(複数)
■環境
Xcode7.3 swift2.2
よろしくお願い致します。
  • iOS

    5321 questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Xcode

    5753 questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • Swift 2

    1348 questions

    Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る