国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

如何在 iOS 應(yīng)用中添加位置信息

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

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

應(yīng)用在前臺(tái)時(shí)能夠獲取位置信息; 通過切換、 Home 按鍵將應(yīng)用切換到后臺(tái)時(shí),停止獲取位置信息; 應(yīng)用程序在前臺(tái)運(yùn)行, 直接鎖定屏幕時(shí),能夠繼續(xù)獲取位置信息;

接下來逐步實(shí)現(xiàn)這三個(gè)需求。

獲取設(shè)備位置信息

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

// 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();

第一次運(yùn)行時(shí), 系統(tǒng)會(huì)彈出應(yīng)用要使用位置的對(duì)話框, 點(diǎn)擊確認(rèn)即可。

在鎖屏情況下繼續(xù)更新 GPS 信息

當(dāng)程序運(yùn)行時(shí), 用戶直接鎖定屏幕, 會(huì)調(diào)用 AppDelegate 的 DidEnterBackground 方法, 但是對(duì)于 iOS 應(yīng)用來說, 用戶切換程序或者點(diǎn)擊 Home 按鈕是, 也會(huì)調(diào)用這個(gè)函數(shù), 這兩種操作的區(qū)別在當(dāng)前應(yīng)用實(shí)例(UIApplication)的狀態(tài), 當(dāng)用戶切換程序或者點(diǎn)擊 Home 按鈕時(shí), 應(yīng)用的狀態(tài)是 UIApplicationStateBackground , 而鎖定屏幕時(shí), 應(yīng)用狀態(tài)是 UIApplicationStateInactive , 使用下面的代碼可以區(qū)分這兩種情況:

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'); }}

對(duì)于鎖屏情況下繼續(xù)更新位置信息的需求, 就很容易達(dá)到了, 只要在 DidEnterBackground 函數(shù)中檢查應(yīng)用的狀態(tài), 當(dāng)狀態(tài)為 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(); }}

注意: 根據(jù) Apple 的文檔, DidEnterBackground 函數(shù)大約有 5 秒鐘的執(zhí)行時(shí)間, 如果超過 5 秒鐘還沒有從這個(gè)函數(shù)返回, 應(yīng)用將會(huì)異常退出, 因此不要再這個(gè)函數(shù)中進(jìn)行耗時(shí)的操作。

當(dāng)應(yīng)用切換到前臺(tái)或者解鎖時(shí), 會(huì)調(diào)用 AppDelegate 的 WillEnterBackground 方法, 只要在這個(gè)方法中繼續(xù)更新位置即可:

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

注意: 同樣, WillEnterForeground 大約有 5 秒鐘的執(zhí)行時(shí)間, 因此也不要在這個(gè)函數(shù)中進(jìn)行耗時(shí)的操作。

為應(yīng)用添加后臺(tái)位置權(quán)限

要真正能在鎖屏狀態(tài)下繼續(xù)更新位置, 需要修改 info.plist ,增加后臺(tái)位置權(quán)限。 找到項(xiàng)目中的 info.plist 文件, 雙擊打開, 并切換到 Source 標(biāo)簽, 如下圖所示:

如何在 iOS 應(yīng)用中添加位置信息

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

如何在 iOS 應(yīng)用中添加位置信息

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

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

以上就是如何在 iOS 應(yīng)用中添加位置信息的詳細(xì)內(nèi)容,更多關(guān)于iOS 應(yīng)用中添加位置信息的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: IOS
相關(guān)文章:
主站蜘蛛池模板: 1024国产欧美日韩精品 | 高清精品一区二区三区一区 | 国产第一亚洲 | 日韩精品一区二区三区视频 | 亚洲综合无码一区二区 | 欧美性色欧美a在线播放 | 日本亚洲欧美高清专区vr专区 | 国产午夜免费视频片夜色 | 亚洲线精品一区二区三区 | 成年人免费小视频 | 可以免费看黄色的网站 | 大陆精品自在线拍国语 | 国产成人aa在线观看视频 | 欧洲免费无线码二区5 | 欧美一区二区三区免费看 | 青青青免费手机版视频在线观看 | 国产成人a毛片 | 亚州a| 国产一级视频免费 | 国产成人精品免费 | 国产精品怡红院在线观看 | 一级做a爰片久久毛片16 | 亚洲精品国产综合99久久一区 | 三级com| 久久精品国产99国产精品亚洲 | 国产在线欧美精品 | 国产成人av性色在线影院 | 在线精品国产成人综合第一页 | 中文字幕亚洲综合久久 | 亚洲人妖女同在线播放 | 波多野结衣在线免费观看视频 | 女人张开腿让男人捅爽 | 99九九精品国产高清自在线 | 看全黄男人和女人视频 | 日韩在线高清 | 国产妇乱子伦视频免费 | 国产美女作爱全过程免费视频 | 性欧美精品孕妇 | 亚洲一区中文 | 欧美午夜免费一级毛片 | 亚洲一区二区视频 |