2014-02-28 24 views
1

我將從環境AppGyver Steroids(包括Cordova 3.1核心插件)開始。用科爾多瓦處理iOS撥號器的最佳做法

需要的功能:從javascript控制器撥打電話並檢測嘗試成功或失敗。

也有類似的問題,但它們要麼是Android實施,要麼不涉及功能的第二部分。

從我所研究和嘗試的方法來看,window.open('tel:12345678', '_system')是最有效的方法,不需要使用自定義插件(首選),但無法檢測它是成功還是失敗(撥號器是否打開)。

這些類型的答案使我得出結論,我確實需要一個自定義Cordova插件才能獲取該信息,並且插件方法甚至可能是首選,因爲它可以本地訪問撥號程序。

我的問題是2倍, - 你知道另一個解決方案,可以用核心插件實現,或者返回成功/失敗或接受他們的回調? - 如果您是一位經驗豐富的科爾多瓦用戶,該任務會被視爲最佳實踐?有沒有一種首選的開源插件可以在Android和iOS上運行?關於本機應該是什麼樣子的任何建議?

感謝

[編輯] 就做了插件,但獲取有關撥號準確的信息仍然有問題。普遍接受的解決方案似乎集中在[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel://"]];(參見this問題的一個討論 - 不幸的是我還不能評論)。然而,正如其他人已經指出的那樣,該功能可能由於多種原因(一些是暫時的)而失敗,並且因此不是檢測該設備是否具有實際撥號器的可靠方式。通過插件,我現在可以使用原生的,但新的iOS本地開發。有什麼建議麼?

回答

0

[回答您的編輯]如果您只是想顯示/隱藏沒有撥號程序的設備的通話功能,您只需執行一些瀏覽器嗅探功能即可測試它是否爲iPad和非手機。這通常是而不是是一個很好的解決方案,但由於您在iOS上使用Cordova構建了一些東西,因此您已經知道每種情況下的瀏覽器。

+0

好吧,編輯中的解決方案似乎實際上對我來說很安靜,但我認爲你的解決方案也可以工作;我假設你的意思是'if(navigator.userAgent.toLowerCase()。match(/ ipad /))'。已經看到,在幾個地方,但正如你所說,它似乎有點哈克。我希望看到更好的例子,本機地詢問該設備是否可以撥打電話,最好甚至可以接聽諸如Skype或其他可以打電話的應用程序。 –