场景: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
1 个回复
z***@aliyun.com (作者) - 80后IT男..
问题解决了,改了CallCenter.m中2处就好了:
self.callCenter = [[CTCallCenter alloc] init];
self.callCenter......
至于那个日志貌似与这个无关,还是报,但是功能正常了。