通过WiFi推送通知

ala*_*usi 11 wifi ios

我在Boingo的Wi-Finder iOS应用程序中注意到,一旦他到达Boingo数据库中的访问点,应用程序就会向用户发送通知.该通知告诉用户他可以访问wifi网络.

怎么做iOS?

Vin*_*Joy 2

您可以使用CLLocationManagerUserNotifications来实现此目的。

您可以使用CLCircularRegion类(获取地理区域)或CLBeaconRegion类(获取信标区域)等区域监控服务,在用户跨越基于区域的边界时收到通知。如果即使您的应用程序未运行,也发生边界跨越,系统会自动在后台唤醒(或重新启动)它,以便它可以处理该事件。

在这种情况下,传递给应用程序委托的application(_:didFinishLaunchingWithOptions:)方法的选项字典包含UIApplicationLaunchOptionsKey.location。然后触发本地通知,以通知用户该位置可用的服务。

例子:-

  1. 使用位置监控:- https://www.raywenderlich.com/136165/core-location-geofencing-tutorial
  2. 使用 iBeacons - https://www.raywenderlich.com/101891/ibeacons-tutorial-ios-swift

注意。正如其他答案中所建议的,我们也可以使用可达性类。但如果应用程序处于后台或终止,则无法使用 Reachability。要在应用程序处于后台时触发可达性,我们可以按照以下步骤操作: https: //stackoverflow.com/a/35615381/4637057。但不幸的是,这里的缺点是,后台获取设置为应用程序工作的次数越多,使用的资源就越多。iOS 通过对经常尝试使用 API 的应用程序施加限制来保护自身和设备,因此在设置自定义时间间隔时要小心。此外,后台获取还会导致电池很快耗尽。

此外,仅当应用程序连接到该 wifi 网络时,Reachability 才能触发通知。但即使应用程序处于后台并且手机尚未连接到 WiFi,Boingo 也会通知用户。所以我强烈怀疑他们正在使用定位服务来检测用户是否进入了可用 wifi 的区域。