在 Mac App Store 和外部分发

Posted

技术标签:

【中文标题】在 Mac App Store 和外部分发【英文标题】:Distributing on both the Mac App Store and externally 【发布时间】:2013-10-12 23:44:00 【问题描述】:

我有一个 Mac 应用程序,我计划很快推出。

我希望它可以在 MAS 上购买,但我也想在我的网站上提供计时服务。

我将使用我的开发人员 ID 签署计时试用版,并使用我的分发证书签署 MAS 版本。

如果用户下载了时间试用版,然后决定从 MAS 购买:

    MAS 会允许他们购买还是会提示用户他们已经安装了应用程序(因为他们共享相同的捆绑标识符)?

    我希望它们共享相同的包标识符的原因是计时试用版和 MAS 版本都可以共享它们的应用程序沙箱数据和钥匙串数据。这可能吗?

(我考虑过使用 IAP 并完全取消计时,但是 IAP 不允许我想使用的批量定价。)

【问题讨论】:

【参考方案1】:

    MAS 将提醒用户他们已经安装了该应用程序。您的用户需要先删除试用版。

    没有。即使它们具有相同的包标识符,系统沙箱守护程序sandboxd 通常也会拒绝访问其中一个应用程序(通常是他们第二次下载的应用程序)。这是因为沙盒目录以加密方式链接到其主机应用程序。除了对应用程序进行签名之外,您的应用程序还会获得一个独特的签名,例如 SHA-1 哈希,每次都将完全不同。这意味着,当您第二次下载该应用程序时(即从网站下载,之前从 MAS 下载该应用程序时),如果沙箱链接到具有不同签名的应用程序,沙箱访问将被拒绝。

现在,如果幸运的话,用户可能会先下载 MAS 版本,然后可能(出于某种原因)进入试用期。这可能有效,但不能保证它会而且我不会依赖它。有些人很幸运,比如那些因为沙盒比赛的挫折而决定放弃 MAS 的人。

【讨论】:

您是否建议对试用版和 MAS 版使用不同的捆绑包标识符? 这可行,但您的设置将不会在两个应用程序之间共享。 根据您的说法,无论如何设置都无法在它们之间共享。还是有其他方法? 并非如此。这是最好的方式。 感谢@SevenBits 的帮助。

以上是关于在 Mac App Store 和外部分发的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xcode 6.1 分发测试版 Mac App Store 应用程序?

Mac App Store 之外的分发:请删除前缀“开发者 ID 应用程序:”

为 App Store 和企业分发构建应用程序

Mac 应用程序:安装许可的 App Store 版本时删除试用版

Mac App Store - 无法保存文件

全球活动、Mac App Store 和沙盒