通过移动网络上传数据 - 目标C.

时间:2014-01-21 07:11:24

标签: ios iphone objective-c phone-call

在我的应用中,我正在尝试在用户接到一些电话时上传一些数据。那么,是否可以在打电话或电话正在进行时通过GSM数据网络上传数据?感谢。

2 个答案:

答案 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;
}