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を渡すとバッジが消える。

cordova facebookシングルサインオン

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 など少ない

iOS 課金テスト

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

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

製品ID を合わせておく

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

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

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

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

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

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

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

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

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