【问题标题】:Using tel: url to initiate a call doesn't return control使用 tel: url 发起呼叫不会返回控制权
【发布时间】:2009-11-03 17:58:11
【问题描述】:

我有一个应用程序在 iphone 的 2.2.1 版中运行良好,但是当我将我的开发版 iphone 升级到 3.1.2 时遇到了问题。以前,拨打一个号码可以正常工作,因为通话结束时,我的应用程序已加载。现在,在我打完电话后,它会加载默认的电话应用程序。有谁知道这是为什么?我查看了从 sdk 2.x 到 3.x 的差异,但找不到任何改变的原因。谢谢

【问题讨论】:

    标签: iphone iphone-sdk-3.0


    【解决方案1】:

    这确实是从 3.0 更改为 3.1。如果您需要“prompt-for-call”和“relaunch-app-after-call”,有两种解决方法:

    选项 1:创建 UIWebView 并加载您的 tel: URL。

    // assuming you have an ivar to store a weak reference to a UIWebView:
    // UIWebView *phoneCallWebView;
    
    - (void) dialPhoneNumber:(NSString *)aPhoneNumber
    {
        NSURL *phoneURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",aPhoneNumber]];
    
        if ( !phoneCallWebView ) {        
            phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];
        }
        [phoneCallWebView loadRequest:[NSURLRequest requestWithURL:phoneURL]];
    }
    
    - (void) dealloc
    {
        // cleanup
        [phoneCallWebView release], phoneCallWebView = nil;
        [super dealloc];
    }
    

    选项 2:使用 telprompt:<number> URL 方案而不是 tel:<number> 发起呼叫。请注意,这是一个未记录的 API 功能,但它是 UIWebView 在您点击 web 视图(或 MobileSafari)中的电话号码链接时使用的功能。如果您的目标是 iPhone >= 3.0,则使用 telprompt 没有任何问题:(tel: 和 telprompt: 在 3.0 上是相同的)。我不确定 iPhone OS 2.x。

    一般来说,选项 2 有效且更容易,但选项 1 实际上是一种“合法”的解决方法。不幸的是,似乎没有办法将“提示呼叫”和“呼叫后重新启动”行为分开。在 iPhoneOS >= 3.1 上,您可以同时获取,也可以不获取。

    【讨论】:

      【解决方案2】:

      是的,Apple 将此行为从 3.0 更改为 3.1(我相信,也可能从 2.x 更改为 3.0)。他们承认这个改变是故意的,而不是一个错误。没有我知道的解决方法。如果您认为旧行为应该再次可用,您只需接受它提交增强请求即可。

      【讨论】:

      • 这就是我在检查了几个论坛后的想法,但只是想确定一下。谢谢!
      • 我刚刚提交了增强请求,如果我收到他们的任何消息,我会跟进。
      【解决方案3】:

      但是 UIWebView 和 telepump 都会引入一个“弹出框”,要求用户确认用户是否要拨打该号码。我想知道是否有一些解决方案可以摆脱“弹出框”谢谢。

      【讨论】:

        【解决方案4】:
            NSURL* url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"telprompt:%@",[SLUser sharedInstance].ivrNumber]];
        [[UIApplication sharedApplication] openURL:url];
        

        【讨论】:

          猜你喜欢
          • 2010-10-23
          • 1970-01-01
          • 2011-05-29
          • 2020-08-15
          • 2015-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多