【iOS In-App Purchases (アプリ内課金)】Product IDが認識されなかった時にやったこと

2013/09/17  カテゴリー:iPhone アプリ開発    タグ:タグ: ,



IN app purchase

久々にとりかかったiOS In-App Purchases (アプリ内課金)。
するとProduct IDが認識されず結構困ってしまいました。
毎回調べるのも無駄なのでここでまとめて整理してみました。


Product IDのリクエストの返事の対応するため

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
で、IDリクエストが認識されているかを確認するために

 if ([response.invalidProductIdentifiers count] > 0) {   //IDが認識されていない場合        
        NSLog(@"ID認識されていません");
        return;
    }else{
        NSLog(@"ID認識されました");
    }

などとして、認識を確認するわけですが、
ここでID認識がされずに困ったのでメモ。

iOS Dev Centerでする準備


iOS App IDを設定してあること


設定場所
iOS Dev Center>Certificates, Identifiers & Profiles>Identifiers

ここのApp IDが結構大事 で、
この後のアプリ登録の設定にも使用するし、
アップロードする自分のアプリのBundle IdentifierはこのIDと完全に一致させないといけない

配布用の事前登録(Provisioning Profile Distribution)があること

設定場所
iOS Dev Center>Certificates, Identifiers & Profiles
> Provisioning Profile>Distribution

前述のApp ID を選択し、Profile Nameを決めて作成する

Xcodeでの準備


Code Sining Identityの設定

先ほど設定したProvisioning Profile Distributionを自分の作成したアプリ内(Xcode内)の
PROJECT>Build Settings>Releaseで選択する
Code Sining Identity

Bundle Identifierの設定

TARGETS>Summary内で
Bundle Identifierが今まで共通して使っているApp ID と一致しているか確認し、
違っていたら適時調整し一致させる
Bundle Identifier

iTunes Connectでの準備


アプリの登録

課金テストをするだけでもまずはアプリを登録はしなければいけない。
アップロードはしなくても課金テストはできました。

テストだけで終えるなら、テスト完了後そのアプリを削除すればいいのではと。。

このアプリ登録の際にも
Bundle IDというのが必要のなのですが、
これも今回使っているApp ID と完全一致させなければいけない。

しかも、一度承認されたら変更はできない。
(なんかのタイミングでできた気もしますが…)

登録したアプリでIn-App Purchaseを設定


登録したアプリの画面からManage In-App Purchaseを選択し、
Manage In-App Purchase
「Waiting for Screenshot」まで出るように登録します
Waiting for Screenshot
ここで登録する「Product ID」を自分のアプリのプログラム内のIDとの一致を見るので、
このProduct ID も大事です。

設定確認

以上の設定をした後プログラムをランさせて、
こんな画面
In-App Purchase
が出れば成功です。

まとめ

お金に関わることなので当然ですが、
このアプリ内課金の設定はていねいにしてあげないとたちまちエラーになってしまいました

そんなに普段は開かないiOS Dev Center(自分だけ?)での設定が加わることで
取っ掛かりにくさを感じてしまうのでしょうか?

Share on Google+Tweet about this on TwitterShare on Facebook