スマゲ

スマートなゲームづくりを目指して日々精進

UnityでRuntimePermissionを利用するプラグイン

UnityでRuntimePermissionを利用するプラグインを作成した

■関連
Android6.0からのPermissionの仕様変更についてのまとめ - スマゲ
AndroidのRuntime Permissionを実装する - スマゲ
UnityでRuntimePermissionを実装する - スマゲ

■動作環境
Unity 5.0以上

■導入
Githubからunitypackageをダウンロードする
ファイルパス: dist/UniAndroidPermission.unitypackage
github.com
ダウンロードしたらUnityにインポートする
f:id:sanukin39:20160324230428p:plain

■AndroidManifestの準備
Assets/Plugins/Android フォルダを作成し、UniAndroidPermission/AndroidManifest-uniRP.xmlをそこへ移動、AndroidManifest.xmlへリネームする
f:id:sanukin39:20160324233503p:plain

・すでにAndroidManifest.xmlがある場合
AndroidManifestを開いて activityタグの内部にある name要素をさがし、以下のように書き換える
書き換え前

android:name="{アプリのパッケージ名}.UnityPlayerActivity"

書き換え後

android:name="jp.ne.donuts.uniandroidpermission.OverrideUnityActivity"

さらに、application タグの内部に以下の行を追加する。詳しくはAndroidManifest-uniRP.xmlを参考にする

<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />

■利用したい権限を追加する
作成/編集したAndroidManifest.xmlを開き、追加したい権限を追加する。今回はWRITE_EXTERNAL_STORAGEを選択

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

■Unityからの呼び出し
Unityの起動シーンかにUniAndroidPermission/UniAndroidPermission.prefabを設置する
f:id:sanukin39:20160325001748p:plain

・権限の確認
以下の方法で権限が許可されているかの判断を行う

if(UniAndroidPermission.IsPermitted(AndroidPermission.WRITE_EXTERNAL_STORAGE)){
    // 許可されている時の処理
}else{
    // 許可されていない時の処理
}

・権限のリクエスト
権限のリクエストをしたいタイミングで以下のメソッドを呼び出す

UniAndroidPermission.RequestPremission(AndroidPermission.WRITE_EXTERNAL_STORAGE);

これでAndroidの画面にアラートが出るようになる

ユーザーの許可/禁止の判断によって振る舞いを変えたい場合

UniAndroidPermission.RequestPremission(AndroidPermission.WRITE_EXTERNAL_STORAGE, () => {
    // ユーザーが許可した時の処理
}, () => {
    // ユーザーが許可しなかった時の処理
});

■実行
f:id:sanukin39:20160322232503p:plain
■まとめ
ユーザーに対して適切なタイミングで必要な権限を聞くことができるようになった
利用するにあたって問題等あれば、Githubのissuesにあげてください

github.com