返回Mac App Store

我在App Store上的一个应用程序的审阅者评论说,HyperBowl的更新频率最高,而他所见过的任何应用程序都没有可见的变化。 我认为这是一种赞美。

无论如何,有很多频繁更新的原因。 一是这些天客户期望他们。 诸如Facebook,Twitter和Pinterest之类的大人物每两周更新一次(甚至不必费心在发行说明中列出特定的更改,除非您将“错误修复”视为特定的更改)。

另一个是,与一次全部提交然后再进行提交相比,最好先进行一次提交并提交(然后修复,如果您将它们弄糟了,再进行修复)。 特别是必须经过审查过程。

但是,我喜欢频繁更新我的应用程序的主要原因是,我记得该怎么做,以便跟上有助于或破坏构建的更改。

以Mac App Store版本的HyperBowl为例,我一年多没有更新。 我完全忘记了如何使用Unity来构建Mac App Store应用程序,因此我不得不重新阅读Unity文档,该文档的更新时间甚至比我的应用程序还要长。 例如,它建议使用第三方工具,该工具几年未更新,仅以未记录的github形式存在。 看来Mac App Store在Unity的优先级列表上并不高。

公平地讲,Mac App Store在苹果的优先列表中似乎也不高。 有迹象表明,自从上次更新以来,用于签名您的证书已经过期,已经很久了,但是当我转到证书管理页面时,您无法为Mac App Store创建或创建近十种证书。 但是,如果您在Xcode中打开“首选项”窗口,则它们是:

并且一旦创建了Mac证书,便可以使用它们对应用程序和安装程序进行签名(我将这些命令放入Shell脚本中,以便在Unity构建后运行)。

  codesign -force -sign“第三方Mac开发人员应用程序:Technicat,LLC” —权利HyperBowl.entitlements HyperBowl.app/Contents/Frameworks/MonoEmbedRuntime/osx/libmono.0.dylib 
  codesign -force -sign“第三方Mac开发人员应用程序:Technicat,LLC” —权利HyperBowl.entitlements HyperBowl.app/Contents/Frameworks/MonoEmbedRuntime/osx/libmonoPosixHelper.dylib 
  codesign -force -sign“第三方Mac开发人员应用程序:Technicat,LLC” —权利HyperBowl.entitlements HyperBowl.app 
  productbuild -component HyperBowl.app / Applications-签名“第三方Mac开发人员安装程序:Technicat,LLC” HyperBowl.pkg 

权利文件只是列出了沙盒权利的一个plist:

   



com.apple.security.app-sandbox

在构建之前,需要自定义应用程序的info.plist。 最好在播放器设置中使用它,但是在此之前,各种开发人员都在拼凑自己的程序。 我从论坛线程中获取了后处理构建脚本,并将其细化到最低限度。

 使用System.Collections; 
使用System.Collections.Generic;
使用System.IO;
使用UnityEngine;
使用UnityEditor;
使用UnityEditor.Callbacks;
使用UnityEditor.iOS.Xcode;
 公共类PostProcessBuildOSX { 
  [PostProcessBuild(1)] 
 公共静态无效OnPostprocessBuild(BuildTarget target,string pathToBuiltProject){ 
  bool isOSX = target == BuildTarget.StandaloneOSXIntel || 目标== BuildTarget.StandaloneOSXIntel64 ||  target == BuildTarget.StandaloneOSXUniversal; 
 如果(!isOSX)返回; 
 字符串plistPath = string.Format(“ {0} /Contents/Info.plist”,pathToBuiltProject); 
PlistDocument plist =新的PlistDocument();
plist.ReadFromString(File.ReadAllText(plistPath));
PlistElementDict rootDict = plist.root;
  rootDict.SetString(“ NSHumanReadableCopyright”,PlayerSettings.companyName); 
rootDict.SetString(“ CFBundleGetInfoString”,“ HyperBowl” + PlayerSettings.bundleVersion);
rootDict.SetString(“ CFBundleIdentifier”,“ com.technicat.hypermac”);
rootDict.SetString(“ CFBundleShortVersionString”,PlayerSettings.bundleVersion);
rootDict.SetString(“ CFBundleVersion”,PlayerSettings.bundleVersion);
rootDict.SetString(“ LSApplicationCategoryType”,“ public.app-category.games”);
  File.WriteAllText(plistPath,plist.WriteToString()); 
}
}

此脚本(位于“编辑器”文件夹中)将版本设置为与我用于iOS / Android的版本,捆绑包ID,应用类别以及在“获取信息”弹出窗口中看到的“获取信息”和“版权”字符串相同。

因此,在执行Unity Build之后,然后运行我的Shell脚本进行代码签名并创建安装程序,我必须使用Application Loader将pkg文件上传到iTunesConnect。 尽管Application Loader上的Apple文档指示您在没有下载链接的页面上下载Application Loader,但是现在使用Xcode安装了当前版本的Application Loader。 但是,那不会上传我的应用程序,并且早在9月在Apple开发人员论坛上就似乎是一个已知问题,一种解决方法是使用较旧版本的Application Loader。 这使我们回到了cul-de-sac下载文档,但事实证明,我的Applications文件夹中仍然有一个相当旧的Application Loader版本(也许就是为什么它仍然存在)。

那行得通。 作为奖励,我看到Mac App Store的批准时间现在与App Store一样迅速,而HyperBowl在数小时内获得批准。 我没有进行更新的原因之一是,在过去的几次审核中,我遇到了很多麻烦(审稿人似乎决心要找到全屏故障,甚至在关卡过渡期间切换到全屏故障或从全屏切换到全屏故障)。伙计们,质量检查(Rinin)?)。

现在,提交流程已在两端进行了整理,请期待频繁的更新。 因为我可以。

Interesting Posts