z***@aliyun.com
z***@aliyun.com
  • 发布:2019-06-27 15:41
  • 更新:2019-06-28 16:44
  • 阅读:3153

iOS平台5+插件开发监听通话状态xcode10报错"Permission denied"

分类:5+ SDK

场景:iOS平台5+插件开发
功能:监听通话状态
报错:[NetworkInfo] Signal strength query returned error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied", descriptor: <CTServiceDescriptor 0x28393a400, domain=1, instance=1>

iOSSDK:2.0.1.64837_20190614
macOS:10.14.5
xcode:10.2.1
手机:iphone6
ios:12.3.1

==Native代码========================
--CallCenter.h---------------------------------

#include "PGPlugin.h"  
#include "PGMethod.h"  
#import <CoreTelephony/CTCallCenter.h>  
#import <CoreTelephony/CTCall.h>  

@interface CallCenter : PGPlugin  

@property (nonatomic, strong) CTCallCenter *callCenter;  

- (void)CallEvent:(PGMethod*)command;  

@end

--CallCenter.m---------------------------------

#import "CallCenter.h"  

@implementation CallCenter  

- (void)CallEvent:(PGMethod*)command  
{  
    if(command) {  
        NSString* cbId = [command.arguments objectAtIndex:0];  

        CTCallCenter *callCenter = [[CTCallCenter alloc] init];  

        callCenter.callEventHandler = ^(CTCall* call) {  
            NSLog(@"%@ \n",call.callState);  
            [self toSucessCallback:cbId withString:call.callState keepCallback:true];  
        };  
    }  
}  

@end

==feature.plist========================================

<key>CallCenter</key>  
    <dict>  
        <key>class</key>  
        <string>CallCenter</string>  
        <key>global</key>  
        <false/>  
    </dict>

==js代码==================================================

// 声明的JS“扩展插件别名”  
                var bridge = window.plus.bridge;  

                window.plus.CallCenter = {  
                    // 声明异步返回方法  
                    CallEvent: function(successCallback, errorCallback) {  
                        var success = typeof successCallback !== 'function' ? null : function(args) {  
                                successCallback(args);  
                            },  
                            fail = typeof errorCallback !== 'function' ? null : function(code) {  
                                errorCallback(code);  
                            };  
                        callbackID = bridge.callbackId(success, fail);  
                        // 通知Native层plugintest扩展插件运行”PluginTestFunction”方法  
                        return bridge.exec('CallCenter', "CallEvent", [callbackID]);  
                    }  
                };  

                plus.device.dial("10086", false);  

                plus.CallCenter.CallEvent(function(callState) {  
                    console.log(callState);  
                });

日志跟踪js已经通过bridge调到native代码,通话结束后报出这个错误日志
[NetworkInfo] Signal strength query returned error: Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied", descriptor: <CTServiceDescriptor 0x28393a400, domain=1, instance=1>

这功能我之前成功实现发布过,当时的环境是
IOS-SDK:1.9.9.44932_20180511
xcode:9

2019-06-27 15:41 负责人:无 分享
已邀请:
z***@aliyun.com

z***@aliyun.com (作者) - 80后IT男..

问题解决了,改了CallCenter.m中2处就好了:
self.callCenter = [[CTCallCenter alloc] init];
self.callCenter......

至于那个日志貌似与这个无关,还是报,但是功能正常了。

该问题目前已经被锁定, 无法添加新回复