UnityでSystemInfo.deviceUniqueIdentifierを使うと、アクセス権限READ_PHONE_STATEが加わる

f:id:peroon:20151206114817p:plain

  • Unity5.2.2f1

Google Playストアでは上記の表示となり、電話帳などにアクセスされそうで、ユーザはためらう。

私はサーバ側のユーザIDとしてSystemInfo.deviceUniqueIdentifierを使っていたが、この権限を取るためにRandomでユーザIDを作るように変更する。衝突がありうるので、日時+Randomを文字列連結したものにすれば、まあぶつからないだろう。

ユーザIDを取得するためにPlayerPrefsを使う必要が出てくる。

上記によるとFixしたと書いてあるが、5.2.2f1では直っていなかった。SystemInfo.deviceUniqueIdentifierをDebug.Logするだけのアプリを作ってみたら、下記のパーミッションとなった。

ktmac:Desktop kt$ aapt d permissions idtest.apk 
package: com.peroon.idtest
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.READ_PHONE_STATE'
  • SystemInfo.deviceUniqueIdentifierを使わないapkを作成したところ、INTERNET、READ_PHONE_STATEの両方が消えた
  • Androidプロジェクトとして出力してEclipseなどでビルドすれば避けられるようだが、それは違うだろう・・・