2012-05-04 39 views
2

比方說,我有一個多數民衆贊成呈現兩個或多個網頁視圖用於定位服務,請求允許原生的iOS應用程序。避免多種位置服務快訊

例如,假設給定查詢地圖比較結果的應用程序 - 例如,用戶提交一個地址,一個web視圖顯示了谷歌地圖的結果,另一名來自必應等

有什麼辦法爲了避免每個離散網絡視圖通過中斷警報視圖請求位置服務許可?

如果應用程序的唯一目的是比較各種基於位置的資產,那麼似乎我的應用程序應該詢問用戶一旦他們是否批准使用位置服務的應用程序。我的網頁瀏覽器如何插入此權限,或者位置服務架構無法實現?

如果這是不可能的聚集權限訪問位置服務,是有沒有辦法堅持的權限爲每個獨立供應商?例如,用戶每次運行應用程序時都不應該批准每個地圖的訪問權限......導致出現三個警報視圖(應用程序和兩個網頁瀏覽),每次啓動時都會詢問相同的內容。

是爲了避免這種行爲,以實現本機API調用的地圖供應商,而不是網頁視圖的唯一途徑?

歡迎任何輸入。

回答

1

是的,你可以做到這一點。使用你的appDelegate類來做到這一點。如果位置交互代碼很簡單,只需在appDelegate中創建一個方法來獲取授權狀態並從didFinishLaunching方法中調用它。

我做這樣的事情有一個方法,如:

- (BOOL)setupLocationMgr 
    { 
     CLLocationManager *locationMgr = [[CLLocationManager alloc] init]; 
     locationMgr.purpose = @"Location tracking for XXX app."; 
     return [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized; 
    } 

的的appDelegate然後保持CLLocationManager對象,並可以將其恢復到任何需要它的觀點。

+0

如何將其返回到視圖? – onmyway133

1

的方式嵌入Web視圖處理用戶位置許可所依據的網站上。每個需要用戶位置的網站都需要專門詢問用戶(否則你可能會做一些迂迴的事情......)。

我認爲你每次應用程序是開放的,因爲你要重新顯示在其他Web視圖看到警報,當應用程序被殺死(這個不知道)的緩存會被清除。

+0

緩存?你可以說得更詳細點嗎 ? – onmyway133

+0

我的意思是說,webview會記住位置權限問題的答案需要多長時間。每當網頁查詢用戶的位置時,它可能會詢問用戶,或者可能會記住您在webview的生命週期中的答案。我不完全確定它是如何工作的。 – Mark