Dea*_*oke 5 ios core-telephony ios10 callkit
我希望在我的应用中获得电话状态.
经过一番搜索,我找到了CoreTelephony框架.但是在iOS 10中已经弃用了.那么还有其他可用选择吗?
我也找到了CallKit.iOS 10中的一个新框架.但是没有得到与我搜索时相同的呼叫状态.
import CallKit进入你的AppDelegate并添加以下代码:
// AppDelegate
var callObserver: CXCallObserver! // add property
// in applicationDidFinishLaunching...
callObserver = CXCallObserver()
callObserver.setDelegate(self, queue: nil) // nil queue means main thread
extension AppDelegate: CXCallObserverDelegate {
func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
if call.hasEnded == true {
print("Disconnected")
}
if call.isOutgoing == true && call.hasConnected == false {
print("Dialing")
}
if call.isOutgoing == false && call.hasConnected == false && call.hasEnded == false {
print("Incoming")
}
if call.hasConnected == true && call.hasEnded == false {
print("Connected")
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以试试这段代码:
创建调用观察者的实例
@property ( nonatomic ) CXCallObserver *callObserver;
Run Code Online (Sandbox Code Playgroud)启动实例并设置委托
_callObserver = [CXCallObserver new];
[_callObserver setDelegate:self queue:dispatch_get_main_queue()];
Run Code Online (Sandbox Code Playgroud)添加调用观察者委托
- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call{
if (call == nil || call.hasEnded == YES) {
NSLog(@"CXCallState : Disconnected");
}
if (call.isOutgoing == YES && call.hasConnected == NO) {
NSLog(@"CXCallState : Dialing");
}
if (call.isOutgoing == NO && call.hasConnected == NO && call.hasEnded == NO && call != nil) {
NSLog(@"CXCallState : Incoming");
}
if (call.hasConnected == YES && call.hasEnded == NO) {
NSLog(@"CXCallState : Connected");
}
}
Run Code Online (Sandbox Code Playgroud)在Swift 4.2中:
var callObserver: CXCallObserver()
callObserver.setDelegate(self, queue: DispatchQueue.main)
func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
if call == nil || call.hasEnded == true {
print("CXCallState : Disconnected")
}
if call.isOutgoing == true && call.hasConnected == false {
print("CXCallState : Dialing")
}
if call.isOutgoing == false && call.hasConnected == false && call.hasEnded == false && call != nil {
print("CXCallState : Incoming")
}
if call.hasConnected == true && call.hasEnded == false {
print("CXCallState : Connected")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4308 次 |
| 最近记录: |