亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

如何在 iOS 應用中添加位置信息

瀏覽:7日期:2022-09-16 18:38:09

最近要在 iOS 應用中添加位置信息, 需要滿足的需求如下:

應用在前臺時能夠獲取位置信息; 通過切換、 Home 按鍵將應用切換到后臺時,停止獲取位置信息; 應用程序在前臺運行, 直接鎖定屏幕時,能夠繼續獲取位置信息;

接下來逐步實現這三個需求。

獲取設備位置信息

在 iOS 上獲取位置信息是很容易的, 網上的資料也很多, 我的代碼如下:

// make sure location service is enabled.if (!CLLocationManager.LocationServicesEnabled) { return;}// create a new location managerCLLocationManager locationManager = new CLLocationManager { DistanceFilter = CLLocationDistance.FilterNone, DesiredAccuracy = 1000};// check to work with both ios 6 and older.if (UIDevice.CurrentDevice.CheckSystemVersion(6, 0)) { locationManager.LocationsUpdated += OnLocationsUpdated;}else { locationManager.UpdatedLocation += OnLocationUpdated;}locationManager.StartUpdatingLocation();

第一次運行時, 系統會彈出應用要使用位置的對話框, 點擊確認即可。

在鎖屏情況下繼續更新 GPS 信息

當程序運行時, 用戶直接鎖定屏幕, 會調用 AppDelegate 的 DidEnterBackground 方法, 但是對于 iOS 應用來說, 用戶切換程序或者點擊 Home 按鈕是, 也會調用這個函數, 這兩種操作的區別在當前應用實例(UIApplication)的狀態, 當用戶切換程序或者點擊 Home 按鈕時, 應用的狀態是 UIApplicationStateBackground , 而鎖定屏幕時, 應用狀態是 UIApplicationStateInactive , 使用下面的代碼可以區分這兩種情況:

public override void DidEnterBackground(UIApplication application) { if (application.ApplicationState == UIApplicationState.Background) { Log.Debug('App send to background by home button/switching to other app, stop upload location.'); } else if (application.ApplicationState == UIApplicationState.Inactive) { Log.Debug('App send to background by locking screen, contine upload location, but change mode to powersave mode'); }}

對于鎖屏情況下繼續更新位置信息的需求, 就很容易達到了, 只要在 DidEnterBackground 函數中檢查應用的狀態, 當狀態為 UIApplicationBackground 是才停止更新位置, 代碼如下:

public override void DidEnterBackground(UIApplication application) { // switch to other app or click home button, stop update location if (application.ApplicationState == UIApplicationState.Background) { locationManager.StopUpdatingLocation(); }}

注意: 根據 Apple 的文檔, DidEnterBackground 函數大約有 5 秒鐘的執行時間, 如果超過 5 秒鐘還沒有從這個函數返回, 應用將會異常退出, 因此不要再這個函數中進行耗時的操作。

當應用切換到前臺或者解鎖時, 會調用 AppDelegate 的 WillEnterBackground 方法, 只要在這個方法中繼續更新位置即可:

public override void WillEnterForeground(UIApplication application) { // app switch to foreground, continue to update location. locationManager.StartUpdatingLocation();}

注意: 同樣, WillEnterForeground 大約有 5 秒鐘的執行時間, 因此也不要在這個函數中進行耗時的操作。

為應用添加后臺位置權限

要真正能在鎖屏狀態下繼續更新位置, 需要修改 info.plist ,增加后臺位置權限。 找到項目中的 info.plist 文件, 雙擊打開, 并切換到 Source 標簽, 如下圖所示:

如何在 iOS 應用中添加位置信息

然后添加 Required background modes 屬性項, 并將這個屬性類型設置為 Array , 并為這個屬性添加一個子項 Location-based information , 最終如下圖所示:

如何在 iOS 應用中添加位置信息

也可以直接把下面的代碼添加到 info.plist 文件中, 效果是一樣的。

<key>UIBackgroundModes</key><array> <string>location</string></array>

以上就是如何在 iOS 應用中添加位置信息的詳細內容,更多關于iOS 應用中添加位置信息的資料請關注好吧啦網其它相關文章!

標簽: IOS
相關文章:
主站蜘蛛池模板: 精品国产一区二区三区免费看 | 国产欧美一区二区三区视频在线观看 | 亚洲精品天堂自在久久77 | 色综合久久88中文字幕 | 欧美三级视频在线观看 | 久久免费播放视频 | 精品一区二区三区在线观看l | 国产91精品高清一区二区三区 | 成人精品免费视频 | 日本免费特黄aa毛片 | 亚洲欧美日韩精品香蕉 | www.成人在线视频 | 在线播放高清国语自产拍免费 | 在线中文字幕亚洲 | 国产午夜精品久久理论片小说 | 久久福利青草精品资源站 | 国产午夜人做人视频羞羞 | 天天爱天天做天天爽天天躁 | 日本a级片免费看 | 久久网视频 | 日韩欧美一区二区三区在线 | 日本免费人成黄页在线观看视频 | 国产精品久久毛片蜜月 | 一区二区三区四区视频在线观看 | 久久福利青草精品资源站 | 亚洲精品在线播放 | 免费看欧美日韩一区二区三区 | 三级黄色高清视频 | 亚洲1314 | 久久国产精品二区99 | 日本成人在线视频网站 | a一级网站 | 久久精品国产91久久综合麻豆自制 | 在线视频亚洲 | 精品欧美一区二区精品久久 | 久久久毛片免费全部播放 | 国产三级国产精品国产国在线观看 | 天天se天天cao综合网蜜芽 | 精品国产三级a∨在线 | 国产精品久久久久久亚洲伦理 | 国产在线精品香蕉综合网一区 |