Closed8
FlutterでiOSのbluetooth設定画面に飛ばす方法
iOSのbluetoothの設定は、2ヶ所ある
- 端末自体のBluetoothのON/OFF
- アプリ固有の設定画面でのON/OFF
-
端末自体のBluetooth設定画面
-
アプリ固有の設定画面
Flutterのほとんどのライブラリが2の方に飛ばすやつだった
どちらもインストールして処理一行書くだけで遷移できた
app_setting
pubspec.yml
dependencies:
flutter:
sdk: flutter
app_settings: 4.1.8
該当の処理.dart
import 'package:app_settings/app_settings.dart';
// イベント契機に以下処理呼び出すだけ
AppSettings.openBluetoothSettings()
※バージョンは執筆当時の最新
permission_handler
挙動はapp_settingと同様。
詳細はライブラリのとこ見てもらえればよき
じゃあ、1の方にはどうやって飛ばせばいいの?
Flutterのライブラリだと良さげなのが見つからなかった・・・
Swiftでは以下のような書き方で実現出来そう
とのことで、上記処理をmethodChannelでFlutterから呼ぶ方法でやってみた。
こんな感じで実現しました。
Androidはpermission_handlerのopenAppSettings()を呼んでます。
問題なく出来ました👏👏
Flutter側の呼び出し元.dart
if (Platform.isAndroid) {
await openAppSettings();
} else {
await BeaconService.methodChannel
.invokeMethod<String>(
'openSystemBluetoothSetting',
);
}
Swift側の呼び出したい処理.swift
channel.setMethodCallHandler({
(call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
if (call.method == "openSystemBluetoothSetting") {
let url = URL(string: "App-Prefs:root=General")
let app = UIApplication.shared
result(app.openURL(url!))
} else {
result(FlutterMethodNotImplemented)
}
})
このスクラップは5ヶ月前にクローズされました