CXCallObserverDelegate:callChanged没有触发

时间:2017-05-03 11:10:56

标签: ios nativescript

我正在开发一个NativeScript应用程序,它将使用侦听手机的通话状态。为此,我使用CXCallObserver和CXCallObserverDelegate,我设置如下:

    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”应该在任何电话状态更改时执行。但没有任何反应。

任何人都有任何建议可能出错?

0 个答案:

没有答案