2016-12-20 88 views
3

我在VoIP應用程序內實現CallKit支持。在CallKit UI中隱藏FaceTime按鈕

我能夠通過在CXProviderConfiguration中將supportsVideo設置爲false來禁用視頻按鈕。現在FaceTime按鈕出現了。

我想知道是否有一種方法可以在默認UI中禁用FaceTime按鈕,因爲該應用程序正在處理與FaceTime無關的內部企業編號。


更新: 正如下面的答案說,它可以禁用按鈕,但主叫號碼丟失(顯示爲Unknown)。我想保留號碼並禁用FaceTime按鈕。


更新: 在iPhone設置禁用的FaceTime禁用的FaceTime按鈕。然而,這不是一個有效的解決方案。


更新: 任何改變CXHandle類型,包括插入無效的電話號碼,它的人物,不影響問題 - FaceTime的按鈕仍然顯示。

回答

2

在好消息/壞消息中,我可以通過清除remoteHandle(未移除或隱藏,只是變灰)來禁用FaceTime按鈕。

但是,作爲副作用,如果您未設置CXCallUpdatelocalizedCallerName屬性,則主叫方顯示爲「未知」。
沒有句柄的呼叫將具有不能在最近呼叫中按下的副作用。

CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init]; 
//callUpdate.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:handle]; 
[self.provider reportNewIncomingCallWithUUID:uuid update:callUpdate completion:^(NSError* error) {}]; 
+0

感謝您的回覆,我認爲您的解決方案可能在其他情況下有用。我意識到這一點,但不幸的是我們也想保留調用者的號碼。這是一個電話號碼,它與FaceTime和全球電話網絡無關。 –

+0

它不必說「未知」。你可以通過設置'CXCallUpdate'的'localizedCallerName'屬性來改變它顯示的字符串。但是沒有句柄的呼叫會產生不能在最近呼叫中按下的副作用。 – user102008

0

它可以真正禁用FaceTime按鈕,通過清除remoteHandle爲@Eli Burke說,但副作用是禁用從最近的調用。我不知道爲什麼。

+0

你誤解了我,我只是不知道爲什麼不能禁用FaceTime按鈕,並同時啓用從最近的呼叫? – foolishBoy

0

我已經按照與disabling the "Add Call" button相同的方法禁用了FaceTime按鈕,該功能不會中斷來電者姓名功能,但奇怪的是,如果用戶觸摸了揚聲器按鈕,FaceTime按鈕將變爲活動狀態。我不明白爲什麼這種行爲不是蘋果的錯誤,所以我放棄了正確的修復。

編輯:這就是爲什麼:我只在撥打電話後纔將CXHandle歸因於CXCallUpdate,所以起初FaceTime按鈕被禁用,因爲沒有CXHandle。激活揚聲器按鈕以某種方式強制在CallKit UI中進行更新 - 此時,已存在CXHandle,因此FaceTime按鈕將啓用。