1. Qiita
  2. 投稿
  3. iOS

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

  • 16
    いいね
  • 0
    コメント

[追記]
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秋?