[AppStore] App内購入を申請してRejectされたときにSKProduct情報がきちんと取得できなくなる

App内購入付きのアプリをAppStoreに申請して、Rejectされたあとに、動作確認するときちんとSKProductの情報が取得できなくなることがあったので、メモ。

取得できなくなるプロパティを持つクラス

SKProductの一部の情報がきちんと取得できなくなりました。
retrieveProductsInfo をつかって、取得すると、きちんと取得できるのですが、一部の情報が取得できなくなるために、不整合が起こりました。

取得できなくなるプロパティ

以下の2つの属性が、””(空文字)で返ってきます。

  • localizedTitle
  • localizedDescription

不思議なことに、localizedPriceは、きちんと返されるので、自分でどこかおかしくしてしまったかといろいろとチェックしてしまいましたが、AppStore側に理由がありました。




理由は、App内購入アイテムがリジェクトされているから

どうせなら、titleやdescriptionではなく、SKProductそのものを取得できなくなる方が正しい気もします。
おそらく、すでに一度申請が通ったアプリの更新でRejectされるケースもあるとおもうので、そのようなケースに向けての対応な気がします。

解決方法

きちんと取得できるようになるためには、App内購入アイテムのリジェクトマークを消す必要があります。
そのためには、App内購入アイテムが一度でもアップデートされる必要があります。具体的には、保存ボタンが押さて、何かがアップデートされる必要があります。これは、App内購入アイテム毎ではなく、App内購入アイテムのローカライゼーション毎にアップデートされる必要があります。なので、例えば、3種類のアイテムがあって、3言語分あると、3x3で9個のアップデートが必要となります。

リジェクト理由は別にあって、アップデートする必要がない時は?

メタデータ等でリジェクトされたのであれば、必然的にアップデートを行うことになると思うのですが、別の理由でリジェクトされていたらどうすれば良いのでしょうか?
しばらく悩んだのですが、単純でした。タイトルや詳細説明の文字列に変更を加えて保存すればOKでした。例えば、空白を加えるというのも良いアイデアかもです。




MEMO
自分は、上記を知らずに、「いろいろアップデートしているうちにコードを動かなくしてしまった!」と焦って、半日くらい潰してしまいました・・・・

説明は以上です。

コメントを残す

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