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で選択する
Bundle Identifierの設定
TARGETS>Summary内で
Bundle Identifierが今まで共通して使っている
App ID と一致しているか確認し、
違っていたら適時調整し一致させる
iTunes Connectでの準備
アプリの登録
課金テストをするだけでもまずはアプリを登録はしなければいけない。
アップロードはしなくても課金テストはできました。
テストだけで終えるなら、テスト完了後そのアプリを削除すればいいのではと。。
このアプリ登録の際にも
Bundle IDというのが必要のなのですが、
これも今回使っている
App ID と完全一致させなければいけない。
しかも、一度承認されたら変更はできない。
(なんかのタイミングでできた気もしますが…)
登録したアプリでIn-App Purchaseを設定
登録したアプリの画面からManage In-App Purchaseを選択し、
「Waiting for Screenshot」まで出るように登録します
ここで登録する「Product ID」を自分のアプリのプログラム内のIDとの一致を見るので、
この
Product ID も大事です。
設定確認
以上の設定をした後プログラムをランさせて、
こんな画面
が出れば成功です。
まとめ
お金に関わることなので当然ですが、
このアプリ内課金の設定はていねいにしてあげないとたちまちエラーになってしまいました
そんなに普段は開かないiOS Dev Center(自分だけ?)での設定が加わることで
取っ掛かりにくさを感じてしまうのでしょうか?