【问题标题】:Should I make one app for both phone and tablet devices, or one for each?我应该为手机和平板设备制作一个应用程序,还是各一个?
【发布时间】:2012-09-27 05:55:47
【问题描述】:
我必须为 ios 手机和平板电脑开发一个应用程序。应用程序逻辑相同,而 UI 完全不同。我想知道我应该如何处理这个问题:为两者制作 1 个大应用程序,或者为手机应用程序和平板电脑应用程序(然后将 2 个 ipa 作为 1 个应用程序上传到市场)。
当我创建 1 个应用程序时,我应该在代码中检查它是手机还是平板电脑以重定向到适当的活动。此外,我应该包含兼容性代码以使其能够为手机编译。如果我要制作 2 个应用程序,我不需要那个检查,我也不需要包含兼容性代码,所以应用程序会小很多。但在这种情况下,我必须在开发过程中不断地将应用程序逻辑从一个项目复制/粘贴到另一个项目。
这就是我想知道的原因,在这种情况下,最佳做法是什么?我一直在搜索这方面的信息,但我只找到有关如何管理不同 xml 布局的文章,或者没有太多信息的文章。
我用谷歌搜索,发现这里有一篇关于 android 的文章 Android app for phone and tablet: 1 or 2 apps?
但我需要了解 ios 应用
【问题讨论】:
标签:
ios
iphone
ipad
compatibility
【解决方案1】:
如果您想构建两个应用程序或一个通用应用程序,这实际上更像是一个营销问题。您是否希望用户只需购买一次并在两个平台上运行? iPad 版本是否做得更多,您宁愿收取额外费用?
一旦您决定在需要的地方共享代码很容易,如果您有两个单独的应用程序,您可以为 iPad 创建一个目标,为 iPhone 创建一个目标 - 每个目标都可以共享任何代码、资源或数据模型你喜欢。让 iPad 和 iPhone 版本继承的最小应用程序委托也是一个好主意。
如果它是通用的,您最终可能会检查您所在的平台,但通常一旦您加载了主界面文件,您就不需要做太多的检测了。
【解决方案2】:
将此代码放入您的应用委托类中并
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *navController;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
_iPhonehomeScreen = [[NFHomeScreen_iPhone alloc] initWithNibName:@"NFHomeScreen_iPhone" bundle:nil];
navController = [[UINavigationController alloc] initWithRootViewController:_iphonehomeScreen];
[navController setNavigationBarHidden:YES];
self.window.rootViewController = navController;
}
else {
_iPadhomeScreen = [[NFHomeScreen_iPad alloc] initWithNibName:@"NFHomeScreen_iPad" bundle:nil];
navController = [[UINavigationController alloc] initWithRootViewController:_iPadhomeScreen];
[navController setNavigationBarHidden:YES];
self.window.rootViewController = navController;
}
[navController release];
}
现在使用两个用于 iPad 和 iPhone 的 xib 以及相同的通用 .h 和 .m 文件。