2011-08-23 56 views
1

我希望在解決這個問題上有任何幫助,或者至少在哪裏尋找解決辦法。PhoneGap navigator.compass.getCurrentHeading在iPhone上多次調用

我所要調用的iPhone navigator.compass.getCurrentHeading(succ,fail),每當設備移動時都會調用成功函數。在XCode調試日誌中,我看到很多條目navigator.compass.setHeading正在爲每個移動生成的調用。如果我嘗試再次輪詢標題數據 - 請求就會掛起。下面的代碼:

function onBodyLoad() { 
    if (typeof navigator.device == "undefined") { 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } else { 
     onDeviceReady(); 
    } 
} 

function succ(heading) { 
    alert("compass " + heading); 
} 

function fail() { 
    alert('fail'); 
} 

function onDeviceReady() { 
    navigator.compass.getCurrentHeading(succ, fail); 
} 

這真是奇怪的行爲,如我所料getCurrentHeading是剛剛調用一次,並返回一個結果,而不是事件的不可阻擋的亂舞。

我使用PhoneGap 1.0.0。 Android上的相同代碼完美工作。我已經刪除了所有的自定義JS代碼,以防止衝突的可能性。

回答

1

奇怪的是,沒有人似乎遇到這種情況。無論如何,這個(哈克)解決方案可以幫助任何尋找答案的人。

因爲這個問題,我們不得不停止使用getCurrentHeading,而是用navigator.compass.watchHeading代替它。在清除手錶時,我們還會調用navigator.compass.stop()函數來防止進一步羅盤垃圾郵件(僅適用於iPhone平臺 - Android很好),並且在再次調用watchHeading之前,我們將調用navigator.compass.stop()和navigator.compass .start(),重新初始化指南針「以防萬一」(再次,只在iPhone上)。

採取這些措施後,用戶指南針不再掛在第二個條目上的頁面,並且此頁面以外沒有標題垃圾信息。