タイトルのメッセージが返却され、アプリ内課金が反映されない。リストアしても未購入となるパターン。
対処方法は2つあります。
アプリ利用者側の対応
この件をiTunes Supportへ問い合わせたところ、以下の改善方法を返信していただけたので掲載しておきます。
– アプリケーションマルチタスク終了
http://support.apple.com/ja-jp/ht5137
→対象アプリを一度終了させて、再度、起動するということだと思います。
– iOS アップデート
http://support.apple.com/kb/HT4623?viewlocale=ja_JP
– 本体再起動
https://support.apple.com/ja-jp/HT201559
– iTunes からサインアウト/サインイン
1) 「設定」、「iTunes & App Store」の順にアクセスします。
2) 「サインアウト」をタップします。
3) Apple ID とパスワードを入力し、サインインをタップします。
– Safari、Cookie のブロックを一時的にはずす
設定 > Safari > Cookie をブロック > 常に許可
– Safari、「履歴」と 「Web サイトデータ」 を消去
設定 > Safari > 履歴とWebサイトデータを消去
– 時間設定が正しいことを確認
設定 > 一般 > 日付と時刻 > 自動設定
上記の方法で改善しない場合は、
「iTunes Store サポートお問い合わせ先」
http://www.apple.com/jp/support/itunes/contact/
こちらの、
-
「Apple サポートに問い合わせる。」から
-
iPhoneを選択し「購読と購入」を選択、
-
「iTunes/App Storeでの購入ができない」
-
または「該当するトピックがない」
を選択し、サポート方法でメールを選択します。
直接その場でチャットや、電話のサポートも選択できるかもしれません。
メールの場合は入力欄を埋め、Apple IDの入力と、問題の概要(購入時メールに記載されているご注文番号などがわかれば)を記載して、送信します。
Appleのサポートで、対象の決済をキャンセルしてもらうことで、再購入ができるようになるはずです。
以下の購入履歴の参照から、エラーとなっている対象がわかるとよいですね。(購入履歴は、購入後の即時の反映はされないと思われます)
App Store や iTunes Store で購入履歴を確認する
https://support.apple.com/ja-jp/HT204088
開発側として素早くサポートする場合、Apple サポートへは購入された本人からの連絡が必要ということなので、問題が発生している購入者へ、上記の内容をお伝えし、直接iTunes Storeサポートへ連絡してもらうのが良さそうです。
利用者側では、素早くどうにかしてほしい場合は、上記のiTunes Storeサポートへ。
開発側の対応を待ちたい場合は、以下「アプリ開発側での対応」の情報を、開発者側へもお伝えすると良さそうです。
現在は、以下のアプリからでもAppleサポートとのやりとりが可能です。以下のアプリをインストールしておくと、iTunes Store サポートWEBサイト上のリンクから、アプリが開かれます。
アプリ開発側での対応
この状況は、購入処理がうまく完了されていない場合に発生するようです。
例えば、購入を行っている途中でアプリが閉じられた場合。
購入時、ユーザーの購入情報(クレジットカードなど)の入力が必要となった場合に、別の画面に遷移します。そういった場合です。
Appleが提供している購入処理のサンプルには、この状況の対応は含まれておらず、ごく一般的に発生してしまう問題と言えます。
iTunes Storeサポートでは、この問題となっている購入処理を、手動でうまく終了してくれるのかもしれません。
この問題は、以下のような噂程度の情報もありますので、他にも原因となるパターンがあるのかもしれませんね。
- 数日待ってるといつの間にか改善した
- iTunesアカウントのログオフ、再度のログインで改善した
- iPhoneの再起動で改善した
具体的な対応は、画面遷移などで終了されていない、アカウントに紐付く購入トランザクションを、うまく終了させます。
- (void) closeUnfinishedTransaction { if([[[SKPaymentQueue defaultQueue] transactions] count] >0){ for(SKPaymentTransaction *skpt in [[SKPaymentQueue defaultQueue] transactions]){ if(skpt.transactionState != SKPaymentTransactionStatePurchasing){ [[SKPaymentQueue defaultQueue] finishTransaction:skpt]; } } } return; }
こういった処理で、transactionStateが購入中ではなく、購入した、リストアした、失敗したの状態を完了させます。
購入画面表示時や、購入&リストアボタンのタップ後のcanMakePayments直後などに行うとよいのかなと思います。
『購入した(SKPaymentTransactionStatePurchased)』の場合は、購入時の処理(フラグ立てやアイテム追加など)も行うと、内容次第で多重となっても問題にはならなそうにも。
基本的に未処理の購入処理が入っているはずで、次回のaddTransactionObserver後に、paymentQueue:updatedTransactionが呼ばれそうなのだけど、呼ばれない時もあるんですかね。
SKPaymentTransactionの、payment.productIdentifierで対象がわかります。
SKPaymentTransaction
SKPayment
☆最近人気のうちのアプリ!☆
誕生日カウントダウン
一度設定したら、毎年通知してくれますよ!「前日と当日に通知」なども設定可能!
コメント
課金とはなに?
課金は、アプリ内から追加機能などを購入することです。
このApp内課金はすでに購入です。のな仕方どんなですか?!
iPhoneの再起動、iTunesアカウントのログインし直しなどで治らない場合は、Appleへの問い合わせが確実だと思いますよ。記事内にあるAppleサポートのWEBページからのメールか、専用のアプリから問い合わせることで、丁寧にサポートしてくれるはずです。
このサイトを見つけてわらをもすがる思いでアップルに連絡しましたが、サポートでも解決できずにアプリ側へ丸投げされました。アプリ側へのメールでも対応できずに八方塞がりです・・・・。
買い切りのアイテムなどで発生すると思いますが、エラーが発生しているiTunesアカウント、対象アプリ情報と、購入時の領収書メールなどが存在した場合、解決してもらえる問題と認識しています。
そういった必要となる情報が足りなかったため、サポート側で対象の購入情報にたどり着けなかったか、この問題を熟知していないサポートの方だったか、とも思われましたので、再度Appleサポートを訪ねてみてもよさそうです。
アプリ開発側は、その問題への検証と、アプリのアップデートが必要なため、1度の要望メールからそこまで行ってくれるかは、開発側次第ですね。
その買い切りの何かを、どうしても使いたい場合は、別のiTunesアカウントを作成し、そのアカウントでアプリをインストールし、再度うまく購入する(別のアプリへ移動しないように購入を終える)のもひとつの手ではあります。インストール後は、元のアカウントへ戻してもアプリ自体は使えますので。
さらに試すか諦めるかの参考となれば。
ダイヤを課金したら、すでに購入済みです。無料で購入できます。とメッセージが出るが、やり方がわからない。
課金中に画面を移動したりした場合(によく発生すると思われる)の、うまく課金処理が反映されなかった現象と思われますので、「Appleサポート」のアプリをダウンロードして、直接Appleへ聞いてみるやり取りが良いのかと思います。Appleから届く領収書メールがあると、話がスムーズかもしれません。以下のサイトで見れる購入履歴が代用できるとは思います。
App Store や iTunes Store で購入履歴を確認する
https://support.apple.com/ja-jp/HT204088