Edited at

iOS10から位置情報取得にはHTTPS必須?

More than 3 years have passed since last update.

[追記]

HTTP で geolocation の位置情報が取得できないのは、ブラウザの仕様みたいですね。

iphone 以外の chrome では既にその仕様になっているようです。

ios10 safari がその仕様に沿うようになったということだと思います。


Google Maps Geocoding API を使って現在地からスポットを探す機能を実装しています。

上記APIには、現在地の緯度経度を取得する

navigator.geolocation.getCurrentPosition(successCallback(), errorCallback())

という関数が用意されています。

この関数は、位置情報取得に成功した場合に第一引数を、失敗した場合に第二引数をコールバックして実行します。

iOS10 にアップデートしたテスト機で API を触っていると、エラーコード "POSITION_UNAVAILABLE" で失敗する現象に出くわしました。

原因は、HTTPS(SSL)通信が完全では無かったことです。


  • HTTPで読み込んでいるリソース(画像/広告)があった

  • 開発環境で証明書が効いてなかった

ATSによってアプリがHTTPS必須になることは警戒していましたが、

今後、広い分野でHTTPSの制約が出てきそうですね。

今秋までにフルSSLを決意した一日でした。

私自身の知識不足と、今の時代にHTTPを使っていること自体..、

ということは置いといて、

この記事が同じことでハマる人のためになれば幸いです。

※iOS10のリリースは2016秋?