私は、BoingoのWi-Finder iOSアプリケーションで、Boingoのデータベースに登録されたアクセスポイントに到達すると通知をプッシュすることに気付きました。この通知は、ユーザに無線ネットワークにアクセスできることを通知します。WiFi経由のプッシュ通知
どのようにiOSを行っていますか?
私は、BoingoのWi-Finder iOSアプリケーションで、Boingoのデータベースに登録されたアクセスポイントに到達すると通知をプッシュすることに気付きました。この通知は、ユーザに無線ネットワークにアクセスできることを通知します。WiFi経由のプッシュ通知
どのようにiOSを行っていますか?
あなたはこれを達成するためにCLLocationManagerとUserNotificationsを利用することができます。
ユーザーが領域ベースの境界を越えたときに通知を受けるためにCLCircularRegionクラス(地理的領域を取得するため)または(ビーコン領域を取得する)CLBeaconRegionクラスのような地域モニタリングサービスを使用することができます。アプリが実行されていなくても境界交差が発生すると、システムは自動的にイベントを処理できるように、バックグラウンドでイベントを起動(または再起動)します。 didFinishLaunchingWithOptions :)あなたのアプリの方法デリゲートは、UIApplicationLaunchOptionsKey.locationが含まれています。この場合
は、オプションがアプリケーション(_に渡された辞書です。その後、trigger a local notificationを使用して、その場所で利用可能なサービスをユーザーに通知します。位置モニタリングを使用
https://www.raywenderlich.com/136165/core-location-geofencing-tutorial例
NB。他の回答で提案されているように到達可能度クラスも使用できます。しかし、アプリがバックグラウンドであるか終了している場合は、Reachabilityは使用できません。アプリがバックグラウンドのときに到達可能性を引き起こすために、これに続くことができます:https://stackoverflow.com/a/35615381/4637057。残念なことに、ここでの欠点は、バックグラウンドフェッチがアプリに対して動作する頻度が高くなるほど、より多くのリソースが使用されることです。 iOSは、APIを頻繁に使用しようとするアプリケーションに制限を適用することで、自分やデバイスを保護します。したがって、カスタムの時間間隔を設定するときは慎重にしてください。また、バックグラウンドフェッチはバッテリの放電を非常に迅速にします。
また、アプリがWi-Fiネットワークに接続されている場合にのみ、到達可能性によって通知がトリガーされます。しかし、アプリがバックグラウンドにあり、電話がWiFiに接続されていなくても、Boingoはユーザーに通知します。だから私は強く彼らが無線LANが利用可能なエリアに入ったかどうかを検出するために位置情報サービスを使用している疑いがあります。私はそれがAppDelegate
さんdidFinishLaunchingWithOptions
にReachabilityクラスで、デバイスの接続性を観察することによって行うことができ、networkStatus
があるときだと思う
は更新application.registerForRemoteNotifications()
を呼び出し、その後ReachableViaWiFi
に等しい: 通知の2種類があります: Remote
とLocal
ローカル通知を送信するようにアプリを設定できますが、その前に内容を設定する必要があります。 hereローカルnの処理方法に関するAppleのガイド
このアクセスポイントに接続する必要があります。 Boingoでは、私が接続されていなくても私は通知を受け取ります。 – alandalusi
APNではなくローカルの通知を使用していますので、[こちら](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/SchedulingandHandlingLocalNotifications.html#//apple_ref/doc/)をご覧ください。どのように動作するかについては、uid/TP40008194-CH5-SW1)を参照してください。 –
しかし、あなたは登録されたアクセスポイントの空き状況をどのように知っていますか? – alandalusi
WifiホットスポットのSSIDを取得できます。登録されている場合は、Mohyの回答に従うことができます。 次のリンクを確認してください。
これはWiFiホットスポットのSSIDを取得するのに役立ちます。
接続されているアクセスポイントの名前のみが表示されます。 Boingoアプリは、接続しなくても使用可能なアクセスポイントがあることを通知します。 – alandalusi
あなたが提供したソリューションはWiFiではなくGPS/Bluetoothを使用しています。私が求めているのは、純粋なWiFiベースのソリューションです。 – alandalusi
これはCLLocationManagerに関する問題ではありません。指定されたWiFiホットスポットに接続する必要があります。 –
しかし、アプリがバックグラウンドまたは終了している場合は、到達可能性は使用できません。また、アプリがWi-Fiネットワークに接続されている場合にのみ、到達可能性がわかります。しかし、アプリがバックグラウンドにあり、電話がWiFiに接続されていなくても、Boingoはユーザーに通知します。だから私は強く彼らが無線LANが利用可能なエリアに入ったかどうかを検出するために位置情報サービスを使用している疑いがあります。 –