开发者总结的WatchKit App提交技巧
苹果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
如果你使用Xcode以外的工具开发应用,或者你使用了自定义的构建脚本,请确保你的最终打包文件遵守苹果开发者论坛中的相关描述。
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提交技巧的更多相关文章
- iOS APP提交上架流程
转载自CocoaChina,链接地址:http://www.cocoachina.com/bbs/read.php?tid=330302 后面问题我也遇到了,参考该文章解决的 转自http://blo ...
- App提交Appstore审核流程
原文: https://www.douban.com/note/461351420/ 这是一个app提交到iTunces Connect被拒了4次摸索出来的经验,说多了都是泪,先让我擦擦...好了,话 ...
- apple个人开发者证书无线发布app的实现(转)
解释一下这标题:apple个人开发者证书无线发布app的实现,也就是说不经过发布到app store,直接在ios设备上安装app,注:ios设备不需要越狱. 之所以有这篇文章的产生,可以看这里: 不 ...
- WatchKit App Submission Issues
查看原文: http://leancodingnow.com/watchkit-app-submission-issues/ I submitted a new version of my app P ...
- Apple Watch 1.0 开发介绍 1.3 简介 WatchKit App 架构
WatchKit app和WatchKit extension一起实现了app的界面.当用户在Apple Watch中操作时,WatchKit app从storyboards中选择合适的场景.比如,如 ...
- ele.me在IOS浏览器端启动APP的技巧分析
ele.me在IOS浏览器端启动APP的技巧分析 巧妙利用后台重定向,在schemes启动时提示用户打开,启动不了APP时能够及时跳转至下载页面. 避免报错页面的出现以及用户还没来的及选择就跳转到下载 ...
- App提交Appstore审核流程【转】
这是一个app提交到iTunces Connect被拒了4次摸索出来的经验,说多了都是泪,先让我擦擦...好了,话不多说,为了让中国的app不再那么容易被拒,或者被拒了不知道该咋办,我把我的小经验在这 ...
- 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 ...
- ios app提交之前需要哪几个证书
1.遇到的问题 一款App在别人的机器上开发和发布,现在迭代更新和开发需要在一台新mac机上开发和发布. (使用同一个开发者账号)问题: 1.在新mac机器上开发并导入真机测试,是不是需要从别人的机器 ...
随机推荐
- 1.开始Spring
1 对Spring的认识 为了实现控制反转,我们可以想象java创建了一个工厂类,工厂类可以去读取配置文件 比如一个.property文件.通过这个文件中的配置,反射创建一些对象,当外界需要某个类的对 ...
- Theano入门——CIFAR-10和CIFAR-100数据集
Theano入门——CIFAR-10和CIFAR-100数据集 1.CIFAR-10数据集介绍 CIFAR-10数据集包含60000个32*32的彩色图像,共有10类.有50000个训练图像和1000 ...
- 谷歌浏览器flash被禁用解决方法
谷歌浏览器访问设置:chrome://settings/content/flash 把要启动flash插件的网址添加进去
- js 表格合并
1.合并 function autoRowSpan(tbid, row, col) { var tb = document.getElementById(tbid); var lastValue = ...
- #socket #socketserver
#通过socket 实现简单的ssh#服务端 #服务端 import os import socket server = socket.socket() #server.bind(('0.0.0.0' ...
- shell mysql数据迁移/备份
保存为.sh文件,配置运行即可 #!/bin/bash #### change the values below where needed..... #### 多数据库DBNAMES="My ...
- python类相关总结(持续更新)
__init__() 构造函数 __new__ () 在构造函数之前,用来创建对象的,返回值是一个对象,__init__指的是将__new__返回的对象作为self来传入函数中,后续参数两者都可以一样 ...
- Python操作数据库遇到的问题
网上教程很多,不多赘述,记录一下遇到的问题. 开始安装的是Python3.x最新版本,用的是pycharm,教程参考有 https://www.cnblogs.com/yufeihlf/p/60041 ...
- java 字符串拼接
package com.fh.controller.pacm.checkbill; import com.google.common.base.Joiner; /** * 字符串拼接 * * @aut ...
- NOIP模拟 17.9.28
公交车[问题描述]市内有