回答
您可以使用CLLocationManager和UserNotifications实现这一目标。
您可以使用区域监测服务,如CLCircularRegion类(以获得地理区域)或CLBeaconRegion类(以获得灯塔地区),当用户跨越基于区域的边界得到通知。如果即使您的应用程序未运行,也会出现边界交叉,系统会自动在后台将其唤醒(或重新启动),以便它可以处理事件。
在这种情况下,选择字典传递给应用程序(_中:didFinishLaunchingWithOptions :)你的应用程序代理的方法包含UIApplicationLaunchOptionsKey.location。然后trigger a local notification为了通知用户该位置的可用服务。
例子: -
- 使用位置监控: - https://www.raywenderlich.com/136165/core-location-geofencing-tutorial
- 使用iBeacons - https://www.raywenderlich.com/101891/ibeacons-tutorial-ios-swift
NB。正如其他答案建议可达性类也可以使用。但是,如果应用程序处于后台或终止,则无法使用Reachability。要在应用程序处于后台时触发可访问性,我们可以按照以下步骤操作:https://stackoverflow.com/a/35615381/4637057。但不幸的是,这里的缺点是,后台抓取设置为应用程序越频繁,将会使用更多的资源。 iOS通过对尝试使用该API的应用程序施加限制来保护自己和设备,所以在设置自定义时间间隔时要谨慎。背景取消也会导致电池快速流失。
此外,只有当应用程序连接到该无线网络时,可达性才会触发通知。但即使应用程序处于后台并且手机尚未连接到WiFi,Boingo也会通知用户。所以我强烈怀疑他们正在使用位置服务来检测用户是否进入了可用WiFi的区域。
我认为它可以通过在AppDelegate
的与Reachability类观察装置的连通性进行didFinishLaunchingWithOptions
当networkStatus
是等于ReachableViaWiFi
然后调用application.registerForRemoteNotifications()
更新: 有两种类型的通知: Remote
和Local
你可以配置你的应用程序发送本地通知,但你需要之前设置它的内容, here你可以找到苹果对如何处理局部n指南otification
这需要我连接到该接入点。在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
- 1. 使用WiFi推送通知
- 2. 过滤Apple推送通知
- 3. 推送通知
- 4. 推送通知
- 5. 推送通知
- 6. 推送通知
- 7. 推送通知
- 8. 推送推送通知
- 9. 通过Web UI调度推送通知
- 10. 通过PHP广播推送通知
- 11. Apple通过代理推送PHP通知
- 12. iOS通过AWS SNS推送通知
- 13. 通过UISwitch启用推送通知
- 14. Android:通过C2DM推送通知
- 15. 通过推送通知打开spicific ViewController
- 16. 通过推送通知更新存折
- 17. Firebase推送通知
- 18. Devextreme推送通知
- 19. 推送通知?Iphone
- 20. 推送通知iPhone
- 21. 从推送通知
- 22. Chrome推送通知
- 23. Android推送通知
- 24. PHP - 推送通知
- 25. iPhone推送通知
- 26. 推送通知IOS
- 27. 推送Cookie通知
- 28. IOS8推送通知
- 29. iPhone推送通知
- 30. VOIP推送通知
您提供的解决方案使用GPS /蓝牙而非WiFi。我所问的是一个纯粹的基于WiFi的解决方案。 – alandalusi
这不是关于CLLocationManager的问题。它需要连接到指定的WiFi热点。 –
但是如果应用程序在后台或终止,则无法使用可达性。同样,只有当应用程序连接到WiFi网络时,Reachability才会知道。但即使应用程序处于后台并且手机尚未连接到WiFi,Boingo也会通知用户。所以我强烈怀疑他们正在使用位置服务来检测用户是否进入了可用WiFi的区域。 –