質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

2回答

2313閲覧

MonacaのIn-App Purchase Plugin Demoが正しく動作しない

araya

総合スコア4

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2018/07/28 00:34

編集2018/07/28 02:47

MonacaのIn-App Purchase Plugin DemoをビルドしてiPhoneでアプリを開いています。

demoのurl
https://docs.monaca.io/ja/tutorials/in-app_purchase/

本来であれば以下の画像のように表示されるはずのようなのですが、
本来金額が表示されたボタンが表示されるべきところに"Extra Life Invalid"を始めとしたエラー表示が挿入されています。

イメージ説明

ソースコードのapp.js内の271行目の条件分岐(以下コード)に引っかかっているようで、
pに値が入ってきていないことが原因ではないかと思っています。

javascript

1 else if (!p.valid) { 2 el.innerHTML = '<h3>' + p.alias + ' Invalid</h3>'; 3 }

pに正しい値が入ってくるようにするためにはどうすれば良いのでしょうか?
私がビルドした環境などに原因があると考えられるのでしょうか?
原因が特定できないため、お知恵を貸していただければと存じます。
よろしくお願いいたします。

該当のソースコード(pが関与していそうな部分を抜粋)

javascript

1store.when("product").updated(function (p) { 2 app.renderIAP(p); 3 console.log(p); 4}); 5 6store.when("subscription1").approved(function(p) { 7 log("verify subscription"); 8 p.verify(); 9}); 10store.when("subscription1").verified(function(p) { 11 log("subscription verified"); 12 p.finish(); 13}); 14store.when("subscription1").unverified(function(p) { 15 log("subscription unverified"); 16}); 17store.when("subscription1").updated(function(p) { 18 if (p.owned) { 19 document.getElementById('subscriber-info').innerHTML = 'You are a lucky subscriber!'; 20 } 21 else { 22 document.getElementById('subscriber-info').innerHTML = 'You are not subscribed'; 23 } 24}); 25 26app.renderIAP = function(p) { 27 28 var parts = p.id.split("."); 29 var elId = parts[parts.length-1]; 30 31 var el = document.getElementById(elId + '-purchase'); 32 if (!el) return; 33 34 if (!p.loaded) { 35 el.innerHTML = '<h3>...</h3>'; 36 } 37 else if (!p.valid) { 38 el.innerHTML = '<h3>' + p.alias + ' Invalid</h3>'; 39 } 40 else if (p.valid) { 41 var html = "<h3>" + p.title + "</h3>" + "<p>" + p.description + "</p>"; 42 if (p.canPurchase) { 43 html += "<div class='button' id='buy-" + p.id + "' productId='" + p.id + "' type='button'>" + p.price + "</div>"; 44 } 45 el.innerHTML = html; 46 if (p.canPurchase) { 47 document.getElementById("buy-" + p.id).onclick = function (event) { 48 var pid = this.getAttribute("productId"); 49 store.order(pid); 50 }; 51 } 52 } 53}; 54

補足情報(FW/ツールのバージョンなど)

MacOS Sierra 10.12.6
XcodeVersion 9.2
iOS 11.4.1
Cordova 7.1.0

###追記:以下、Cordova plugin
(すべてsampleに最初から入っているもので、私が追加したものはありません)
cordova-custom-config v5.0.2
cordova-plugin-device v2.0.1
cc.fovea.cordova.purchase バージョンの記載なし
monaca-plugin-monaca-core v3.2.0
cordova-plugin-splashscreen v5.0.1
cordova-plugin-whitelist v1.3.3

###追記:エラー表示
エラー表示としては、Refresh purchaseボタンを押したときに以下の表示になります。
ビルドする前の状態ではcc.fovea.cordova.purchaseプラグインが動かないので、
googleChromeの開発ツールでエラーを確認することができませんでした。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

Monacaサポートから教えていただいたところ、デモアプリは以下の手続きによって正しく動作するようです。

①デモをインポートする
②App Store Connectで課金の設定をする(その際、デモアプリ内に設定されているアイテムIDを登録)

②の検証はしていませんが、デモアプリ内のコードを参考にして自分で作っているアプリの登録をしてみようと思っています。結果はまた載せます。

投稿2018/08/03 01:09

araya

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1. cc.fovea.cordova.purchase プラグインは入ってますでしょうか?
2. 他にエラー(もっと頭の方)が出てたら載せたほうがいいですよ。

投稿2018/07/28 01:27

oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

araya

2018/07/28 02:46 編集

ご指摘ありがとうございます。投稿の末尾に追記しました。cc.fovea.cordova.purchaseは入っています。
araya

2018/08/03 01:04

お返事遅くなり失礼いたしました。 ご教授ありがとうございます。 Monacaサポートに確認したところ、以下の通りお返事いただきました。 アプリをインポートして立ち上げれば正しいデモ画面が表示されると思ってたのですが、 そうではない、ということのようでした。 以下、サポートから頂いた内容 ↓ アプリ内課金の検証についましては、Cordovaプラグイン側の設定だけではなく、 「App Store Connect」に登録されているアプリに設定されているアプリ内課金アイテムや、 「App Store Connect」にて、アプリ内課金を行うために必要な設定が正しく行われていない場合は、 正常に動作いたしません。
oikashinoa

2018/08/03 03:04

解決おめでとうございます。参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問