cordova で windows アプリ

コマンドで環境を作る前に、visualStudioで環境が作れるのかを試す。

空プロジェクトを実行しようとすると以下のエラーが

DEP0100: ターゲット デバイスで開発者モードが有効になっていることを確認してください。エラー 800704C7 のため、開発者ライセンスを取得できませんでした。

「windows+x」 → 「設定」 → 「開発者向け」 → 「開発者モード」を選択
することで、実行できました。

WindowsアプリでもユニバーサルWindowsプラットフォーム(UWP)だから
なのでしょうね。

facebook 指定されたURLは、アプリケーションの設定で許可されていません

テストユーザーを登録したのに、件名のようなエラーがでる。
Androidでテストするには Androidのプラットフォーム追加を developer facebook で行っておかないといけない。

アプリIDはanroidで開発者登録しておいた方が良いし
Androidなら、キーハッシュが必要。

from origin ‘null’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

サーバーに通信したところ、件名のエラーが発生。
セキュリティの問題、不特定多数の端末からアクセスされる前提なので

.htaccess に以下を追加すれば大丈夫。
Header append Access-Control-Allow-Origin: *

No installed build tools found. Install the Android build tools version 19.1.0 or higher.

windowsマシンに新たにcordova環境を作ろうとして
Android Studio を入れたらAndroid SDK もインストールされると思って安心していたら
上記のエラー、パスは勝手に設定してくれないみたい。
以下のパスを追加
C:\androidのSDKパス\platform-tools

cordova-plugin-firebase iOS バナーが表示されない

window.FirebasePlugin.onNotificationOpen のイベントは届くのに バナーが表示されない。 firebase 側の問題なのかなと思っていたが、 xcode でコンパイルを Legacy Build にするとで直った。 File -> Project Settings -> Build System を New Build System (Default) を Legacy Build System にすることで対応

Error while reading embedded mobileprovision Error Domain=NSCocoaErrorDomain Code=260

cordova-plugin-firebase
iOS で通知がこない。ログを見ていると・・・

5.7.0 – [Firebase/InstanceID][I-IID003014] Error while reading embedded mobileprovision Error Domain=NSCocoaErrorDomain Code=260 “ファイル“embedded.mobileprovision”は存在しないため、開けませんでした。” UserInfo={NSFilePath=/var/containers/Bundle/Application/9B4820D5-BB5C-45F4-9145-ED4369D79018/SagabiAPP.app/embedded.mobileprovision, NSUnderlyingError=0x281dbd170 {Error Domain=NSPOSIXErrorDomain Code=2 “No such file or directory”}}

■対策
cordova/lib/copy-www-build-step.js
Line 56
shell.rm(‘-rf’, path.join(dstDir, ‘embedded.mobileprovision’));

///shell.rm(‘-rf’, path.join(dstDir, ‘embedded.mobileprovision’));

参考 https://github.com/phonegap/phonegap-plugin-push/issues/2518



info.plist
FirebaseAppDelegateProxyEnabled:boolean = NO
FirebaseMessagingAutoInitEnabled:boolean = YES

cordova-plugin-fcm ある時から Build faild

cordova-plugin-badge
cordova-plugin-device
cordova-plugin-dialogs
cordova-plugin-geolocation

などはすんなりBuildできるのに、
cordova-plugin-fcm
を追加するとBuildが通らない。

Could not find any matches for com.android.tools.build:gradle:+ as no versions of com.android.tools.build:gradle are available.
のようなエラーが表示される。

platform を作り直す。
platform のバージョンを変える。
cordova のバージョンを上げる。
6時間くらい試行錯誤したが、昨日まで通っていたのに、原因不明。

gradle での class が正しくないような感じなのだが、しばらくPCから離れて
思い付いたことは・・・別の plugin にすること。

cordova-plugin-firebase に変更。
こちらは、すんなりと使えた。
どちらも MITライセンスようだし。
理想の解決せず。

cordova android ios でバッジを使用する

cordova-plugin-badge を使用するのが良さそう。
バージョンは 0.8.7

デバイスが認識したあとで
document.addEventListener(‘deviceready’, onDeviceReady.bind(this), false);

function onDeviceReady() {
cordova.plugins.notification.badge.set(5);
}

のように呼び出すだけ。

バッジを消すには以下を実行
cordova.plugins.notification.badge.clear();

しかし、実機で実行してみても表示されないというケースがある。

調べてみたところ、
android のOSはによってはバッヂを表示しない?
ver6はダメでver5はだと表示された(数字が出ていないなどの問題もある)
iOS はアプリ設定のバッヂ通知をオフにしている表示されないので注意。

また、重要なところで、push通知でバッジをつけるには、送信側の設定で行うので、
アプリ側(cordova-plugin-badge)とは関係ない。

FCM であれば
badge パラメータに数値を渡すだけ、 0を渡すとバッジが消える。