CordovaのLineログインについて


iOSで現在動かなくなっています

cordova-line-login-pluginを使っている場合の話になりますが、2020年6月27日現在、sdkErrorCodeの3003エラーが出てしまい、動かなくなっています。

修正が開始されました。
7月14日現在、sdkの5.5.1までは動くようになっているようです。

詳しくは下記を参照してください。
https://github.com/nrikiji/cordova-line-login-plugin/issues/55

結論

line-sdk-ios-swiftの最新バージョンに、cordova-line-login-pluginが追い付いていないことが原因です。
拍車をかけてしまっているのが、cordova-plugin-carthage-supportの存在です。
cordova prepare ios実行時に、carthage updateを行ってくれる便利な存在ですが、最新版があると強制的に取ってきます。

Cartfileの中を見ると、記述が以下のようになっています。

Cartfile
github "line/line-sdk-ios-swift" ~> 5.0

この記述が、5.0から6.0の間の最新版をいれるようにしているので、cordova prepare iosを実行してしまうと、sdkの最新版が入ってしまい、不具合が出てしまいます。

以下は例ですが、まだ正常に動いていた頃のバージョンを指定してあげてください。

Cartfile
github "line/line-sdk-ios-swift" == 5.3.0

もしも上手く行かなかったら

この後に、cordova prepare iosを実行して、もしもsdkのバージョンが最新版になってしまったら…

まずは、プロジェクト直下のCartfile以外のCarthage関係のファイルとCarthageフォルダ以下を消して下さい。
Cartfile内の記述を再度修正して、Cartfileのあるフォルダで以下のコマンドを実行してください。
これで指定したバージョンがCarthageフォルダ内にインストールされます。

carthage bootstrap --platform iOS

cordova-plugin-carthage-supportが邪魔をしてくるので、少し改造をします。
modify_pbxproj.js内で、carthage updateを行っている個所をコメントアウトします。
具体的には以下のようにします。

modify_pbxproj.js
    //if (changeCartfile(cartfilePath, tmpCartfilePath)) {
    //    cmd = "carthage update --platform iOS"
    //} else {
        cmd = "carthage bootstrap --platform iOS --cache-builds"
    //}
    fs.writeFileSync(cartfilePath, cartfiles.join("\r\n"))

改造したものを外において、インストールし直してください。
こうしておけば、cordova prepare ios実行時に強制的にアップデートされることはなくなります。

まとめ

あくまで対処療法なので、cordova-line-login-pluginが最新版のline-sdk-ios-swiftに対応するまでの回避策としてお使い下さい。

参考URL

https://qiita.com/s-harada/items/47295d653ef0cf34d540
https://github.com/nrikiji/cordova-line-login-plugin
https://github.com/nrikiji/cordova-plugin-carthage-support
https://github.com/line/line-sdk-ios-swift
https://github.com/Carthage/Carthage