MonoTouch 似乎是 iPhone 开发的绝佳平台,但我担心将其部署到 Apple Store。iTunes 上是否有任何使用它构建的应用程序示例?
我们正在为 iPhone 启动一个新项目,将整个堆栈保留在 C# 中会很棒,但我们不想冒因 MonoTouch 而被 Apple 商店拒绝的风险。
我已经阅读了几款目前使用单声道(不是 MonoTouch)进行 3D 图形的游戏,但找不到任何关于 MonoTouch 的信息。
MonoTouch 似乎是 iPhone 开发的绝佳平台,但我担心将其部署到 Apple Store。iTunes 上是否有任何使用它构建的应用程序示例?
我们正在为 iPhone 启动一个新项目,将整个堆栈保留在 C# 中会很棒,但我们不想冒因 MonoTouch 而被 Apple 商店拒绝的风险。
我已经阅读了几款目前使用单声道(不是 MonoTouch)进行 3D 图形的游戏,但找不到任何关于 MonoTouch 的信息。
在我的手机上敲出这个,所以会有点简洁 - 对此表示歉意。
反正:
- 正如在之前的回答中所说,已经有 MonoTouch 应用程序发布到 App Store。无论是两个还是一个 bajillion 都没那么重要。1 和 0 之间的差异是无限的——答案是明确的:是的,Apple 将批准 MonoTouch 应用程序。
- MonoTouch 遵循 Apple 的规则。它吐出原生位。没有对代码的解释,也没有任何 JITting。您的 MonoTouch 应用程序与任何其他应用程序一样是一个捆绑包,并且它包含与任何其他应用程序一样的本机二进制文件。
- MonoTouch 应用程序比使用 Apple 堆栈编写的应用程序更大。这是因为您的 MonoTouch 应用程序依赖于 Mono/.Net 框架的一个子集。但是,在这方面,一旦您了解了所发布的内容, MonoTouch应用程序就没有什么特别的不同了。我在一家公司工作,我们根据我们的自定义框架构建我们的应用程序(使用 Apple 的堆栈开发)。它增加了我们的应用程序的大小,但也减少了生产时间(这总是权衡,对吧?)。此外,编译后的应用程序包的大小可能具有欺骗性。因为捆绑包是为 App Store 压缩的,所以大小显着减小 - 您可以轻松编写一个很好的 MonoTouch 应用程序在 OTA 交付的应用程序可接受的大小限制内(我提出这个问题是因为 MT n0obs(正确地)倾向于问这个问题)。因此,Apple 没有任何真正的理由拒绝基于尺寸。
- 无论是 MonoTouch 还是自定义的内部框架,比如我曾经使用/使用的框架,MonoTouch 的东西,当你的应用程序附带时,只是另一个可以用 Objective-C 编写的框架。
- 如果您担心使用整个 MonoTouch 堆栈配置您的应用程序以进行分发以及这可能如何影响您的批准机会,您可以告诉 MonoDevelop(或命令行中的 mtouch 实用程序)输出一个 Xcode 项目。您将看到您的代码已被转换——您将看到本机程序集(而不是某种 IL)。您可以直接在 Xcode 中构建和运行您的 MonoTouch 生成的应用程序,此时 MonoTouch 基本上是不可能的(除非作为您构建的框架(例如 MapKit))。
出于某种原因,所有这一切都困扰着一小部分 iPhone 开发人员,无论出于何种原因,他们都无法忍受他们不认识的人使用不同的工具来构建应用程序的想法。但他们的仇恨并没有改变苹果已经接受 MonoTouch 应用程序(以及早在此之前的 Unity 应用程序)的简单事实。
根据我的经验,您将看到 MT 应用程序被拒绝的最大原因是 MT 开发人员(我已经与很多人交谈过——在进行了一些讨论、发布到论坛、邮件列表之后......) ,他们是否还没有学会如何开发iPhone应用程序。这是 iPhone 开发人员无论如何编写应用程序都必须做的事情。MonoTouch 不是障碍 - 例如,它知道 Apple 希望您的应用程序具有某种外观并以某种方式工作 - 它应该像其他(好的)iPhone 应用程序一样外观、感觉和行为,并且不应该尝试为手机编写桌面应用程序的例子之一(这是您的普通开发人员在过渡到移动开发时犯的第一个错误)。
最终,您选择的工具并不重要,只要它创建符合 Apple 规则的位(如 MonoTouch)。真正的障碍是学习 iPhone 的应用程序设计方式。
.Net 应用程序开发人员,无论是在 Windows、Windows Mobile 还是运行 Mono(不是 MonoTouch)的任何地方,都习惯于根据自己的喜好开发应用程序。这在 iPhone 世界里是行不通的。
您可以安全地使用 MonoTouch。如图所示,Apple将批准 MT 应用程序。
您真正需要做的事情(同样,无论您选择哪个开发堆栈)是阅读 Apple 的 iPhone 应用程序设计文档及其指南。有一大群开发人员将他们的应用程序拒绝归咎于 Apple 是邪恶的(或其他什么——基本上是不知情的借口),而事实是他们的应用程序是垃圾,而且很明显开发人员没有遵守规则(甚至懒得看规则)。
最后,在许多情况下,您在使用 MonoTouch 时编写的代码要少得多,而这样做的代价是更大的应用程序包(正如我所说,在压缩分发后,它的大小会非常合理)。
这不是什么大问题。使用 3g,用户下载 2-3MB 大小的应用程序毫不费力。如果它足够小,可以发送OTA,一切都很好。如果您的应用程序超出限制,它可能是嵌入式资源(媒体 - 图像、视频等 - 这就是捆绑包通常膨胀到仅 wifi 的大小),这也是 Objective-C 开发人员必须处理的事情,所以这不是 MonoTouch 的问题。
所以,忽略那些讨厌的人(他们甚至没有尝试过 MonoTouch 或费心去了解它是如何工作的),请放心,只要你的应用程序符合 Apple 的指导方针,他们就没有理由拒绝它。这并不意味着只要您正确设计您的应用程序就可以保证被接受(许多应用程序无缘无故被拒绝),但您可以或多或少地认为自己与使用 Apple 工具的开发人员处于平等地位。
希望这可以帮助 :)
MonoTouch 社区正在维护一个MonoTouch 应用程序列表,这些应用程序今天在 Apple Store 上可用,并且是使用MonoTouch编写的。
unity游戏开发平台使用相同的 mono touch 代码库来支持 C#(并为该项目做出了贡献)。