2016-12-07 72 views
1

我有一個Cordova應用程序(針對Android和iOS編寫),在一定的安全性調整一個月後,一直在使用相當數量的用戶或兩個前。現在隨着更新的10.1升級(目前在10.1.1上測試),我發現調用視頻捕獲功能的嘗試完全崩潰了Cordova,沒有任何從JS角度進行調試的選項。 Android方面沒有問題。這只是對iOS的最新更新,並沒有代碼或插件更新或更改。

我們使用最新的cordova-plugin-media-capture plugin,v1.4.0和ngCordova。打電話給這個插件,通過$cordovaCapture.captureImage拍攝照片在iOS 10.1.1中正常工作。這只是撥打電話$cordovaCapture.captureVideo,它完全立即崩潰科爾多瓦。我已經看過Xcode,以防有任何新的或者失控的設置,並且一切看起來都正確,因此歡迎任何關於解決這個問題的建議。

早些時候(一個月或兩個月前),我們解決了使用科爾多瓦 - 插件的設置掛機插件與這些iOS的設置(如圖片段)config.xml中的新的iOS 10權限問題:

<platform name="ios"> 
    <config-file parent="NSLocationWhenInUseUsageDescription" platform="ios" target="*-Info.plist"> 
     <string>Reason goes here...</string> 
    </config-file> 
    <config-file parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist"> 
     <string>Reason goes here....</string> 
    </config-file> 
    <config-file parent="NSPhotoLibraryUsageDescription" platform="ios" target="*-Info.plist"> 
     <string>Reason goes here...</string> 
    </config-file> 

我使用Xcode確認了這些設置。我們是在傳遞給實際調用的參數如下:

$cordovaCapture.captureVideo 
({ 
    limit:  1, // how many clips to record (iOS must be 1) 
    duration: 300 // maximum length (in seconds) = 5 minutes 
}) 

希望其他人管理,以解決同樣的問題,並願意分享的解決方法。

+0

FYI應用程序最初使用Cordova v6.2.0。我升級到最新的v6.4.0並重新測試,但獲得相同的iOS問題。 –

+0

對於兩位親切地建議我看麥克風權限的人。我已經深入挖掘,這似乎是它崩潰的原因(來自崩潰報告)。因爲我的config.xml設置都包含在內,所以必須將某些東西搞砸,並且我也可以在Xcode上看到原因字符串是目前,但該應用程序似乎並沒有它。 –

+0

嘗試將話筒設置保存在config.xml中,然後'cordova clean ios'然後重建並運行。訣竅,我現在可以再次錄製視頻。所以根本問題是麥克風設置,但在構建過程中還有其他問題。 –

回答

1

您錯過了錄製視頻時需要的NSMicrophoneUsageDescription

奇怪的是,插件的1.4.0版本應該添加所有的UsageDescriptions,你不應該需要cordova-plugin-settings-hook,但是由於某種原因,如果你需要添加插入。

在只有1.4.0媒體插件的乾淨的新項目中,它按預期工作,沒有崩潰。

+0

感謝您的建議。不勝感激!將研究這一點,如果解決,接受答案。有點奇怪,我們不得不在10.0版本中解決權限問題,然後一切都奏效。也許這個權限只能在10.1中執行。 –

+0

不幸的是沒有解決問題。(仍然崩潰。)請問+1,因爲無論如何這都是需要的權限。 –

+0

跟進...崩潰日誌(來自Xcode設備菜單)顯示丟失的麥克風使用字符串應該歸咎於崩潰,即使他們在Xcode的信息部分。所以,添加麥克風設置和運行cordova clean ios命令的組合終於成功了。由於您是第一個推薦麥克風設置的人,而且您甚至使用了「乾淨」這個詞,所以將其標記爲正確答案。 –

1

在iOS 10更新中,插件必須與具有權限描述的變量一起添加。 在cordova項目的config.xml中使用下面的代碼。

<plugin name="cordova-plugin-media-capture" spec="1.4.0"> 
    <variable name="CAMERA_USAGE_DESCRIPTION" value="To take videos"/> 
    <variable name="MICROPHONE_USAGE_DESCRIPTION" value="To record voice while taking videos"/> 
    <variable name="PHOTO_LIBRARY_USAGE_DESCRIPTION" value="To provide photo browsing."/> 
</plugin> 

這會解決問題。

請參閱ios怪癖:https://github.com/apache/cordova-plugin-media-capture

+0

感謝分享。這不幸的是沒有任何區別。 –

+0

正如你在這張票上的其他地方看到的那樣,話筒設置組合和一個cordova clean ios命令組合起來了。 jcesarmobile首先指出了麥克風的設置,所以會在那裏獎勵,但這也是一個很好的答案,對於不想使用我們已經使用的settings-hook插件的人來說,+1也是如此。 –

相關問題