有电话号码,用户可以点击其中之一进行通话。 call 成功连接后,应用程序应将JSON
发送到我的服务器。
我遇到了问题-轻按了电话号码,就会弹出Phone
应用程序,并将我的应用程序发送到后台。我已经阅读了CoreTelephony Framework
文档和CTCall
类参考,但是我不确定这四种状态是什么:
extern NSString const *CTCallStateDialing;
extern NSString const *CTCallStateIncoming;
extern NSString const *CTCallStateConnected;
extern NSString const *CTCallStateDisconnected;
他们是在后台还是在
Phone
应用程序运行时检查的。如何检测呢?我应该在其中使用
applicationDidEnterBackground
方法和CTCall
类来触发JSON
吗? 最佳答案
您应该使用 CTCallCenter
并实现一个 callEventHandler
,在通话状态更改时将其触发。这是怎么做。
首先,您将需要一个CTCallCenter
实例:
@property(nonatomic, strong) CTCallCenter *callCenter;
然后,在应用启动时设置callEventHandler。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_callCenter = [[CTCallCenter alloc] init];
[_callCenter setCallEventHandler:^(CTCall *call)
{
if ([call.callState isEqualToString: CTCallStateConnected])
{
NSLog(@"Connected");
}
else if ([call.callState isEqualToString: CTCallStateDialing])
{
NSLog(@"Dialing");
}
else if ([call.callState isEqualToString: CTCallStateDisconnected])
{
NSLog(@"Disconnected");
} else if ([call.callState isEqualToString: CTCallStateIncoming])
{
NSLog(@"Incoming");
}
}];
return YES;
}
关于
callEventHandler
:该属性的阻止对象以默认优先级调度
call 更改状态时的全局调度队列。处理这样的电话
事件,在您的应用程序中定义一个处理程序块并将其分配给
这个性质。您必须实现处理程序块以支持
从任何上下文调用。
资料来源:CTCallCenter Class Reference
希望能帮助到你。
关于ios - 检测电话开始以在后台发送JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22047916/