回答
您可以使用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. 使用WiFi推送通知
- 3. 推送通知通過GCM
- 4. 通過PHP推送通知?
- 5. 通過quickblox推送通知
- 6. 通過Firebase發送推送通知
- 7. 通過node.js發送android推送通知
- 8. Telerik推送通知過濾
- 9. 過濾Apple推送通知
- 10. 推送通知
- 11. 推送通知
- 12. 推送通知
- 13. 推送通知
- 14. 推送通知
- 15. 推送通知
- 16. 推送通知
- 17. 推送推送通知
- 18. startUpdating LocationManager通過靜默推送通知
- 19. Android:通過C2DM推送通知
- 20. 通過推送通知打開spicific ViewController
- 21. 通過PHP廣播推送通知
- 22. 通過webview的網站推送通知?
- 23. 醒來通過推送通知
- 24. Apple通過代理推送PHP通知
- 25. 通過推送通知觸發構建
- 26. 通過推送通知更新存摺
- 27. iOS通過AWS SNS推送通知
- 28. 通過Web UI調度推送通知
- 29. 通過UISwitch啓用推送通知
- 30. IBM Worklight - 推送通知無法通過公司的WiFi訪問設備
您提供的解決方案使用GPS /藍牙而非WiFi。我所問的是一個純粹的基於WiFi的解決方案。 – alandalusi
這不是關於CLLocationManager的問題。它需要連接到指定的WiFi熱點。 –
但是如果應用程序在後臺或終止,則無法使用可達性。同樣,只有當應用程序連接到WiFi網絡時,Reachability纔會知道。但即使應用程序處於後臺並且手機尚未連接到WiFi,Boingo也會通知用戶。所以我強烈懷疑他們正在使用位置服務來檢測用戶是否進入了可用WiFi的區域。 –