2013-02-07 76 views
2

我正在開發IOS手機應用程序,我想在加載時獲得位置服務的用戶權限。問題是,直到我恢復應用程序(按回家並再次打開應用程序)或等待幾分鐘後纔會顯示警報詢問權限,這是不可接受的。Phonegap IOS地理位置權限警報沒有顯示

我使用deviceready事件,像這樣:

document.addEventListener("deviceready", deviceReady, false); 
function deviceReady() { 
navigator.geolocation.getCurrentPosition(onLocationSuccess, 
             onLocationError 
             ); 
} 

如果我不等待deviceready警報似乎不錯,但我得到雙重像這樣一個信息提示:

/var/mobile/Applications/XXXX-XXXX-XXXX-XXXXXXXXXXX/AppName.app/www/index.html would like to use your current location

任何想法得到它的效果?

+0

你看過文檔中給出的完整示例:http://docs.phonegap.com/en/2.3。0/cordova_geolocation_geolocation.md.html#地理定位他們應該給你一個如何讓它工作的想法,確保你在'config.xml'中有''' – methodMan

+0

@methodMan是的,地理位置工作正常,但許可警報「我的應用程序想使用您當前的位置」是什麼似乎越野車,它只出現,直到我退出應用程序按主頁按鈕。我正在使用iOS 5.0.1順帶測試我的iPhone 4。 –

+0

我剛剛更新到科爾多瓦2.3.0(我在2.2),問題似乎得到解決。一切都如預期般運作。謝謝。 –

回答

0

雖然你已經解決了這個問題,但以後會幫助其他人。

爲了在iOS上顯示權限對話框,您必須在config.xml中配置以下內容。

<gap:config-file platform="ios" parent="NSLocationAlwaysUsageDescription" overwrite="false"> 
    <array> 
     <string>NSLocationAlwaysUsageDescription</string> 
    </array> 
</gap:config-file> 

我使用這個,它運作良好。

+0

問題是,他可以看到對話框,但只有在關閉應用程序後。你的答案與這個問題無關。 – CodeGems

1

我在這個問題上奮戰了幾天,終於找到了解決方案。似乎它不是插件或科維達版本的責任。嘗試添加該內容安全,政策進入你的的index.html頭段內:

<meta http-equiv="Content-Security-Policy" content="default-src * gap://ready file:; style-src 'self' 'unsafe-inline'; img-src 'self' 

數據:;腳本SRC *'不安全內聯 '不安全-EVAL'「>

重要組成部分,是

默認-SRC *差距://準備文件:;

差距:只需要在iOS(使用一個UIWebView時),並需要JS->本地通信

我希望它能幫助

0

這種溶膠。 ution是非常適合我:

<gap:config-file platform="ios" parent="NSLocationAlwaysUsageDescription" overwrite="false"> 
    <array> 
     <string>NSLocationAlwaysUsageDescription</string> 
    </array> 
</gap:config-file> 
+0

一般而言,如果答案包含對代碼意圖做什麼的解釋,以及爲什麼解決問題而不介紹其他問題,則答案會更有幫助。 –

+0

當然,這段代碼放在了config.xml中,因爲您需要在Android應用程序的IOS應用程序中使用cordoba-plugin-geolocation進行特定配置,因爲它適用於此作品,請告訴我能否幫助您更多。 –

0

的iOS使用此代碼權限對話框中您config.xml中

<gap:config-file platform="ios" parent="NSLocationAlwaysUsageDescription" overwrite="false"> 
<array> 
    <string>NSLocationAlwaysUsageDescription</string> 
</array> 

@AAhad有關問題的用戶,當關閉對話框或提醒,您可以檢查該選項是否可用,如果您需要激活GPS,則可以與您的請求一起以新警報與用戶通話。

document.addEventListener("deviceready", onDeviceReady, false); 


function onDeviceReady() { 
    navigator.geolocation.getCurrentPosition(onSuccess, onError); 
} 

// onSuccess Geolocation 
// 
function onSuccess(position) { 
    //Code for your GPS 
} 

// onError Callback receives a PositionError object or if your user close de dialog or cancel de permission 
// 
function onError(error) { 
     alert('Error please check your GPS on Settings: ' + error.code + '\n' + 
       'Please Active Your GPS' + error.message + '\n'); 
    }