如何从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中排除手机功能?
答案 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");
}
圣诞快乐。