萌えハッカーニュースリーダー

2025/06/16 02:39 Permission Application in HarmonyOS

出典: https://github.com/CaojingCode/HarmonyOS-Articles/blob/main/Permission%20application%20in%20HarmonyOS.md
hakase
博士

やあ、ロボ子!今日はHarmonyOSのパーミッションについて話すのじゃ。

roboko
ロボ子

博士、こんにちは。パーミッション、ですか。なんだか難しそうですね。

hakase
博士

難しくないぞ!簡単に言うと、アプリがスマホの機能を使うための許可のことじゃ。例えば、カメラを使うにはユーザーの許可が必要じゃろ?

roboko
ロボ子

なるほど、それは理解できます。記事に「TokenIDは、アプリケーションの一意な識別子として使用され、アプリケーションのAT(アクセストークン)情報を管理する」とありますが、TokenIDって何に使うんですか?

hakase
博士

TokenIDはアプリの身分証明書みたいなものじゃな。これがないと、システムはどのアプリがどの許可を持っているか分からなくなってしまうのじゃ。

roboko
ロボ子

ふむふむ。認可方式にはsystem_grantとuser_grantの2種類があるんですね。system_grantはシステムが自動的に許可を与えるとのことですが、どんな時に使われるんですか?

hakase
博士

system_grantは、例えば「インターネットの使用」とか「Bluetooth構成の表示」みたいな、比較的リスクの低い機能に使うのじゃ。アプリのインストール時に自動的に許可されるから、ユーザーがいちいち許可する必要がないのじゃ。

roboko
ロボ子

なるほど。user_grantは、カメラや位置情報など、ユーザーのプライバシーに関わる機能に使うんですね。

hakase
博士

その通り!user_grantのパーミッションを使う場合は、module.json5ファイルでパーミッションを宣言する必要があるぞ。さらに、なぜそのパーミッションが必要なのか、理由をちゃんと書かないといけないのじゃ。

roboko
ロボ子

理由を記述するんですね。例えば、カメラのパーミッションが必要な場合は、「写真撮影のためにカメラを使用します」のように書くのでしょうか。

hakase
博士

そうじゃな!そして、パーミッションを使う場面も具体的に書く必要があるぞ。「UIAbilityまたはExtensionAbilityコンポーネントの名前」と「when」で指定するのじゃ。

roboko
ロボ子

whenは`inuse`(使用中)と`always`(常時)があるんですね。常時位置情報を取得するようなアプリは、バッテリー消費が激しそうですね。

hakase
博士

その通り!だから、本当に必要な時だけパーミッションを要求するようにしないといけないのじゃ。記事にも「操作を実行するたびに、アプリケーションはすでにパーミッションを持っているかどうかを確認する必要がある」と書いてあるぞ。

roboko
ロボ子

`checkAccessToken()`関数でパーミッションを持っているか確認して、`requestPermissionsFromUser()`インターフェイスでパーミッションを要求するんですね。

hakase
博士

よくできました!もしユーザーがパーミッションを拒否したら、何度もポップアップを表示してはいけないぞ。ユーザー体験を損ねてしまうからな。

roboko
ロボ子

はい、わかりました。ところで、記事の最後に「複数ユーザー機能とアプリケーションクローン機能」について触れられていますが、これはどういうことですか?

hakase
博士

同じアプリでも、ユーザーが違えばTokenIDも違うということじゃ。例えば、家族で同じスマホを使っていても、それぞれのユーザーでアプリの許可設定を変えられるのじゃ。

roboko
ロボ子

なるほど、セキュリティが強化されているんですね。パーミッションについて、よく理解できました。ありがとうございます、博士!

hakase
博士

どういたしまして!最後に一つ、冗談を言うぞ。なぜプログラマーはいつもサングラスをかけていると思う?

roboko
ロボ子

うーん、なぜでしょう?

hakase
博士

だって、コードが眩しすぎるからな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search