0

我试图让我在后台的应用程序在呼叫断开后进入前台。这是代码:

if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel:0123456789"]]){
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:0123456789"]];
} else {
  // Could not make call
}

CTCallCenter *c=[[CTCallCenter alloc] init];
c.callEventHandler=^(CTCall* call){
  if(call.callState == CTCallStateDisconnected) {
    // code to make app return to the foreground
    // I have tried calling applicationWillEnterForeground, but it didn't work
  }
}

请帮忙

4

2 回答 2

1

我相当肯定你不能用一个简单的电话来做到这一点。也许注册一个 URL 处理程序我的 app:// 并在完成块中使用 openURL 可以工作,但这似乎很hacky。

于 2010-08-01T16:53:36.237 回答
1

Apple 不允许您“来到前台”,但您可以使用本地通知。

因此,对于您想要做的事情,您需要:

  1. 启动拨号 url 后,当您的应用程序被推送到后台时,您将获得一个“applicationDidEnterBackground:”。您将需要启动后台任务,否则您将无法更改呼叫状态。

  2. 当您收到呼叫状态更改时,创建本地通知。如果用户想要“查看”您的应用程序,那么您的应用程序将出现在前台。

上面有一个问题,如果电话通话时间超过 10 分钟,那么后台任务将被终止,您将无法更改通话状态。

于 2011-04-04T21:14:11.803 回答