从电话功能iPhone应用程序中排除Ipod Touch

时间:2009-09-18 04:12:08

标签: iphone objective-c xcode

如何从Ipod Touch中排除呼叫和短信功能,但仍保留iPhone上的功能。 iPod Touch当然没有手机,可通过可选应用程序提供短信。技术支持建议我查看系统调用“sysctlbyname”和Apple提供的iPhoneOS参考文档中的“CTL_HW”部分。          http://developer.apple.com/iphone/library/documentation/System/Conceptual/ManPages_iPhoneOS/man3/sysctlbyname.3.html

他们说有必要检查机器类别和机器类型,以确定该设备是否能够支持电话呼叫。好吧,我看着它,这对我来说是希腊语。另一方面,您的论坛可以使用以下代码段:

[Bind(Exclude="ID, Name")]

用于排除评估我在iPod Touch上的应用内联系簿功能?如果是这样,我想它会被插入到RetrieveContactInfoViewController.m文件中,但在哪个部分。 (当然还有RetrieveContactInfoViewAppDelegate文件可用)。如何从iPod Touch中排除手机功能?

2 个答案:

答案 0 :(得分:4)

在iPhone OS 3.0上测试这些功能的一种更简单,更安全的方法是查询是否支持实际功能,而不是支持您的设备。这可以很容易地完成,因为调用和发送文本都是注册的URL模式,因此只需询问是否可以打开用于调用或发送文本的URL。

-(BOOL)canSendTextMessage;
{
  UIApplication* app = [UIApplication sharedApplication];
  return [app canOpenURL:[NSURL URLWithString:@"sms:12345"]];
}

-(BOOL)canMakePhoneCall;
{
  UIApplication* app = [UIApplication sharedApplication];
  return [app canOpenURL:[NSURL URLWithString:@"tel:12345"]];
}

答案 1 :(得分:1)

如果我正确理解您的问题,您希望根据应用程序是在iPod touch上还是在iPhone上运行来限制自己应用的功能?如果是这样的话......(如果不是,你需要改写你的问题)

Check out this page in the documentation

适用于UIDevice类,它允许您访问有关运行应用程序的设备的基本信息。上面链接的方法是UIDevice的“模型”属性。它非常有用。例如:

if ([[[UIDevice currentDevice] model] rangeOfString:@"iPhone"].location != NSNotFound) {
  NSLog(@"I am running on an iPhone (or in the simulator)");
} else {
  NSLog(@"I am running on an iPod touch");
}

在很多地方使用它可能会很乏味。这是在UIDevice上创建类别有用的地方,如下所示:

//UIDevice+ModelInfo.h
@interface UIDevice (ModelInfo)
- (BOOL) isiPhone;
@end

//UIDevice+ModelInfo.m
@implementation UIDevice (ModelInfo)

- (BOOL) isiPhone {
  static BOOL isiPhone;
  static BOOL modelTypeInitialized;
  if (modelTypeInitialized == NO) {
    modelTypeInitialized = YES;
    isiPhone = ([[self model] rangeOfString:@"iPhone"] != NSNotFound);
  }
  return isiPhone;
}

@end

这甚至会为你缓存结果,所以它只进行一次字符串比较。现在你可以做到:

#import "UIDevice+ModelInfo.h"
if ([[UIDevice currentDevice] isiPhone]) {
  NSLog(@"Do something iPhoney");
} else {
  NSLog(@"I cannot do iPhoney things");
}

圣诞快乐。