检测在后台发送JSON的电话开始
有电话号码,用户可以点击其中一个来拨打电话。 当通话成功连接时,应用程序应该向我的服务器发送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
:
当呼叫改变状态时,该属性的块对象在缺省优先级全局调度队列上调度。 要处理此类调用事件,请在应用程序中定义一个处理程序块并将其分配给此属性。 您必须实现处理程序块以支持从任何上下文中调用。
来源:CTCallCenter类参考
希望能帮助到你。
链接地址: http://www.djcxy.com/p/62867.html上一篇: Detect start of a phone call to send JSON in background