Help us understand the problem. What is going on with this article?

FlutterでのiOS API呼び出し

More than 1 year has passed since last update.

Flutter7日目。

iOS連携

iOS側の機能を呼び出す際には Dart と Objective-C もしくは Swift と連携をする必要がある。
Flutterではチャンネルのキーワードを決めることで必要な連絡を取れるようになっている。

今回はその中でも Dart から連絡を入れる場合。
とはいえ結局は6日目にあげたリンク
Writing custom platform-specific code with platform channels
の実際どうするの?話に尽きる。

チャンネルとは?

要は文字列。

Dart では

const MethodChannel('samples.flutter.io/battery');

と書いてあるもの。

Objective-C では

methodChannelWithName:@"samples.flutter.io/battery"

文字列が同じ。

関数の呼び出し方

つまりは Dart 側。

MethodChannel methodChannel;
final int result = await methodChannel.invokeMethod('getBatteryLevel', ['Hello', 'World']);

これで引数が渡せる。

引数の取り方

Objective-C の場合

引数無しは上記リンクで。
引数有りの場合

NSArray* arguments = call.arguments;
NSString* word = arguments[0];

ってやると引数に渡した文字列が取れる。
int を渡したなら int で受け取りましょう。

Swift の場合

let arguments = call.arguments as! Array<Any>;
let word = arguments[0] as! String;

で受け取りましょう。
Swiftでargumentsの定義にとんでも id がどうこうと見えるだけで結局どうしたらよいかわからんかった。

おまけ

id とは?
Objective-C にある型で、C でいう void* のようなものっぽい。
Swiftではこれが Any となるっぽい。as! や as? に関しては Swift のキャストについて調べてみてね。

この内容は
個人ブログ でも投稿されております。


お仕事募集しております
株式会社xhift

北千住でコワーキングスペースも運営しておりました。再開したい!
Bono Prince(ぼのプリ)


taku_xhift
株式会社xhift 代表取締役。ゲーム開発者。元コナミ。お仕事お待ちしております。北千住でコワーキングスペースも運営しています。http://xhift.com/bonopri/
http://xhift.com/bonopri/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした