【问题标题】:iPod Touch with iOS8 is being detected as an iPhone带有 iOS8 的 iPod Touch 被检测为 iPhone
【发布时间】:2014-12-12 20:17:00
【问题描述】:

我有一个应用程序,在联系我们部分允许用户根据设备给我们打电话。如果是 iPhone,它会显示号码以及呼叫按钮。如果是 iPod Touch,它只会显示数字。但自从更新到 iOS8 后,iPod Touch 也被识别为 iPhone 并显示“通话”按钮。有人知道如何解决这个问题吗?任何帮助表示赞赏。

【问题讨论】:

    标签: ios objective-c iphone ios8 ipod-touch


    【解决方案1】:

    您可以查看iOS设备是否可以打开电话链接:

    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel:+11111"]])
    

    如下文所述:

    How do I test if IOS device has telephone capabilities?

    【讨论】:

    • 明智的解决方案! +1
    • 谢谢,但我已经在使用它了,它说 iPod Touch 可以打开电话链接。但它不能。
    • 它是否与具有相同 Apple ID 的 iPhone 在同一个 wifi 网络上?
    【解决方案2】:

    如下进行设备类型检查:

    - (NSString *) deviceType{
        NSString *devicePlatform = [self deviceModel];
        if ([devicePlatform isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";
        if ([devicePlatform isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";
        if ([devicePlatform isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";
        if ([devicePlatform isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";
        if ([devicePlatform isEqualToString:@"iPad1,1"])      return @"iPad";
        if ([devicePlatform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";
    
        return devicePlatform;
    }
    - (NSString *) deviceModel{
        size_t size;
        sysctlbyname("hw.machine", NULL, &size, NULL, 0);
        char *machine = malloc(size);
        sysctlbyname("hw.machine", machine, &size, NULL, 0);
        NSString *platform = [NSString stringWithUTF8String:machine];
        free(machine);
        return platform;
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2010-12-26
      • 2011-08-22
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多