【问题标题】:Initiate phone call from app with area code (prefix)使用区号(前缀)从应用程序发起电话呼叫
【发布时间】:2014-08-15 17:37:24
【问题描述】:

在我的代码中,我有这个 sn-p 可以用拨号前缀拨打电话(基本上是一个“呼叫我”按钮):

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://+0000000000"]];
if(SYSTEM_VERSION_LESS_THAN(@"7.0")) {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:+0000000000"]];
}

我想知道iPhone是否会在不需要时隐藏拨号前缀(?)。

谢谢,

【问题讨论】:

    标签: ios prefix dialing


    【解决方案1】:

    对于那些感兴趣的人,我找到了一个简单的方法,使用NSLocale currentLocale

    // Get the current locale.
    NSLocale *currentLocale = [NSLocale currentLocale];
    // Get country code, e.g. ES (Spain), FR (France), etc.
    NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode];
    
    if ([countryCode isEqualToString:@"FR"]){
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://0000000000"]];
    }
    else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://+33000000000"]];
    }
    
    if(SYSTEM_VERSION_LESS_THAN(@"7.0")) {
        if ([countryCode isEqualToString:@"FR"]){
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://0000000000"]];
        }
        else {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:+ 33000000000"]];
        }
    }
    

    效果很好。

    【讨论】:

    • 这并不完全正确。我可能居住在任何国家/地区,但选择使用法语区域设置数字和日期。
    • 嗨 Desdenova,如果您知道更好的方法,我知道!也许使用“CTTelephonyNetworkInfo”?
    • 我不确定。我认为漫游时CTCarrier 不会改变。为什么不在所有情况下都留下+ 33?当您在法国时,它仍然会调用。
    • 我也认为离开 +33 仍然来自法国。我目前在法国,我刚刚做了一个测试。它不工作......
    • 我认为当用户在国外漫游时,carrier.mobileCountryCode 不会改变。我认为 carrier.mobileCountryCode 取决于插入的 SIM 卡。如果我错了,请纠正我,我不确定。
    【解决方案2】:

    第二个回答我自己的问题:

    根据这篇文章,漫游时移动国家代码不会改变:Does CTCarrier mobileNetworkCode change when roaming?

    因此最好的方法是:

    {
    
    CTTelephonyNetworkInfo *info = [CTTelephonyNetworkInfo new];
    
    CTCarrier *carrier = info.subscriberCellularProvider;
    
    NSLog(@"country code is: %@", carrier.mobileCountryCode);
    // Get mobile network code
    
    
    
    if ([carrier.mobileCountryCode isEqualToString:@"208"]){
        [[UIApplication sharedApplication]
         openURL:[NSURL URLWithString:@"telprompt://0000000000"]];
    }
    
       else {
        [[UIApplication sharedApplication]
         openURL:[NSURL URLWithString:@"telprompt://+33000000000"]];
    }
    
    
        if(SYSTEM_VERSION_LESS_THAN(@"7.0")) {
            if ([carrier.mobileCountryCode isEqualToString:@"208"]){
                [[UIApplication sharedApplication]
                 openURL:[NSURL URLWithString:@"tel://0000000000"]];
            }
            else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:+33000000000"]];
            }
    }
    }
    

    也很好用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多