iOS 課金テスト

App Store Connect で新規アプリを追加する
Bundle ID を合わせておく。

機能 → App内課金 から
テストで使用する商品を登録する

製品ID を合わせておく

トップに戻って、
ユーザーと役割 → Sandboxテスター から
課金テストをするApple IDを登録する(既にあればそれを利用する)

テストに使用する iPhoneで課金テストのアカウントでサインインし直す。

Android で課金テスト「出版社はこのアイテムを購入できません」でる

出版社という意味が良くわからないが、
開発者アカウントではという意味だと思われる。

「開発者アカウントではこのアイテムを購入できません」

テスト用に別のアカウントを作成してAndroidに設定して動作確認。
とても面倒くさい。

「指定したアイテムを購入できません」と出たら
テストアカウントでログインされていない可能性もあるので、
アカウントを変更してから、アプリをストアからダウンロードして確認。

重要なことは、テストで課金してしまわないように
テストを行うアカウントを
google play console の
設定 → デベロッパーアカウント → アカウントの詳細 → ライセンス テスト に
カンマ区切りでアカウントを追加しておくこと

そうすると、購入ダイアログで
「これはテスト用の注文です。課金は発生しません。」
と表示される。

Android で課金テスト

google play console でアプリを登録する
 画面キャプチャーやアイコン等も必要なのでそれなりに準備が必要

テストなんで、
「内部テスト版」で設定。

色々設定して、申請すると1時間くらいして、公開される。

そうすると、以下のようなURLが出てくるので
テストユーザーに登録している端末でアプリをダウンロード

https://play.google.com/apps/internaltest/999999999999999999999

一度でも流れがわかっていたらたいしたことないんだけどね。

purchase を使用時、’Cordova/NSData+Base64.h’ file not found のエラー

android では利用できそうだったのに、iosだとエラー

cordova-plugin-purchase をアンインストールして

https://github.com/j3k0/cordova-plugin-purchase.git を
git でインストールしたら、iosでもコンパイルが通った。

GoogleService-Info.plist の配置位置が変わった?

[Firebase/Core][I-COR000001] Configuring the default app.
Terminating app due to uncaught exception ‘com.firebase.core’,
reason: ‘Configuration fails. It may be caused by an invalid GOOGLE_APP_ID in GoogleService-Info.plist or set in the customized options.’

以前は GoogleService-Info.plist ファイルは
root フォルダに配置だったのに、以下フォルダに自動的に配置されていて、なのに必要な情報が未設定だったので、上書き

platforms/ios/Resources/GoogleService-info.plist

cordova で fcm を使うためGoogleService-Info.plist を追加したところでエラーが発生する

iOS で いつも通りに
GoogleService-Info.plist
を root に追加して、コンパイルすると以下のエラーが発生した。

Terminating app due to uncaught exception ‘com.firebase.core’, reason: ‘Configuration fails. It may be caused by an invalid GOOGLE_APP_ID in GoogleService-Info.plist or set in the customized options.’

原因は
Resources / Resources フォルダーに 既に GoogleService-Info.plist が入っていたこと
何で急に入るようになったのか。

とりあえず、勝手に入っているファイルを上書きしてコンパイルが通るようになった。

iOS で FCM

以前より送るための準備(設定)の手間が増えていた。

Android だと、設定ほとんどなく送れたのに・・・

Apple Developer サイト Certificates, Identifiers & Profiles にて

Identifiers の AppIDs に Push Notifications をチェックするのは必要
Configurable の状態のままでも大丈夫。

そして
Create New Key が必要。

Key Description は適当に バンドルIDのピリオドを 半角スペースにした名前にしてみた
com.hogehoge.app

com hogehoge app push

①Key ID と ②AuthKey_[KEY ID].p8 ファイルを手に入れることができる

あと、Apple Developer サイト Membership Details にて
③Team ID も必要になる

firebase サイト 設定 → クラウドメッセージング の
iOS アプリの設定 より
②AuthKey_[KEY ID].p8
①Key ID
③Team ID
を設定

cordova で iOS の時、バウンドが発生しwebViewだとわかりやすい

config.xml に以下を追加

config.xml にはある程度のものを追加する必要がある

※ Cordova 6.3.1 から Cordova 7.1.0 にアップデートしてからは解消された。

cordova で PUSH 通知、結局 cordova-plugin-fcm

以前はサックっと使えたので久しぶりだったがうまくいくと思っていたら
色々とうまくいかなかった。

 visual studio のプラグイン一覧には phonegap-plugin-push なので
 こちらを入れてみようとしたが
 2.2.3 は cordovaのバージョンを 7.1.0 以上を入れる必要があると警告がでる
 無視して使ってみたが
 結局ライブラリがインストールされておらず
 PushNotification.init 時点で undefine でエラーとなる。

 cordova を 7.1.0 にするために
 npm install -g cordova@7.1.0 などでインストールしてみるが
 visual studio の config.xml で 7.1.0 選択してみるがダメ。
config.xml を直接
 6.3.1
 ↓
 7.1.0
 などしても、結果は同じ

 あきらめて
 cordova-plugin-fcm を カスタムインストールでプラグインID指定してインストール
 すると
 Error: File path too long on Windows, keep below 240 characters
 のエラーが発生、こんな制限があるなんて思わず、仕方なく
 visual studio のプロジェクトの配置パスをc:\cordova\project のように短くして
 インストールできた。
 このような制限がある、プラグインは使いたくないが・・・

 firebase cloud message を使用するので、以下のファイルを配置して 
 google-services.json
 GoogleService-Info.plist

 あとは、deviceready イベント後に
FCMPlugin.onNotification
 で、イベントが届くことが確認できた。