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

socket.io で CORS となり、つながらない問題

サーバー側の 
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");
}

これで良いんだっけ?

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

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

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

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

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

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

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

iOS で navigator.geolocation.getCurrentPosition が効かない

xxxxxx.plist ファイル内に

NSLocationWhenInUseUsageDescription
現在地から目的地に行くために使用

参考:https://dev.classmethod.jp/smartphone/iphone/ios10-privacy-data-purpose-description/

iOS11 から
NSLocationAlwaysUsageDescription  位置情報へのアクセス (常に許可)
は使えなくなったみたい

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

clang -fobjc-weak is not supported

visual studio 上の cordova で ios プロジェクトを出力
cordova も 7.1.0 などになり、xcode に持っていった後もプロビジョニングファイルを
変更するだけでOKだと思っていたのに、急に表題のエラーが発生。

かなり悩んだが、
Deployment Target が何故か 1 と設定されていたのを、11.4などと最新版にするだけで解決。

visual studio で cordova ツールセットのバージョンアップ

confix.xml から ツールセット名を
cordova 6.3.1 から Global cordova 7.1.0 に変更した
警告で、なにかリンクが出ているが
https://docs.microsoft.com/en-us/visualstudio/cross-platform/tools-for-cordova/first-steps/toolsets?view=toolsforcordova-2017

サーバーから取得するだけの説明で問題なさそう。

しかし、実行しようとすると以下のようなエラーが。

at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Module._compile (module.js:460:26)
SyntaxError: Use of const in strict mode.
at Module._compile (module.js:443:25)
at require (module.js:384:17)
const path = require(‘path’);
at Object.Module._extensions..js (module.js:478:10)

調べていくうちに、 私の windows の node.js が v0.12.2 という驚きの古さ。
おすすめ版を 以下から取得。
https://nodejs.org/en/

その後、cordova のコンパイルはとりあえず通った。

ただ、iOS へのリモートコンパイル時、以下のようなエラーが発生。
System.IO.FileNotFoundException: ファイル ‘appAsTgz.tgz’ が見つかりませんでした。

なにかの不具合だと思われるが
node-v6.14.3-x64.msi をインストールし直すことで、iOS版も出力できた。