概要
2019年も残りあとわずか!
あと少しで、令和初の年越しを体験できそうですね。
そんな2019/12/1の、ユアマイスターアドベントカレンダー1日目です。
https://qiita.com/advent-calendar/2019/yourmystar
この記事では、iOSの電波強度を取得するために色々と調べたことをまとめます。
この記事の最新のiOSバージョンとは、iOS 13.2.3のことを指します。
道のり
以前は、iOSの電波強度を取得するために statusBar から情報を取得することができていました。
しかし、最新のiOSバージョンではは statusBar に signalStrength or RSSI の値は保有していないことがわかりました。。。
statusBarとは?
statusBar とはiPhoneの上部にある電波マークや電池のマークがある部分のことを言います。
今現在もアプリからstatusBarの色を変更させたり、wifiに接続されているかということは確認ができます。
最新のiOSバージョンでも、アプリからではなく端末からだとRSSI値が確認できます。その方法は下記の参考記事にあります。
現在、アプリから電波強度を取得するには
色々と探した結果、statusBarから情報を取得する以外に、NEHotspotHelperを用いる方法があるようです。 NEHotspotHelperはXcodeが用意してくれているAPIでSSIDの情報などを得ることができます。
注意点
NEHotspotHelperでSSIDの情報から電波強度を取得できると言いましたが注意点があります。
其の1 ユーザの許可が必要
SSIDの情報から位置情報などがわかるためユーザに許可を得る必要があります。こちらは、info.plistに以下を追加すればOKです。
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.networkextension.app-proxy</string>
<key>NSExtensionPrincipalClass</key>
<string>MyCustomAppProxyProvider</string>
</dict>
其の2 無料アカウントではダメ
Xcodeの無料アカウントでは使えないAPIのようです。Apple Developer Programに登録して年間1万円ちょい支払う必要があります。
其の3 有料ユーザでも使えるかわからない?
自分用のアプリとして作っているのでお金払って使えなかったら嫌だなと思い、Xcodeのサポートに問い合わせてみました。すると、AppleDeveloperProgramに登録したユーザでも使える訳では無いとのこと。使う旨をXcodeに伝え審査を通ると使えるようになるようです。審査の内容については聞くことはできませんでした。意外と1番の落とし穴かもしれません。参考にした記事
SwiftでWiFi電波強度を取得する
著 p9KYcJ5V さん
https://qiita.com/p9KYcJ5V/items/718ffa057302beff757d
iPhone 電波マークを数字表示にして電波強度を分かり易くしよう♪
https://www.kototoka.com/entry/2014/07/31/apple-iphone-lte-3g-antennamark-suuji
[iOS 10] 接続中のWi-FiのSSIDを取得する
https://dev.classmethod.jp/smartphone/ios-10-cncopysupportedinterfaces/