iOSで、アプリ内課金の非消費型のアイテムの状態を共有/リストアするための方法

こんにちは、JAGA(ja_gaimopotato)です。
iOSアプリでアプリ内課金をするとなると、いくつかの種類から選ぶ必要があります。

  • 非消費型のアイテムの購入(Non-Consumable)
  • 消費型のアイテムの購入(Consumable)
  • 定期購読への加入(Auto-Renewable Subscriptions,Non-Renewing Subscription)

以上の中から、適したものを選ぶ必要があります。]

定期購読の自動更新と非消費型のアイテムの購入の場合は、Apple IDから復元が可能なのでユーザーは安心できる仕様なのですが、自動更新ではない定期購読と消費型のアイテムは、アプリやサービスサイドで管理しなければ消える仕様となっています。  

同じ端末であればアプリを削除しても、キーチェインに保存しておけば復元できるようなので、一応の保護は可能です。
Cocoaの日々: [iOS] Keychain Services とは

さらに消費型のアイテムの状態を同じユーザーの別の端末でも共有する方法を提供したいと考えたときに、以下の手段が考えられます。

  • iCloudで共有する。
  • ユーザーアカウントを管理するWebサーバを用意して、ログインすることで共有する。

iCloudは、オフにしているユーザーへは対処できないのが残念です。

サーバを用意する方が、汎用的なのですが少し手間がかかります。
※自動更新でない定期購読の場合には、サーバで管理しなければ審査が通らないという話もあるようです。

これは、Parseを利用すると、とても簡単に実現できます。

Parse

Parseを使うと、本当に簡単に自分のアプリのユーザーを登録できます。

PFUser *user = [PFUser user];  
user.username = @"ユーザー名";  
user.password = @"パスワード";  
user.email = @"メールアドレス";  
[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {

}];

たったこれだけのコードでいいんです。

ユーザーごとにオブジェクトを保存することも一瞬で実装できます。

ですので、消費型のアイテムの状態を共有することも、すぐにできます。

[[PFUser currentUser] setObject:@"アイテムA" forKey:@"アイテムの状態"];

加えて、ユーザーの登録については、とても豊富な機能があります。

たとえば、メールの認証をする必要がある場合は設定をONにするだけでOKです。

Parse purchase item sync

仮ユーザーを作っておいて、あとで本登録という流れも簡単に実現できます。

[PFUser enableAutomaticUser];  
[PFAnonymousUtils logInWithBlock:^(PFUser *user, NSError *error) {  
    user.username = @"hoge";   
    user.password = @"hogexhoge";  
    user.email = @"hoge@hoge.com";    
    [user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {

    }];  

}];

他にもFacebookや、Twitterで連携も可能です。

ここまで簡単にバックエンドの環境が整えられるのであれば、アイデアを形にする上でハードルがかなり下がります。

本当に素晴らしいサービスだと思います。

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です