window.FirebasePlugin.onNotificationOpen のイベントは届くのに バナーが表示されない。 firebase 側の問題なのかなと思っていたが、 xcode でコンパイルを Legacy Build にするとで直った。 File -> Project Settings -> Build System を New Build System (Default) を Legacy Build System にすることで対応
window.FirebasePlugin.onNotificationOpen のイベントは届くのに バナーが表示されない。 firebase 側の問題なのかなと思っていたが、 xcode でコンパイルを Legacy Build にするとで直った。 File -> Project Settings -> Build System を New Build System (Default) を Legacy Build System にすることで対応
既に設定している certbot に新しくバーチャルホストを追加した場合
./cetbot-auto
を再度実行
ドメイン一覧が出てくるので、追加したドメイン番号を入力
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-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ライセンスようだし。
理想の解決せず。
緯度経度を使用する場合、
xxxxxx-Info.plist ファイルに
NSLocationWhenInUseUsageDescription 緯度経度を取得します。
のように追加しないとアプリが落ちる
サーバー側の
Access-Control-Allow-Origin
など変えてみても、うまくいかない
結果、クライアント側の socket.io を
<script src="http://hogehoge:3000/socket.io/socket.io.js">
として、対応すればつながる。
socket = io.connect('http://hogehoge:3000'); socket.on('connect', function() { console.log("socket connected"); }
これで良いんだっけ?
[YYYY-MM-DD 00:00:00 – Dex Loader] Failed to load C:\android\android-sdk\build-tools\28.0.3\lib\dx.jar
[YYYY-MM-DD 00:00:00 – projectname] 不明なエラー: Unable to build: the file dx.jar was not loaded from the SDK folder!
Eclipseで 上記のようなエラーになった場合。
Eclipse をやめて、Android Studio にするべきなのだが・・・
Android SDK Manager から
Android SDK Build-tools の 25.0.3 を追加し
project.properties ファイルに
sdk.buildtools=25.0.3 を追加
このバージョン以上だと、何故か上記のエラーになる
https://wired.jp/2017/09/13/the-physics-behind-the-magical-parallax-effect-running-your-ar-apps/
視差で距離を計測することができるので
加速度センサーを視差とみたてて、距離を割り出しているようです。
なので、基準点を多く表示して画面を平行に振る動作には
距離を計測に必要な作業のようです。
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を渡すとバッジが消える。
cordova-plugin-facebook4 を使ってみたところ簡単にできそう
https://github.com/jeduan/cordova-plugin-facebook4.git
v2.3
① まず、facebook のシングルサインオンを使う場合に
facebook のアプリ登録に android の key hashes を設定する必要がある
keytool -exportcert -alias “エイリアス名” -keystore “Keystoreファイルのパス” | openssl sha1 -binary | openssl base64
> keytool -exportcert -alias sampleapp -keystore sampleapp.keystore | openssl sha1 -binary | openssl base64
以下のような文字列が表示される
2Sxvqct/Qq9fRzDlvigsuMyOrds= (適当に記載)
② facebook に登録する
https://developers.facebook.com/
アプリID
1593090350168457
APP_NAME
sampleapp
ANDROID_SDK_VERSION
”” (指定しない)
【Android】
〇 Google Playパッケージ名
com.hogehoge.sampleapp
〇 キーハッシュ
2Sxvqct/Qq9fRzDlvigsuMyOrds=
〇 シングルサインオン
ON にする
【iOS】
〇 バンドルID
com.hogehoge.sampleapp
〇 シングルサインオン
ON にする
※ 設定時、com.hogehoge.sampleappが見つからないなど表示されるが、リリース前なので気にしない
※ 性別や年齢にアクセスしたい場合は facebook に申請を行い認証される必要がある。
テストアカウントだと問題ない。
https://developers.facebook.com/docs/facebook-login/permissions
申請せずに、アクセスできるのは email first_name last_name など少ない
// =========================================================== // ページを呼び出した時点で呼ばれるようにしている // =========================================================== function onPageLoad() { console.log("onPageLoad() *******************************"); facebookConnectPlugin.getLoginStatus(onStatusSuccess, onStatusFailure) } function onStatusSuccess(pData) { console.log('onStatusSuccess() pData ' + JSON.stringify(pData) ); $("#status").html(JSON.stringify(pData)); } function onStatusFailure() { console.log("onStatusFailure () *******************************"); $("#status").html("onStatusFailure"); } // =========================================================== // ログイン // =========================================================== function onLogin() { console.log("onLogin () *******************************"); // facebookConnectPlugin.login(['email', 'public_profile'], onLoginSuccess, onLoginFailure); facebookConnectPlugin.login(null, onLoginSuccess, onLoginFailure); //facebookConnectPlugin.login(["email"], onLoginSuccess, onLoginFailure); } function onLoginSuccess(pData) { console.log('onLoginSuccess() pData ' + JSON.stringify(pData) ); $("#status").html(JSON.stringify(pData)); /* facebookConnectPlugin.getAccessToken(function(token) { console.log("Token: " + token); }, function(err) { console.log("Could not get access token: " + err); }); */ console.log("" + pData.authResponse.userID); // facebookConnectPlugin.api('/me?fields=id,email,first_name,last_name,name&access_token=' + pData.authResponse.accessToken, null, // facebookConnectPlugin.api(pData.authResponse.userID + "/?fields=id,email,first_name,last_name,name", ["email", "public_profile"], facebookConnectPlugin.api(pData.authResponse.userID + "/?fields=id,email,first_name,last_name,name", null, function (result) { alert("Result: " + JSON.stringify(result)); }, function (error) { alert("Failed: " + JSON.stringify(error)); }); } function onLoginFailure() { console.log("onLoginFailure () *******************************"); $("#status").html("onLoginFailure"); } // =========================================================== // ログアウト // =========================================================== function onLogout() { console.log("onLogout () *******************************"); facebookConnectPlugin.logout( onLogoutSuccess, onLogoutFailure); } function onLogoutSuccess(pData) { console.log('onLogoutSuccess() pData ' + JSON.stringify(pData) ); $("#status").html(JSON.stringify(pData)); } function onLogoutFailure() { console.log("onLogoutFailure () *******************************"); $("#status").html("onLogoutFailure"); }