ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
↑ 前回はUnity IAPで課金処理を実装したアプリを作りました。今回はそれをTestFlightで課金テストをしたいと思います。
まずプロジェクトをXcodeのほうでビルドして実機動作確認。
それが終わったらアプリアップロードのために色々やる。
まずApple DeveloperのCertificates Identifiers & Profilesにアクセス。App ID作る。
Provisioning Profile も作ってダウンロード&ダブルクリックで反映。
AppStoreConnect でアプリのページを作る。
App内課金 --> 管理
App内課金 の + クリック
タイプ選択画面。今回は非消耗型を選択。作成。
参照名はなんでもええみたい。製品IDはカタログで設定したProduct IDです。今回は999です。
価格はUnityの方はドルの0.99やったけどここでは日本円しか選択できないみたい。120円を選択しておくけど大丈夫なのか?コンテンツホスティングは何を言っているのか分からん。「コンテンツホスティングについて詳しく見る」をくりっくしたら飛んだページはnot found。もうええ。無視する。
ローカリゼーションで実際に課金ボタン押した時に表示される説明文などを入力。次のオプションのプロモーションは今回は使用しないことにした。
課金ボタン押した時のスクショをアップロードする。今回は開発環境のスクショだけど大丈夫なのか?一応審査メモにそのことを記載しておく。できたら右上の保存をクリック。(内部テストなら審査無いみたいなのであまり気にすることなかった)
スクショとかアップロードするページでApp内課金のところにさっき登録した課金アイテムがあるのでそれを選択。
Xcodeでビルドしてアーカイブしてアップロードする。
するとアプリページのTestFlightのところにアップロードしたアプリが表示される。
輸出コンプライアンスがありませんだって。その左にあるビルド番号をクリック。
テストの詳細に目的などを書いておく。
下のグループの+をクリックすると輸出コンプライアンスの回答を迫られるので回答してやる。
テスターをクリック。
自分(開発者)がいるのでそれを選択する。
すると私に招待メールが届くのでメールの指示に従う。TestFlightっていうアプリをイントールしてView in TestFlightをタップすればいよいよ課金テストができるぞ!
「テストするAppがありません」
ズコー
諦めるな、これが最後のトラップだ!
まずメールに記載されているView TestFlightを長押しタップする。そこにリンクが表示されるのでリンクをコピーを選択。それをsafariとかのブラウザURL欄に貼付けてリンク先に飛ぶ。
するとそこに Enter XXXXXXX って太字でコードが書いてあるのでそれをコピー。
で、さっきのAppがありません画面の右上にコードを使ういうのがあるのでそれをタップ。さっきのコードをペースト。
やった!ねんがんのテストバージョンをてにいれたぞ!
そうして無事、課金テストを実行できましたとさ。めでたしめでたし。この画面のスクショを撮ってアプリページのダミースクショと差し替えておきましょう。以上です。
・・・以上ではなかった。このあとアプリ公開の申請をしたらね、
「アプリに1つ以上のバグが見つかりました。 具体的には、有料コンテンツを購入した後、復元ボタンが応答しませんでした。 以下の詳細を確認して、次の手順を完了してください。 」
うーん?
試しにアプリをアンインストールして再インスコする。すると課金前の状態。
で、Restoreボタンを押すとちゃんと課金ボタンが消えて復元されてるじゃない。
ではなぜこんないちゃもんを付けられたのか?
多分だけどね。Restoreボタン押しても視覚的に実行された感が無かった?
そこでrestoreボタンを押して復元が完了したら画面を真っ赤にして復元完了を通知する作戦に出た。いいか!お前は復元したんだ!両の眼でこの血塗られた画面を見るがいい!これでボタンが反応してないなどと言えるもんなら言ってみやがれ!
//-------------------------------------------------------------Restore Red Display!!! public void PushRestore() { ActPanel = GameObject.Find("CoverRestore"); ActPanel.transform.localScale = new Vector3(1, 1, 1); //大きさ復活 } //-------------------------------------------------------------Restore Red Display!!! //-------------------------------------------------------------Restore OK and Scale Zero public void PushRestoreOK() { ActPanel = GameObject.Find("CoverRestore"); ActPanel.transform.localScale = Vector3.zero; //見えなくしておく } //-------------------------------------------------------------Restore OK and Scale Zero
CoverRestoreっていう真っ赤なImageに「完了しました」ってTextとOKボタンのオブジェクトを子オブジェクトとして入れておく。インスペクターのスケールを0にして最初は見えなくしておく。で、RestoreボタンオブジェクトのインスペクターのOnClickに上のスクリプトアタッチしたオブジェクトをD&DしてFunctionからPushRestore()関数を反映させる。OKボタンの方はPushRestoreOK()関数を反映させる。これでRestoreボタンを押したら真っ赤画面になって、OKボタンを押したらスケール0になって元に戻る。
さて、これでもう一回審査に出したところ、なんと通ったのであった。みなさんもRestoreボタン押した時はド派手な演出をして、反応しなかったなどと言われないようにしましょう。
以上です。お疲れさまでした。いやマジでiOSは疲れた。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー