cordova-plugin-firebase から cordova-plugin-firebasex へ

過去の記事でビルドエラーの対策を投稿したが、今後は新たなプラグインに
切り替える必要がありそうです。

cordova-plugin-firebasex

https://github.com/dpa99c/cordova-plugin-firebasex

簡単に移行できるのか?

最低以下の環境にする必要あり。
cordova@9(CLI)
cordova-android@8(Androidプラットフォーム)
cordova-ios@5(iOSプラットフォーム)

プラグインを変更
cordova plugin rm cordova-plugin-firebase
※先に cordova platform rm android しておかないと以下のエラーが
 Uninstalling cordova-plugin-firebase from android
 Error during processing of action! Attempting to revert…

cordova-plugin-firebase を動かすために入れたプラグインはとりあえず外す
自動的に cordova-plugin-firebasex が必要なものは追加してくれるはず
cordova plugin rm cordova-android-firebase-gradle-release
cordova plugin rm cordova-android-play-services-gradle-release

firebasex を入れてみる
cordova plugin add cordova-plugin-firebasex

① onNotificationOpen() を onMessageReceived() に変更

② hasPermission の判定方法変更
if( device.platform == “iOS” ) {
window.FirebasePlugin.hasPermission(function(hasPermission){
if (hasPermission) {
console.log(“Permission to receive notification is granted.”);
} else {
console.log(“Permission to receive notification is NOT granted.”);
window.FirebasePlugin.grantPermission();
}
});
}

③ notification.tap の判定方法変更 おそらく文字列 ”foreground” もしくは “background” で判断
window.FirebasePlugin.onMessageReceived(function(notification) {
console.log(“FirebasePlugin.onMessageReceived”);

console.log(JSON.stringify(notification));

// タップして起動した場合
console.log(“Message type: ” + notification.messageType);
if(notification.messageType === “notification”){
alert(“Notification message received”);
if(notification.tap){
alert(“Tapped in ” + notification.tap);
// “foreground” もしくは “background”
}
}

// firebase からの送信時は notification.message は設定されない

if (typeof cordova !== “undefined”) {
navigator.notification.alert(
notification.message, // message(JSONで追加して送信している情報)
//notification.body, // body
onAlertDismissed, // callback
notification.title, // title
‘閉じる’ // buttonName
);

/*
if( device.platform == “Android” ) {
cordova.plugins.notification.badge.increase();
}
*/

} else {
alert(“The notification is open!”);
}
}, function(error) {
console.log(error);
});

これだけで、すんなり、そのまま動いた!!

ios 版はやはり、mac で platform add するのがよさそう。 windowsだと pod を正しくインストールできない
cordova platform rm ios
cordova platform add ios@latest

FBSDKCoreKit/FBSDKCoreKit.h’ file not found cordova-plugin-faceboook4 v6.2.0

cordova-plugin-facebook4 が v5.0.0 の時はエラーがでなかったが
v6.2.0 になり、xcode でビルドしようとすると FBSDKCoreKit.h が見つからないエラー

結果、
xcode のプロジェクトを
xxxx.xcodeproj から起動していたのを
xxxx.xcworkspace から起動すれば正常にビルドできた。

2日間は悩んだ。公式サイトをじっくり確認するべきだった。
https://github.com/jeduan/cordova-plugin-facebook4/issues/820

cordova platform add ios は mac で行わないと podが正しくアップデートされない。

could not find include file pods/target

mac os か xcode をアップデートすると
上記のようなエラーが出て、xcode でコンパイルできなくなる時がある。

pod install のインストールが必要なのだが、エラーが出る

-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory

cocoapods をアップデートする必要があるみたい。

sudo gem install -n /usr/local/bin cocoapods

でエラーがなくなった。

cordova-line-login-plugin iOSだと code 65 エラー

Android では問題ないが
iOS の場合、LineSDK.framework と LineSDKObj.framework がすんなり入らない

cordova platform add ios を実行時

code 65 のエラーで止まる

carthage コマンドがスムーズに通らないようだ。

しかたなく、 プロジェクトフォルダーで

carthage update –platform iOS で手動で
LineSDK.framework と LineSDKObj.framework を作成。

xcode でも手動で、Add files で追加し、 Embed を Embed & sign に設定。

なにかのバージョンが合わずにスムーズに作成できないのだろうか?

carthage はややこしい。

cordova-line-login-plugin を iOS で利用

android は windows 環境で問題なく動作確認できたが
iOS は swift も絡んでいるせいないのか
cordova plugin add でうまくインストールできなかった

mac 環境で 実行すれば問題ない
先に swift ように Carthage をインストールしておく必要あり

https://qiita.com/tsuzuki817/items/8f6e2e0c2b3f9d197097

LINEアカウント認証

cordova-line-login-plugin を利用することで連携ができそう。

facebook アカウント連携と違って、簡単に公開できるので
公開しないと動作確認もできなかった。

cordova Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 19 declared in library

Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 19 declared in library [:CordovaLib]
c:\xxxxxxxxxx\platforms\android\CordovaLib\build\intermediates\library_manifest\debug\AndroidManifest.xml as the library might be using APIs not available in 15
Suggestion: use a compatible library with a minSdk of at most 15,
or increase this project’s minSdk version to at least 19,
or use tools:overrideLibrary=”org.apache.cordova” to force usage (may lead to runtime failures)

config.xml に以下のような行を追加
<preference name="android-minSdkVersion" value="19" />
<preference name="android-targetSdkVersion" value="27"/>