フフフ・・・こんな簡単なこともわからなかったので書き残しておくのですよ。
FlutterでAndroid/iOS両方のアプリを作りたいのですが、LINEログインをしたい。ということ。その組み込み方。よく読むと公式に書いてるんですけどね・・・
flutter_line_sdk 自身はこちらで開発されています。
が、、、こちらを読む限り関係ないのですね・・・インストール方法を読む限り、pubspec.ymlに必要事項を記入しflutter pub getを実行すれば依存関係がダウンロードされるらしい。Mavenみたいですね。楽ちんです。初めどこかからかライブラリをダウンロードして自前でフォルダに入れるのかとか、化石みたいな事を思ってしまった僕はもう淘汰されるべき人間なのかもしれません。
1.Open the pubspec.yaml file in your app folder and, under dependencies, add flutter_line_sdk:. 2.Install it by running this in a terminal: flutter pub get
プラグイン自身はこちらで管理されているらしく・・・ここで flutter_line_sdk を検索すると出てきます。
検索されたflutter_line_sdkはこちらですね。
pub.dev
install自身は簡単で、プロジェクトのpubspec.ymlのdependenciesに以下を記載し、プロジェクトフォルダ内でflutter pub get を実行します。またはAndroid Studioを使っているのであればpubspec.ymlを開いているテキストエディタの右上に「pub get」ボタンがあるのでそれを押します。
dependencies: flutter_line_sdk: ^1.3.0 <----- これを追加
プロジェクト内を確認するとExternal Librariesに追加されてますね。
あとはLINE SDKを使うファイル内でインポートします。
import 'package:flutter_line_sdk/flutter_line_sdk.dart';
ここで一旦実行してみましょう。
あれ?エラーがでるぞ?minSdk を21以上にしろって。
Suggestion: use a compatible library with a minSdk of at most 16, or increase this project's minSdk version to at least 21, or use tools:overrideLibrary="com.linecorp.flutter_line_sdk" to force usage (may lead to runtime failures)
ということで、build.gradleのminSdkVersionの値を16->21にして実行してみます。
defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "jp.arcanum.tomiya_gomi_app" // minSdkVersion 16 minSdkVersion 21 <------------ ここ! targetSdkVersion 29 versionCode flutterVersionCode.toInteger() versionName flutterVersionName }
とりあえずコンパイルは完了して実行はできたようです。
flutter_line_sdkのページをもう一回よく読むと前提に書いてますね。minSdkVersion set to 21 or higher って。こういう所はpubspec.ymlとかじゃなくて実際のプラットフォーム側の設定ファイルに書く必要があるのですね。
Prerequisites iOS 10.0 or later as the deployment target Android minSdkVersion set to 21 or higher (Android 5.0 or later) <----ここ! LINE Login channel linked to your app
さて次に実際にログインしてみます。
サンプルコードを書き書きします。main関数でLineSDKのセットアップが必要なようです。ここでチャネルIDを指定してセットアップします。
void main() { WidgetsFlutterBinding.ensureInitialized(); LineSDK.instance.setup('1234567890').then((_) { print("LineSDK Prepared"); }); runApp(MyApp()); }
どこかのボタンとかのイベントでログインするコード。非同期的なコードが同期的に書けるようです。これは素晴らしい。
void _incrementCounter() async { try { final result = await LineSDK.instance.login(); setState(() { print(result.userProfile.userId); print(result.userProfile.displayName); print(result.userProfile.pictureUrl); print(result.userProfile.pictureUrlLarge); print(result.userProfile.pictureUrlSmall); print(result.userProfile.statusMessage); }); } on PlatformException catch(e) { print(e); } }
LINE Developer側でも設定が必要です。LINEログイン設定 の項目でAndroidであればパッケージを入力しておきます。
以下はFlutterのデモ画面にあるボタンに上記のログイン機能を組み込んでみました。右下のボタンをタップするとLINEログインします。
これはLINEアプリが入っていないシミュレーターなのでLINEのWebログイン画面が表示されます。LINEアプリが入っている端末の場合はLINEアプリでのログイン画面になります。
ID/PASS入力後こんな感じでアプリに権限を与えるかの画面が表示されますのでAllowを押します。押すとFlutterアプリに戻ってきます。やったね!