我在Boingo的Wi-Finder iOS应用程序中注意到,一旦他到达Boingo数据库中的访问点,应用程序就会向用户发送通知。该通知告诉用户他可以访问wifi网络。
iOS是如何完成的?
答案 0 :(得分:3)
我认为可以通过观察设备与AppDelegate
didFinishLaunchingWithOptions
networkStatus
中Reachability课程的连接来完成
当ReachableViaWiFi
等于application.registerForRemoteNotifications()
时,请拨打Remote
更新:
有两种类型的通知:Local
和{{1}}
你可以配置你的应用程序发送本地通知,但你需要先设置它的内容,
here您可以找到有关如何处理本地通知的Apple指南
答案 1 :(得分:2)
您可以使用 CLLocationManager 和 UserNotifications 来实现这一目标。
您可以使用区域监控服务,例如 CLCircularRegion 类(获取地理区域)或 CLBeaconRegion 类(获取信标区域) )当用户越过基于区域的边界时得到通知。如果即使您的应用程序未运行也会发生边界跨越,系统会自动将其唤醒(或重新启动),以便它可以处理该事件。
在这种情况下,传递给应用代理的应用程序(_:didFinishLaunchingWithOptions:)方法的选项字典包含 UIApplicationLaunchOptionsKey.location 。然后trigger a local notification以通知用户该位置的可用服务。
<强>示例: - 强>
NB。正如其他答案可达性类中所建议的,我们也可以使用。但是,如果应用程序处于后台或终止,则无法使用可访问性。要在app处于后台时触发可访问性,我们可以按照以下步骤操作:https://stackoverflow.com/a/35615381/4637057。但不幸的是,这里的缺点是,后台提取设置为应用程序的次数越多,将使用的资源就越多。 iOS通过对尝试经常使用API的应用程序施加限制来保护自身和设备,因此在设置自定义时间间隔时要小心。此外,背景提取会很快导致电池耗尽。
此外,只有当应用程序连接到该wifi网络时,可达性才能触发通知。但即使应用程序处于后台并且手机尚未连接到wifi,Boingo也会通知用户。所以我强烈怀疑他们正在使用位置服务来检测用户是否进入了可用wifi的区域。
答案 2 :(得分:1)
您可以获取Wifi热点的SSID,如果已注册,可以关注Mohy的答案。 请检查以下链接。
这将帮助您获取Wifi热点的SSID。