苹果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. 1.开始Spring

    1 对Spring的认识 为了实现控制反转,我们可以想象java创建了一个工厂类,工厂类可以去读取配置文件 比如一个.property文件.通过这个文件中的配置,反射创建一些对象,当外界需要某个类的对 ...

  2. Theano入门——CIFAR-10和CIFAR-100数据集

    Theano入门——CIFAR-10和CIFAR-100数据集 1.CIFAR-10数据集介绍 CIFAR-10数据集包含60000个32*32的彩色图像,共有10类.有50000个训练图像和1000 ...

  3. 谷歌浏览器flash被禁用解决方法

    谷歌浏览器访问设置:chrome://settings/content/flash 把要启动flash插件的网址添加进去

  4. js 表格合并

    1.合并 function autoRowSpan(tbid, row, col) { var tb = document.getElementById(tbid); var lastValue = ...

  5. #socket #socketserver

    #通过socket 实现简单的ssh#服务端 #服务端 import os import socket server = socket.socket() #server.bind(('0.0.0.0' ...

  6. shell mysql数据迁移/备份

    保存为.sh文件,配置运行即可 #!/bin/bash #### change the values below where needed..... #### 多数据库DBNAMES="My ...

  7. python类相关总结(持续更新)

    __init__() 构造函数 __new__ () 在构造函数之前,用来创建对象的,返回值是一个对象,__init__指的是将__new__返回的对象作为self来传入函数中,后续参数两者都可以一样 ...

  8. Python操作数据库遇到的问题

    网上教程很多,不多赘述,记录一下遇到的问题. 开始安装的是Python3.x最新版本,用的是pycharm,教程参考有 https://www.cnblogs.com/yufeihlf/p/60041 ...

  9. java 字符串拼接

    package com.fh.controller.pacm.checkbill; import com.google.common.base.Joiner; /** * 字符串拼接 * * @aut ...

  10. NOIP模拟 17.9.28

    公交车[问题描述]市内有