iPhone/iPad アプリでアプリ内購入機能をテストしようとすると、「有効な製品がありません」というメッセージを繰り返し受け取りました。私は Web で多くのリストをチェックしましたが、すべてを網羅していると確信しました。
1 に答える
このバグに何時間も取り組んだ後、実際の問題が何であるか、したがって解決策を最終的に発見しました。
はい、アプリ内購入をテストするためにバイナリを送信する必要はありません。しかし、何が問題なのか分からなかったので、バイナリを提出することにしました。私は考えました、私はそれが何であるかを傷つける可能性がある他のすべてをしました。
だから、これが私がしたことです:
- アプリをアーカイブしました
- 「配布」ボタンをクリックした
- 「iOS App Storeに提出する」を選択して「次へ」をクリック
- [次へ] をもう一度クリックして、iTunes Connect にログインします。
バム!
「署名できる ID がありません」というメッセージを受け取りました
何?!!!どういう意味ですか?
これは、問題を絞り込むための非常に良いメッセージでした。これは、アプリをアプリ ストアに送信できないことを示していたので、バンドル ID を再確認する必要があると考えました。アプリでは良さそうですが、iTunes Connect ではどうでしょうか? iTunes Connect にログインし、[アプリの管理] に移動してアプリを選択しました。
ええとああ!何?間違ったバンドル ID を持っていましたか? どうして?
それは、最新の Xcode でアプリのこの新しいバージョンを作成したときに、まったく新しいプロジェクトを作成することに決め、プロジェクトの名前を変更し、もちろん別のバンドル ID を持っていたためです。あはは!
次のステップは、バンドル ID を古いものに変更することでした (これは Xcode プロジェクトの名前には関係ありません) 問題は、ターゲットを選択したときに、バンドル ID の最後に新しい Xcode プロジェクトの名前が灰色で表示されていたことです。名前を削除することはできません。私は問題をグーグルで調べました。ここにあなたがする必要があることがあります:
-info.plist を開き、バンドル識別子を編集します。サフィックス ${PRODUCT_NAME} を削除します。これで、バンドル ID を正しく設定できます。
それだけでした!バンドル ID を設定すると、アプリ内購入が機能しました。わーい!
ヒント: アプリ内購入アイテムの製品 ID (com.name.newprojectname) が新しいバンドル ID (com.name.newprojectname) と一致したので、すべて問題ないと思い込んでしまいました。いいえ。商品IDには何でも入れることができます。Xcode でアプリケーションを実行し、アプリ内購入を行おうとすると、Xcode で実行しているアプリケーションのバンドル ID が iTunes Connect に存在することを確認し、一致しない場合はメッセージを表示する必要があります。それは私に多くの時間を節約したでしょう。
最後に、アプリをアプリ ストアに送信できます。
このソリューションにより、他の開発者仲間が時間を節約し、髪を引っ張ることができることを願っています。