我应该为手机和平板电脑设备制作一个应用程序,还是每个应用程序一个?

时间:2012-09-27 05:55:47

标签: ios iphone ipad compatibility

我必须为ios手机和平板电脑开发应用程序。应用程序逻辑是相同的,而UI完全不同。我想知道我应该如何解决这个问题:为两者制作一个大应用程序,或者为手机和平板电脑应用程序制作应用程序(然后将2 ipa作为1个应用程序上传到市场中)。

当我提出1个申请时,我应检查代码中的手机或平板电脑是否重定向到相应的活动。此外,我应该包括兼容性代码,使其为手机编译。如果我要制作2个应用程序,我不需要检查,我也不需要包含兼容性代码,因此应用程序会小很多。但在这种情况下,我必须在开发过程中不断地将应用程序逻辑从一个项目复制/粘贴到另一个项目中。

这就是为什么我想知道,在这种情况下最好的做法是什么?我一直在寻找有关这方面的信息,但我只找到有关如何管理不同xml布局的文章,或者其中没有太多信息的文章。

我用谷歌搜索,发现这里有一篇关于Android的文章Android app for phone and tablet: 1 or 2 apps?

但我需要了解 ios应用

2 个答案:

答案 0 :(得分:2)

如果您想要构建两个应用程序或通用应用程序,那么这更像是一个营销问题。您是否希望用户只能购买一次并在两个平台上运行? iPad版本是否做得更多,你更愿意收取额外费用?

一旦你决定在需要的地方分享代码很容易,如果你有两个单独的应用程序,你可以为iPad制作目标,并为iPhone制定目标 - 每个目标可以共享任何代码或资源或数据模型你喜欢。拥有iPad和iPhone版本继承的最小应用代表也是一个好主意。

如果它是通用的,您最终可能会对您所在的平台进行一些检查,但通常一旦加载主界面文件,您就不需要进行太多检测。

答案 1 :(得分:1)

将此代码放入您的app委托类和

- (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];
}

现在使用两个xib用于iPad和iPhone,同时使用普通的.h和.m文件。