即使 iPad 尚未运行 iOS 4,我应该如何构建包含 iOS 4 功能的通用 iOS 应用程序?

2023-12-30

我想为 iPhone 和 iPad 制作一款游戏。因此,从头开始将该项目作为通用应用程序是有意义的。然而,iPhone 和 iPad 目前运行两个不同版本的 iOS,因为 iOS 4 尚未适用于 iPad。我希望在我的游戏中支持两个 iOS 4 功能(GameCenter 和 iAd)。

  1. 在这种情况下,将此项目创建为通用应用程序是不是一个坏主意?
  2. 如果没有,当我构建一个支持两个不同版本的 iOS 的通用应用程序时,我应该考虑哪些想法?
  3. 押注苹果将如猜测的那样在秋季发布适用于 iPad 的 iOS 4 是否安全?
  4. 如果是这样,我是否可以开始将这些 iOS 4 功能(GameCenter 和 iAd)构建到我的 iPad 游戏版本中?

预先非常感谢您的智慧!

EDIT:我了解这个问题涉及风险管理。我意识到其中的风险,但我更感兴趣的是当 iOS 分散在各种 iOS 设备之间时,与构建通用应用程序相关的任何技术设计考虑因素。


如果您要构建通用应用程序,只需记住以下两个源代码片段:

  • 仅当类在当前设备上可用时才使用它们

    考虑这段代码:

    UILocalNotification* n = [[UILocalNotification alloc] init];
    

    构建通用应用程序时,此代码将导致在运行不了解 UILocalNotification 类的 iOS 版本的任何设备上出现运行时错误。

    您仍然可以使用以下代码片段在代码中支持 UILocalNotification,同时保持向后兼容性:

    Class notificationClass = NSClassFromString(@"UILocalNotification");
    if (notificationClass) {
      UILocalNotification* n = [[notificationClass alloc] init];
    }
    

    此技术允许您在支持类的设备上使用某些操作系统版本中不可用的类。

  • 仅使用当前设备上可用的方法

    假设您想要执行以下操作:

    [[UIApplication sharedApplication] scheduleLocalNotification:n];
    

    使用以下代码有条件地调用该方法(如果该方法在当前设备上可用):

    if ([UIApplication instancesRespondToSelector:@selector(scheduleLocalNotification:)]) {
      [[UIApplication sharedApplication] scheduleLocalNotification:n];
    }
    

这两种技术可能是您创建通用应用程序时唯一需要了解的事情。根据设备功能有条件地执行您的代码,应该没问题。

话虽如此,您仍然需要考虑 iPad 可能会使用与 iPhone 版本不同的 UI。而且,不幸的是,在 iOS 4 功能在 iPad 上可用之前,您将无法使用 iOS 4 功能测试您的 iPad UI。但这应该不是什么太大的问题:如果你使用[[UIDevice currentDevice] userInterfaceIdiom]要检查您是否在 iPad 上运行,您可以阻止通用应用程序执行尚无 iPad UI 的代码。 Apple 发布适用于 iPad 的 iOS 4 后,您可以实施 UI、删除该检查并向商店发布更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使 iPad 尚未运行 iOS 4,我应该如何构建包含 iOS 4 功能的通用 iOS 应用程序? 的相关文章

  • 带 ModalPresentationStyle 的弹出框在 iOS 7 iPad 中不居中

    我在使用 iOS 7 时遇到了一个问题 这似乎是一个错误 或者只是我没有做正确的事情 我有 modalViewController 它在 iPad 上以 ModalPresentationStyle 的形式显示为弹出窗口 而且它不是标准尺寸
  • 如何在 AVAudioSession 内使用 iPhone XS 中内置的立体声(2 通道)麦克风?

    我试图从 iPhone XS 的所谓立体声后置麦克风获取两个通道 但在不同位置只能看到一个通道AVAudioSession and AVAudioSessionPortDescription与后置摄像头相关联 我尝试过使用AVAudioSe
  • 允许的 APNS 持续连接数量是多少?

    我正在尝试编写服务器端代码来为我的应用程序发送推送通知 根据 Apple 的建议 我计划保留连接并根据需要发送推送通知 Apple 还允许打开和保留多个并行连接以发送推送通知 您可以与同一网关或多个网关实例建立多个并行连接 为此 我想维护一
  • 滑动删除不起作用

    滑动删除功能在我的表格视图中不起作用 我已经在导航栏中实现了 commitEditingStyle 委托和编辑按钮 因此 当用户单击编辑按钮时 删除和添加按钮会相应显示 但是 在滑动时 删除按钮不会出现 并且似乎它无法将滑动识别为对 set
  • Objective-C:在哪里定义宏以便随处可用?

    我有一个 iOS 应用程序 它在许多视图控制器中使用相同的字符串 数字等 所以我认为最好在一个文件中定义这些常量并在所有视图控制器实现中使用它 优点是更改一个数字 我只需要做一次 而不是在所有视图控制器中都使用该数字 实际上 我的 h 文件
  • UITableview 中的水平和垂直滚动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I want to make a lineup for a festival You can see what I want to a
  • 在 uilabel 中查找文本的位置 {x,y}

    我有一个来自服务器的字符串 我正在 UILabel multiligne 上显示它 在该字符串中 我正在识别一些特定的子字符串 我想在该子字符串上放置一个按钮 按钮将是 UILabel 的子视图 为此 我需要子字符串坐标 我经历过这个 但我
  • 如何使用 iPhone SDK 实现可滑动的图像堆栈(例如照片应用程序)?

    我想获取一堆图像 或者可能是一组用于下载图像的 URL 并以全屏方式显示它们 一次一个 使用 iPhone SDK 使用用户滑动来平滑地为堆栈中的下一个图像设置动画 Apple 的 Photo app 似乎可以做到这一点 此外 如果尚未检索
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 如何替换已弃用的方法dispatch_get_current_queue()? [复制]

    这个问题在这里已经有答案了 我正在 iOS 5 中使用 xmppframework 开发一个聊天应用程序 它工作得很好 但我将 Xcode 更新到 4 5 1 将 iOS 5 更新到 iOS 6 将 Mac OS 更新到 10 7 5 但由
  • 如何在 Core Data 中存储图像?

    只是猜测 我创建一个属性并将其类型设置为 二进制 但最终我该如何使用它呢 我猜幕后有一个 NSData 那么该属性实际上采用 NSData 吗 这个问题已经被问过很多次了 答案有点复杂 当涉及二进制数据时 您应该根据要使用的数据的预期大小来
  • 在横向中自动调整 UITableCells 内容的大小

    在 UITableView 中 我通过 UILabels 将内容添加到单元格中 定义最佳尺寸 与单元格宽度允许的一样大 我注意到只有tableView contentSize width是可靠的 因为cell contentView bou
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 如何将 UILabel 的值绑定到实例变量?

    我是 mac objective c 的新手 我的问题是 我想知道是否可以将 UILabel 文本绑定到变量 而不必在值更改时手动设置文本 例如 在 Mac OS 上 当我打开新的 Finder 窗口并删除文件时 任务栏中的全局可用空间就会
  • Flutter 应用程序在 iOS 平台的 firebase 电话身份验证中崩溃

    我在我的项目中实现了 Firebase Phone auth 在 Android 端 一切正常 但对于 iOS 端 当我尝试从我的端发送验证码时 应用程序崩溃并失去连接 我已在下面提交了我的代码 主程序 dart class MyApp e
  • 在 iOS 7 中 viewForHeaderInSection 部分是从 1 开始而不是从 0 开始

    我正在处理UITableView在我的项目中 这个项目是在 Xcode 4 5 中创建的 现在我正在使用 Xcode 5 所以我的问题是何时在 iOS 6 中运行我的项目 viewForHeaderInSection方法部分从 0 开始没问
  • MapKit更新标注图像

    我在寻找更新自定义的方法时遇到问题MKAnnotationView异步请求完成后的图像 其中包含有关注释状态的信息 到目前为止 我有这个 MKAnnotationView mapView MKMapView mapView viewForA
  • UIViewController 不旋转到横向

    在许多情况下需要旋转控制器但不起作用 现在我遇到了相反的问题 它正在旋转 我想禁用它 在那个 ViewController 中我有这个 BOOL shouldAutorotateToInterfaceOrientation UIInterf
  • UIImageView 使用动画块从中心缩放

    我正在使用以下内容来放大图像 但它是从左顶点开始缩放的 如何从中心进行缩放 UIView animateWithDuration duration delay delay options options animations myImage
  • 将 iPad xib 转换为 iPhone xib

    我看过很多关于将 iPhone xib 转换为 iPad xib 的帖子和教程 但我想反过来做 我能找到的唯一资源是 将 iPad 应用程序转换为 iPhone https stackoverflow com questions 68550

随机推荐