最後我解決了這個問題,在這裏我將嘗試解釋我採用的過程,它不是很優雅,但它的工作原理。
重現bug:
爲了再現這個bug,你只需要啓動視頻通話,而不必訪問設置頁面;如果此頁面已關閉應用程序並重新啓動,則打開視頻呼叫而不導航至設置。
錯誤的解釋:
該錯誤是由設置在應用程序啓動時加載引起的,一些配置中具有默認值,例如具有signalingServerAdress和SignalingServerPort;其他配置則是由於它們依賴於硬件功能而異於或異步加載(例如視頻和音頻編解碼器)。 當UWP異步啓動時,配置沒有正確加載並且Context對象未被完全輪詢。 這個不完整的對象會導致視頻流在sdp offer發送給遠程對等時不啓動。
錯誤的解決方案(不是很優雅):
我已經解決的bug迫使應用程序顯示設置頁面,因此,所有的配置被加載,用戶必須將其保存以導航到通訊錄頁。
我修改ContactsView.xaml.cs添加布爾_isFirstNavigation = true
,然後我調用ShowSettings
命令diplay設置頁面。
在這裏,整個方法我修改:
private void ContactsView_DataContextChanged(FrameworkElement sender,
DataContextChangedEventArgs args)
{
var viewModel = DataContext as ContactsViewModel;
if (viewModel == null) return;
viewModel.RingtoneElement = RingtoneElement;
//adding the following if block solved the bug
if (_isFirstNavigation)
{
viewModel.ShowSettings.Execute(null);
_isFirstNavigation = false;
}
}
既然你沒有提供任何代碼,爲什麼我們只是測試了話匣子項目能夠重現您的問題? –
如果你對此感興趣,你會在答案中找到詳細的解釋。 該錯誤可以通過簡單地關閉應用程序並重新打開來重現,以避免在開始視頻通話之前需要訪問設置頁面的錯誤。 – Marco