在我的应用中,我正在尝试在用户接到一些电话时上传一些数据。那么,是否可以在打电话或电话正在进行时通过GSM数据网络上传数据?感谢。
答案 0 :(得分:2)
您可以使用CTCallCenter
中的Core Telephony framework
类来注册事件处理程序,以便在通话开始或结束时通知您的应用,并且您可以随意执行任何操作。
CTCall提供以下callState属性
CTCallStateDialing
CTCallStateIncoming
CTCallStateConnected
CTCallStateDisconnected
希望它可以帮助您解决问题。
答案 1 :(得分:0)
首先,您需要在项目中添加CoreTelephony框架。
尝试以下代码。它会让你清楚地了解流程。
#import <CoreTelephony/CTCall.h>
#import <CoreTelephony/CTCallCenter.h>
static CTCallCenter *callCenter;
@implementation AppDelegate
- (void)dealloc
{
[_window release];
[_viewController release];
[super dealloc];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
if([[UIDevice currentDevice].systemVersion floatValue] >= 4.0)
{
callCenter = [[CTCallCenter alloc] init];
callCenter.callEventHandler=^(CTCall* call)
{
NSLog(@":: Call id:%@",call.callID);
if (call.callState==CTCallStateDialing)
{
NSLog(@":: Call state:dialing");
}
if (call.callState==CTCallStateIncoming)
{
NSLog(@":: Call state:incoming");
}
if (call.callState==CTCallStateConnected)
{
NSLog(@":: Call state:Connected");
}
if (call.callState==CTCallStateDisconnected)
{
NSLog(@":: Call state:Disconnected");
}
};
}
return YES;
}