我正在開發一個NativeScript應用程序,它將使用監聽手機的通話狀態。對於這個我使用CXCallObserver和CXCallObserverDelegate我設置如下:CXCallObserverDelegate:callChanged不觸發
module.exports = {
phoneDelegate: NSObject.extend({
initWithResolveReject: function(resolve, reject){
var self = this.super.init();
if(self){
this.resolve = resolve;
this.reject = reject;
}
return self;
},
callObserverCallChanged: function(observer, call){
console.log("This log is not triggering");
if(call.hasEnded){
// call has ended
this.resolve({phoneState: "ended"});
}
if(call.isOutgoing && !call.hasConnected){
// Dialing out
this.resolve({phoneState: "outgoing call"});
}
if(!call.isOutgoing && !call.hasConnected && !call.hasEnded){
// Call is incoming
this.resolve({phoneState: "incoming call"});
}
if(call.hasConnected && !call.hasEnded){
// Call is ongoing
this.resolve({phoneState: "ongoing call"});
}
}
}, {
protocols: [CXCallObserverDelegate]
}),
registerListener: function(){
return new Promise((resolve, reject) => {
try{
this.callObserver = new CXCallObserver();
let myCallDelegate = this.phoneDelegate.alloc().initWithResolveReject(resolve, reject);
this.callObserver.setDelegateQueue(myCallDelegate, null);
console.log("phone listener registered");
} catch(error) {
reject({error: error});
}
})
}
}
偵聽器得到註冊,因爲它應該,至少沒有錯誤拋出,最後控制檯登錄「registerListener」作爲執行這應該。
當我嘗試撥打電話時,傳入或傳出都沒有任何反應。至少第一個控制檯登錄「callObserverCallChanged」應該在任何電話狀態改變時執行。但沒有任何反應。
任何人有什麼建議可能是錯的?
我已經向NativeScript的github頁面報告過這個問題,所以任何感興趣的人都可以按照這裏(https://github.com/NativeScript/NativeScript/issues/4099) –