android 版は 2023/9 から API33 に対応しないと、UPDATE 申請できなくなった。
なのにカメラプラグインが対応できていない・・・
cordova plugin add cordova-plugin-camera@latest
と思っていたら
cordova plugin add https://github.com/apache/cordova-plugin-camera.git
で取得した対応できていた。
プラグインIDから取得した場合、少し古いのかな。
android 版は 2023/9 から API33 に対応しないと、UPDATE 申請できなくなった。
なのにカメラプラグインが対応できていない・・・
cordova plugin add cordova-plugin-camera@latest
と思っていたら
cordova plugin add https://github.com/apache/cordova-plugin-camera.git
で取得した対応できていた。
プラグインIDから取得した場合、少し古いのかな。
久しぶりビルドするといつでも何かが起きる。
mac os 13 にアップデートしたから?
cordova platform add ios@latest したら
Ignoring json-1.8.6 because its extensions are not built. Try: gem pristine json –version 1.8.6
Ignoring ffi-1.15.5 because its extensions are not built. Try: gem pristine ffi –version 1.15.5
の警告が大量発生、ただこのままでも問題なく動作するような感じだが、気持ち悪い。
sudo gem pristine json –version 1.8.6 を実行してみるが
Operation not permitted と表示され、実行できない。
どうも、ターミナルのセキュリティを変える必要があるみたい
mac のコンパネから「プライバシーとセキュリティ」→「アプリケーション管理」→「ターミナル」をチェック
※この時に、ターミナルは全て止めておく
その後、
> gem pristine json –version 1.8.6
> gem pristine ffi –version 1.15.5
> gem install cocoapods
> cordova platform rm ios
> cordova platform add ios@latest
解決した。
https://github.com/CocoaPods/CocoaPods/issues/11627
icon.png 1024*1024
splash.png 2732*2732
のファイルを用意
未インストール時は以下でコマンドを追加
npm install cordova-res-generator -g
resources フォルダに上記 png を配置
cordova-res-generator
でリサイズされたファイルが作成される
cordova で iOS を利用するときは必ず
cordova platform add iOS@latest としていた。
ios 6.0.0 がインストールされていた。
ただ、ビルド時に
UserAgent プロパティがないエラーに。
少し前まで ios 5.1.1 を利用していたので
それに戻すとビルドは無事に通過。
https://github.com/ionic-team/cordova-plugin-ionic-webview/issues/561
New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).
Apple に ipa をアップ時、上記のようなエラーメールが届いていて、実行ファイルがアップされていなかった。
メールで届いていたので、発見に時間がかかってしまう。
Appleでは UIWebview を使えなくなってしまったようだ。
cordova iOS5.1.1 以降にする必要。
プラグインを追加
cordova plugin add cordova-plugin-wkwebview-engine
config.xml ファイルに以下を追加
<platform name="ios"> <preference name="WKWebViewOnly" value="true" /> <feature name="CDVWKWebViewEngine"> <param name="ios-package" value="CDVWKWebViewEngine" /> </feature> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" /> </platform>
そうすることで、WKWebView のみ使用されるようだ。
商品購入時にユーザーに毎回クレジットカード情報を入力してもらうのは使い勝手が悪いので
クレジットカード情報を stripe で保存できる機能を使う必要がありそう。
クライアント(JavaScript)側で実装するのかと勘違い。
cordova-plugin-stripe を調べても見つかるわけがない。
サーバー(phpなど)側で実装する。
【クレジットカード保存してなかった時は】
// オーソリ(与信枠の確保)
$charge = \Stripe\Charge::create(array(
‘amount’ => $_POST[‘amount’],
‘currency’ => ‘jpy’,
‘source’ => $_POST[‘token_id’], // クレジットカードトークン
‘capture’ => false,
));
// 売上の確定
$charge->capture();
【クレジットカードを保存するようにする場合】
// 顧客情報作成
$stripe_customer = \Stripe\Customer::create(array(
‘source’ => $_POST[‘token_id’], // クレジットカードトークン
‘email’ => $_POST[‘email’], // メールアドレス
‘name’ => $_POST[‘customer_name’], // 顧客の名前
));
// オーソリ(与信枠の確保)
$charge = \Stripe\Charge::create(array(
‘amount’ => $_POST[‘amount’],
‘currency’ => ‘jpy’,
‘customer’ => $stripe_customer->id,
‘capture’ => false,
));
// 売上の確定
$charge->capture();
そして、$stripe_customer->id の値を データベース(ユーザー情報)などに保持しておく
【既にクレジットカードを保存している場合】
// データベース(ユーザー情報)から STRIPEの顧客IDを取得
$stripe_customer_id
// オーソリ(与信枠の確保)
$charge = \Stripe\Charge::create(array(
‘amount’ => $_POST[‘amount’],
‘currency’ => ‘jpy’,
‘customer’ => $stripe_customer_id,
‘capture’ => false,
));
// 売上の確定
$charge->capture();
android で 開発時 cordova で facebook シングルサインオンを試してみると
「ログインエラー:このアプリケーションにログインできませんでした。しばらくしてから、もう一度実行してください。」のエラー
アプリのキャッシュを消しても、アプリ再インストールしても、待ってもダメ。
結果、developer facebook に登録するキーハッシュの値が正しくなかった
> keytool -exportcert -alias xxxxx -keystore xxxxx.keystore | openssl sha1 -binary | openssl base64
-alias の部分も keystore 作成時に指定した 文字と同じでないと正しい、ハッシュキーは作成されない。
コマンドで環境を作る前に、visualStudioで環境が作れるのかを試す。
空プロジェクトを実行しようとすると以下のエラーが
DEP0100: ターゲット デバイスで開発者モードが有効になっていることを確認してください。エラー 800704C7 のため、開発者ライセンスを取得できませんでした。
「windows+x」 → 「設定」 → 「開発者向け」 → 「開発者モード」を選択
することで、実行できました。
WindowsアプリでもユニバーサルWindowsプラットフォーム(UWP)だから
なのでしょうね。
以前までコンパイルできていたプロジェクトが以下のようなエラーになる。
The library com.google.android.gms:play-services-measurement-base is being requested by various other libraries at [[15.0.2,15.0.2]], but resolves to 15.0.4. Disable the plugin and check your dependencies tree using ./gradlew :app:dependencies.
ネットで色々と調べていると、
https://github.com/arnesson/cordova-plugin-firebase/issues/1066
cordova-plugin-firebase で利用される個々のライブラリのバージョンを指定する必要があるとのこと
とりあえず、
cordova platform rm android
cordova plugin rm cordova-plugin-firebase
cordova plugin add cordova-plugin-firebase@latest –save
plugins\cordova-plugin-firebase\plugin.xml を編集して
====================================
<framework src=”com.google.android.gms:play-services-tagmanager:16+” />
<framework src=”com.google.firebase:firebase-core:16.0.8″ />
<framework src=”com.google.firebase:firebase-messaging:17.5.0″ />
<framework src=”com.google.firebase:firebase-config:16.4.1″ />
<framework src=”com.google.firebase:firebase-perf:16.2.4″ />
====================================
cordova platform add android@latest
cordova run android
だが、別のエラーが
platforms\android\build.gradle を編集して
====================================
classpath ‘com.google.gms:google-services:4.1.0’
↓
classpath ‘com.google.gms:google-services:4.2.0’
====================================
cordova run android
だが、別のエラーが
以下のプラグインも追加で必要そうだ。
cordova plugin add cordova-android-firebase-gradle-release@3.0.0
cordova plugin add cordova-android-play-services-gradle-release@3.0.0
※最新で 4.0.0 だったが、3.0.0 でないとエラー。詳しくは調べずに、3.0.0 に。
根本的に cordova-plugin-firebase の更新を待つべきかもしれないが
依存関係を無視するという方法があり
platforms\android\app\build.gradle を編集して
最終行に以下を追加
====================================
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
====================================
cordova run android
で実行はできた。プッシュ通知は安定して送られるのか?
この解決はあかんのだろう。
テストユーザーを登録したのに、件名のようなエラーがでる。
Androidでテストするには Androidのプラットフォーム追加を developer facebook で行っておかないといけない。
アプリIDはanroidで開発者登録しておいた方が良いし
Androidなら、キーハッシュが必要。