2016年2月19日金曜日

AmazonのAppStoreで位置情報を使うアプリの対応端末を増やす方法

最近AmazonのAppStoreはパーミッションに関する制約が厳しくなり、これまで何も言われなかったアプリが警告扱いになり、ついに非対応ということになってしまった。


問題のアプリは位置情報を扱うアプリなのだが、Amazonの端末はGPSを搭載している端末が少ないので、このままでは対応端末が非常に限られてしまう。



改善すべきはAndroidManifest.xmlに設定しているパーミッションの指定。現在、位置情報関連のパーミッションは次の2つ。

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

アプリの性質上、GPSほどの高い精度の位置情報は必要無いので、初めはACCESS_FINE_LOCATIONを消してみた。これでGPSを使わないようになるのではと考えたからだ。

これで対応端末は増えたが、ACCESS_COARSE_LOCATIONだけではキロ単位のズレが発生してしまうことが分かった。これはさすがにまずい^^;

エラーの内容をよく見ると、「android.hardware.location.gps」がダメだと言っている。



ということは、「GPSは必須でない」という設定があるはず。ドキュメントを見ると

<uses-feature> | Android Developers

「android.hardware.location.gps」というプロパティーがあった。そこで、このように指定することにした。

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />

すると、位置情報の精度はそのままで、対応端末が増えた(・∀・)