有电话号码,用户可以点击其中之一进行通话。 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/

10-10 21:13
查看更多