【问题标题】:Get Device Type/ Model获取设备类型/型号
【发布时间】:2013-02-05 20:58:26
【问题描述】:

在查看如何在此处检测用户设备之后:iOS - How to get device make and model?

我制作了一个快速测试应用来根据设备显示警报。我没有从这段代码中得到任何警报。我在这里错过了什么/做错了什么?

#import "ViewController.h"
#import <sys/utsname.h>

 NSString* machineName()
{
struct utsname systemInfo;
uname(&systemInfo);

return [NSString stringWithCString:systemInfo.machine
                          encoding:NSUTF8StringEncoding];
}



@interface ViewController ()


@end




- (IBAction)btn:(id)sender {

if ([machineName() isEqualToString:@"iPhone5,1"]){


    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Checking device iphone5" delegate:nil cancelButtonTitle: @"Ok" otherButtonTitles: nil];

    [alert show];




    } else  if ([machineName() isEqualToString:@"iPhone4,1"]){



    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Checking device iphone4" delegate:nil cancelButtonTitle: @"Ok" otherButtonTitles: nil];

    [alert show];

     }


  }

【问题讨论】:

  • 你能登录 machineName() 看看结果如何?
  • 您是否尝试在调试器中单步解决问题?
  • 您可能还想检查字符串是否包含字符串的第一部分,因为新手机将具有不同的型号。
  • @elio.d 登录机器获取 2013-02-05 21:26:05.040 hgfdsa[13188:c07] x86_64
  • Martin R 将不得不进行研究,因为从未听说过它并回复您。 @Scott,罗杰那

标签: ios objective-c xcode


【解决方案1】:

struct utsnamemachine字段是机器硬件平台,如果程序在iOS模拟器中运行,则为"x86_64"

只有在真实设备上,您才会得到"iPhone5,1" 之类的字符串。

【讨论】:

  • 当然!谢谢,现在得到正确的输出字符串,只是没有在设备上触发警报
  • @JSA986:你现在得到什么字符串?
  • 抱歉,我将它设置为 iphone5.2,非常感谢我的设备上的最后一块拼图!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
相关资源
最近更新 更多