苹果4月初宣布所有注册开发者已经可以向App Store提交基于WatchKit开发的Apple Watch app了,不过不少开发者遇到了模拟器中没有发现的问题。这篇文章主要收集了一些提交tips和常见问题的解决方案,但首先你要先学习下苹果的官方指南

文中大部分tips来自于从开发论坛和我自己的一些经验,根据收集情况,这篇文章会不定期更新。

iTunes Connect

  • 可在iTunes Connect中上传Apple Watch截图和icon,并且iTunes Connect会在上传了第一个WatchKit build后展示出来。

截图

  • 确保截图尺寸是312x390px。

  • 截图只能是app的界面内容,并且是全空间截图。

  • 不要在Apple Watch框架或者图片中设计截图。

  • 不要将Apple Watch app置于iPhone app截图中。

  • 不要在截图中添加额外的文本/宣传资料。

  • 早期苹果要求开发者使用Apple Watch真机上运行的app截图,不过现在也可以使用模拟器中的运行图。点击command+S或者从File > Save Screen Shot中截图。截图默认会保存在桌面上。

App icon

  • 确保你的app icon不包含alpha channel,不然将会在审核期间被拒,或者产生一些模糊的错误信息。

  • 如果遇见了file names must match pattern "*@x.png"这个错误,请确保Watch app target的资产目录中已经包含了Watch app icon,因为iPhone app和Watch app不能共享一个资产目录。

  • 请确保你的icon不包含黑色背景,以防icon和黑色的屏幕混在一起,并且也会增加被拒的风险。

Deployment Targets

  • 虽然你的iPhone app可能支持iOS 8.2之前的系统,但WatchKit extension支持的操作系统必须是iOS 8.2或者更高版本。

  • 如果你在WatchKit extension中使用了框架,那么iPhone app的部署目标必须是8.0及以上版本的系统,原因是你的WatchKit extension是与host app绑定在一起的。

Build Process

Version & Build Numbers, Bundle Identifiers, Names

  • 确保iPhone app、WatchKit extension以及Watch app有着相同的编译号和版本号。

  • 用iPhone app的bundle identifier作为WatchKit extension的bundle identifier的前缀,比如如果iPone app的bundle identifier是com.company.AppName,那么WatchKit extension的bundle identifier就是com.company.AppName.watchkitextension。

  • Jackrabbit Mobile的David Olesch建议,要确保app target和watch app target展示的名称应该一致,他曾因为该问题被拒。

  • 在Xcode 6.3中打开你的应用程序,Deployment Target也会更改为iOS 8.3。如果要改回来,可能会被苹果拒绝。

Provisioning

WatchKit extension需要自己的app ID和Provisioning profile.

App Store描述

  • 如果你在App Store描述中提及Apple Watch,请遵守苹果的指南,比如其中对字母大写的要求等。少数开发者曾因没有遵守苹果的指南而被拒。

  • Apple Watch通常应用英语书写,并且A和W要大写。你不能写成UPPERCASE和lowercase这种形式,也不能使用苹果的logo代替单词"Apple"。

性能

  • 要尽可能地确保你的app在模拟器中响应积极。如果应用在模拟器中运行比较卡,那么在真机上卡顿情况只会加重,不止一位开发者曾因这个原因被拒。

  • 如果你使用了openParentApplication:reply:,那我强烈建议你遵守这篇文章中的建议。我在真机上进行测试时发现,如果不使用文中的技巧,那么使用openParentApplication:reply:是非常不可靠的。一些参与真机体验的开发者也确认了这个问题。至少一位开发者曾因openParentApplication:reply:调用出现问题而被拒绝。

Swift

  • 如果iPhone app使用了Swift编译,请设置框架和扩展的"Embedded Content Contains Swift"的 build setting为NO,设置iPhone app target的"Embedded Content Contains Swift" build settingYES。

App

  • 复制钟面的功能,或者展示时间的方式容易跟其他混淆,那么可能会被苹果拒绝。可以查看苹果开发者论坛中的帖子,这个规则应当被写入HIG中,但苹果似乎遗漏了这一点。

  • 在开发者论坛中查看这个帖子,提示你的Watch app大小不能超过50MB.

原文:Submitting Your WatchKit App
推荐阅读:

苹果最新WatchKit App优化和提交指南

WatchKit FAQ

WatchKit开发小窍门

开发者总结的WatchKit App提交技巧的更多相关文章

  1. iOS APP提交上架流程

    转载自CocoaChina,链接地址:http://www.cocoachina.com/bbs/read.php?tid=330302 后面问题我也遇到了,参考该文章解决的 转自http://blo ...

  2. App提交Appstore审核流程

    原文: https://www.douban.com/note/461351420/ 这是一个app提交到iTunces Connect被拒了4次摸索出来的经验,说多了都是泪,先让我擦擦...好了,话 ...

  3. apple个人开发者证书无线发布app的实现(转)

    解释一下这标题:apple个人开发者证书无线发布app的实现,也就是说不经过发布到app store,直接在ios设备上安装app,注:ios设备不需要越狱. 之所以有这篇文章的产生,可以看这里: 不 ...

  4. WatchKit App Submission Issues

    查看原文: http://leancodingnow.com/watchkit-app-submission-issues/ I submitted a new version of my app P ...

  5. Apple Watch 1.0 开发介绍 1.3 简介 WatchKit App 架构

    WatchKit app和WatchKit extension一起实现了app的界面.当用户在Apple Watch中操作时,WatchKit app从storyboards中选择合适的场景.比如,如 ...

  6. ele.me在IOS浏览器端启动APP的技巧分析

    ele.me在IOS浏览器端启动APP的技巧分析 巧妙利用后台重定向,在schemes启动时提示用户打开,启动不了APP时能够及时跳转至下载页面. 避免报错页面的出现以及用户还没来的及选择就跳转到下载 ...

  7. App提交Appstore审核流程【转】

    这是一个app提交到iTunces Connect被拒了4次摸索出来的经验,说多了都是泪,先让我擦擦...好了,话不多说,为了让中国的app不再那么容易被拒,或者被拒了不知道该咋办,我把我的小经验在这 ...

  8. error: WatchKit App doesn't contain any WatchKit Extensions whose WKAppBundleIdentifier matches

    error: WatchKit App doesn't contain any WatchKit Extensions whose WKAppBundleIdentifier matches &quo ...

  9. ios app提交之前需要哪几个证书

    1.遇到的问题 一款App在别人的机器上开发和发布,现在迭代更新和开发需要在一台新mac机上开发和发布. (使用同一个开发者账号)问题: 1.在新mac机器上开发并导入真机测试,是不是需要从别人的机器 ...

随机推荐

  1. php5.3中namespace的说明,帮助初次接触namespace的phper快速理解

    命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀,但是方法名变的很长 ...

  2. Frank Dellaert Slam Speech 20190708

    Georgia Institue of Tecknology 3D Models from Community Databases Spatiotemporal Reconstruction 4D C ...

  3. HttpRequest 工具

    1.根据 url 和 encoding 获取当前url页面的 html 源代码 public static string GetHtml(string url, Encoding encoding) ...

  4. Thinkphp M方法出错,D方法却可以

    错误回顾: M('Local')->find(); //报错 //错误信息:Table 'test.local' doesn't exist [ SQL语句 ] : SHOW COLUMNS F ...

  5. webapp-viewport 相关知识整理

    我们在开发移动设备的网站时,最常见的的一个动作就是把下面这个东西复制到我们的head标签中: <meta name="viewport" content="widt ...

  6. Iterm2 快捷键介绍

    Mac 原来自带的终端工具 Terminal 不好用是出了名的,虽然最近几个版本苹果稍微做了些优化,功能上,可用性方面增强不少,无奈有个更好用的 Iterm2 摆在那,基本上也就没有多少出场机会了 I ...

  7. ztree树节点重叠问题

    使用zTree时,由于同时使用了bootstrap插件,导致样式起了冲突,生成的树都挤在一起了, 最后的解决办法是设置zTreeStyle.css文件的.ztree li ul{}属性,在里面加入he ...

  8. 根据网站运行日志猜测的百度蜘蛛ip

    da大部分文章都是吵来吵去,不准确 所以就不参考那些沙雕的文章了,直接自己统计一个 123.125.71.117 123.125.71.58 220.181.108.115 220.181.108.1 ...

  9. MySQL数据库起步 关于数据库的基本操作(更新中...)

    mysql的基本操作 连接指定的服务器(需要服务器开启3306端口) mysql -h ip地址 -P 端口号 -u 账号 -p 密码 删除游客模式 mysql -h ip地址 -P 端口号 -u 账 ...

  10. 如何获取SpringBoot项目的applicationContext对象

    ApplicationContext对象是Spring开源框架的上下文对象实例,在项目运行时自动装载Handler内的所有信息到内存.传统的获取方式有很多种,不过随着Spring版本的不断迭代,官方也 ...