【问题标题】:How to get current country without using "LocationManager" or "NSLocale"?如何在不使用“LocationManager”或“NSLocale”的情况下获取当前国家/地区?
【发布时间】:2013-09-03 10:17:19
【问题描述】:

我想得到我现在的国家;但我不想使用“LocationManager”或“NSLocale” 我只需要国名。 请问有什么办法吗?

非常感谢:)

【问题讨论】:

  • 您是否有不想使用 NSLocale 或 LocationManager 的原因?
  • 如果不使用 locationmanager 或 nslocale,您将无法获得当前位置的经纬度,因此您也无法找到国家/地区必须使用其中之一
  • LocationManager 会询问用户是否允许获取他的位置,我想大多数用户不会允许这个 NSLocale:我在约旦,我的 iPhone 语言是美国,所以 NSLocale 返回美国
  • 我想从 wifi 信息中获取位置,但我不知道该怎么做..

标签: iphone xcode ipad location


【解决方案1】:

您应该尝试获取蜂窝信息

#import <CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>

// Setup the Network Info and create a CTCarrier object
CTTelephonyNetworkInfo *networkInfo = [[[CTTelephonyNetworkInfo alloc] init] autorelease];
CTCarrier *carrier = [networkInfo subscriberCellularProvider];

// Get carrier name
NSString *carrierName = [carrier carrierName];
if (carrierName != nil)
  NSLog(@"Carrier: %@", carrierName);

// Get mobile country code
NSString *mcc = [carrier mobileCountryCode];
if (mcc != nil)
  NSLog(@"Mobile Country Code (MCC): %@", mcc);

// Get mobile network code
NSString *mnc = [carrier mobileNetworkCode];
if (mnc != nil)
  NSLog(@"Mobile Network Code (MNC): %@", mnc);

您应该尝试从设备 IP 地址获取国家/地区

Identifying country by IP address

【讨论】:

  • 是的,你是对的,但是蜂窝信息的问题是我不能在 iPod 或 iPad 上使用它,所以我会检查公共 IP 地址非常感谢
【解决方案2】:

我通过调用这个网址解决了这个问题

http://www.geoplugin.net/json.gp

您也可以致电测试http://www.geoplugin.net/json.gp?ip=3.255.255.255

【讨论】:

    【解决方案3】:

    请试试这个,它可以在最新的 PHP 版本中工作 100

    $ip=$_SERVER['REMOTE_ADDR'];
    
    $Details=unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$ip));
    

    如果你想检查完整的数组,试试下面这个

    echo var_export(unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$ip)));
    

    【讨论】:

      猜你喜欢
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      相关资源
      最近更新 更多