如何处理我们经常碰到的常见问题。
本章节并不意味着成为《Oculus最佳实践》——对如何更好的构建应用程序已经有更详细信息的解释或替代品,我们鼓励你去查看它。
SDK版本
总是用最新的SDK来开发你的app。
应用签名
你的应用在提交前必须使用Android数字证书来签名。如果你使用的是Unity,请务必用你已经生成并分配给应用程序永久、专用的密钥,来替换Unity生成的临时调试证书。你不妨在提交前删除osig(Oculus签名)文件,但是这样做并不是必须的。参照Application Signing章节获取更多信息。
性能
你的应用程序不应该崩溃、卡死、中止、进入长期无响应状态,或者造成设备或系统重启。视频、电影和音频播放时断时续。图片和图标应立体呈现并且表现在一个舒适的观看距离内。文本应该清晰,并且在VR设备中没有任何截断或重叠的表现。
舒适
所有的app应该尽力去减少或消除模拟器病症。例如,在任何时候,都应该要确保用户控制头部跟踪和定位的行为。
和Oculus主菜单交互
- 从首页加载
- 初始交互状态– 应用程序必须在启动后4秒内开始接受输入,响应头部跟踪,并且显示图片
- 如果应用程序需要超过4秒的时间来加载,必须显示相应的用户反馈。至少,需要一个进度指示。精美的动画,教材/提示,或其他视觉提示都是值得鼓励的。
- 合约要求许可证场景/动画/标识或者法律免责说明在屏幕上停留时间一定不要超过5秒钟,并且必须立体描绘和支持头部追踪。
- 初始交互状态– 应用程序必须在启动后4秒内开始接受输入,响应头部跟踪,并且显示图片
- 返回首页
- 应用程序必须迅速过渡到Oculus主页屏幕,并且在某种程度上不会引起用户的不适。
电量状态处理
电量状态处理和检测是对热量积聚缓解策略,建议每个应用程序都使用此功能。
我们强烈建议应用程序在保持60 FPS下使用最小的CPU和GPU频率组合,更高的时钟频率将导致更快的热积聚和降低电池寿命。如果你必须使用更高的频率,首先考虑优化,而提高GPU和CPU的水平只能最为最后的手段。
手柄通知
如果你的应用程序需要一个蓝牙游戏手柄,为避免糟糕的用户体验,请明确的通知用户。我们建议使用下列方法之一:
- 如果在app启动时手柄未连接,那么在它被要求使用(手柄)的app中呈现一个目前没有检测到设备的通知。
- 如果用户试图处理一个通常由手柄控制的输入(滑动或轻敲屏幕),则呈现一个这种操作需要由控制器来处理的通知。这在手柄是可选或刚好添加一个额外功能的应用程序中是更合适的。
保留用户交互
返回按钮交互:
- 长按:用户按下按钮并且保持时间>0.75秒时。一个长按操作应始终能打开通用菜单。
- 应用程序必须执行长按产生的通用菜单,这将通过集成最新的SDK来发生。通用菜单将提供例如转移摄像头、回到Oculus首页的快捷方式、重新调整、亮度,和免打扰模式的功能。
- 短按:用户按下按钮并且在长按时间到前释放它。
- 一个‘返回’行为依赖于应用程序其当前状态来解释,但是通常将在一个接口层后退一个级别。例如,如果应用程序菜单在最初和最高层的屏幕上,一个短按将退出应用程序菜单。如果当前没有应用程序菜单或者其他符合要求的状态条件(取决于应用程序),那么短按将提供一个退出应用程序,回到Oculus首页的确认框。
音量按钮交互:
- 音量按钮必须使用Oculus手机SDK提供的VR音量UI界面来调整音量。
LTE(4G)和WiFi
使用LTE网络明显比使用WiFi要消耗更多电量。所有的应用程序都要求一个有效的使用数据(比如外来登录或排行榜)提示正在使用中时应该需要一个WiFi连接。大带宽需求的应用程序,比如电影流媒体必须要求使用WiFi。
协议
一旦你的应用程序通过初步审核,我们将提供一个经销协议。
你的最终用户许可协议
经销协议鼓励你为你的用户提供最终用户协议(EULA)。如果你提供了,你的EULA将纳入你的应用程序购买/分销流程。如果你没有提供EULA,你的应用程序将使用经销协议某些预先设定的条款来阐明。
年龄和评级
使用Oculus的用户必须年满13岁。我们可能会在提交时选择两个评级:13+或者17+ ,我们可能会有简要说明字段来表示应用的内容。
Oculus名称和商标的使用限制
Oculus的商标,包含名称、logo,和那些合作伙伴的产品,例如‘Rift’或者‘Gear VR’,不能在你的应用程序中任何地方出现。唯一的例外是引用Oculus硬件或服务时,例如“确定退出Oculus首页?”对话框或类似UI时。
用户数据和权限
你的应用程序只请求你需要的权限
如果你的应用程序传输用户数据(例如,为了分析目的,保存状态备份,多人配对等)到外部服务器,你必须在你的应用程序提交时声明这一点。通过商店分发的应用程序不得损害或破坏用户设备上的数据。
大约就是这些,感谢您的阅读,如果我们以任何方式帮助到您,请让给我们知道,因为我们迫不及待想看到你所创造的!
原文如下
How to address common issues that we frequently see.
This section isn’t meant to be exhaustive or a replacement for the Oculus Best Practices Guide, which has more detailed information on how best to build your app. We encourage you to check it out.
SDK Version
Always use the latest SDK to develop your app.
Application Signing
Your application must be signed with an Android digital certificate before you submit it. If you are using Unity, be sure to replace the Unity-generated temporary debug certificate with a permanent, private keystore that you have generated and assigned to your app. You may wish to remove your osig file prior to submission, but doing so is not required. See Application Signing above for more information.
Performance
Your app shouldn’t crash, freeze, hang, enter an extended unresponsive state, or cause device or system reboot. Playback of videos, movies, and audio must not stutter. Graphics and icons should be rendered stereoscopically and displayed at a comfortable viewing distance. Text should be legible and displayed without any cutoffs or overlaps in the VR environment.
Comfort
All apps should endeavor to reduce or eliminate simulator sickness. For example, user-controlled head tracking and orientation behavior should be maintained at all times.
Interaction with the Oculus Home Menu
- Load from Home
- Initial Interactive State - App must begin accepting input, respond to head tracking, and display graphics within 4 seconds of app startup.
- If the app takes longer than 4 seconds to load, appropriate user feedback must be displayed. At minimum, a progress indicator is required. Engaging animations, tutorials/tips, or other visual cues are encouraged.
- Contractually required license screens/animations/logos or legal disclaimers must NOT remain onscreen for more than 5 seconds each and must be rendered stereoscopically and with head-tracking.
- Return to Home
- App must transition to the Oculus Home screen quickly and in a manner that does not cause user discomfort.
Power Level State Handling
Power level state handling and detection is a mitigation strategy for heat build-up. It’s recommended that each app use this feature.
Apps are strongly encouraged to use the minimum possible CPU and GPU clock combination that still allows them to maintain 60 FPS. Higher clock levels will lead to faster heat build-up and reduced battery life. If you have to use higher levels, consider optimizing first and raising the GPU and CPU levels only as a last resort.
Gamepad Notifications
If your app requires a Bluetooth gamepad, please make this apparent to the user with notifications in order to avoid a bad user experience. We suggest one of the following methods:
- If no gamepad is connected at app launch, present a notification that no controller is detected and that it’s required to use the app.
- If the user attempts an input (swiping or tapping the touchpad) that is normally handled by the gamepad, present a notification that a controller is required for that action. This is more appropriate in apps where a gamepad is optional or just adds extra functionality.
Reserved User Interactions
Back button interactions:
- Long-press: the user presses the button down and holds it for > 0.75 seconds. A long-press should always open the Universal Menu.
- Apps must implement the Universal Menu accessed by a long-press. This will happen through integration with the latest SDK. The Universal Menu will provide features such as the passthrough camera, a shortcut to Oculus Home, the ability to reorient, brightness, and do-not-disturb mode.
- Short-press: The user presses the button down and releases it before the long-press time is up.
- A “back” action is interpreted by the application dependent on its current state, but generally it will retreat one level in an interface hierarchy. For example, if the app menu is up and at its initial, top-level screen, a short-press will exit the app menu. If no app menu or other satisfactory stateful condition is current (determined by the application), the short-press will provide a confirmation dialog and then exit the app and return to Oculus Home.
Volume button interactions:
- Volume buttons must adjust the volume using the VR volume UI provided by the Oculus Mobile SDK.
LTE and Wi-Fi
Using LTE requires significantly more power than using Wi-Fi. All apps that require a significant use of data (beyond squirts for login or leaderboard purposes, for instance) should require a Wi-Fi connection to be in use. Apps with large bandwidth needs such as movie streaming applications must require Wi-Fi.
Agreements
We’ll supply you with a Distribution Agreement once your app has been initially reviewed.
Your End User License Agreement
The Distribution Agreement encourages you to supply an end-user license agreement (EULA) for your users. If you supply one, your EULA will be incorporated into the purchase/distribution flow of your app. If you don’t supply a EULA, certain pre-established terms will govern the use of your app as set forth in the Distribution Agreement.
Age and Ratings
Users must be at least 13 years old to use Oculus Home. We have two ratings that you may select upon submission: 13+ or 17+. We may have brief descriptive fields available to indicate the nature of your app’s content.
Restricted Use of Oculus Name and Logos
The trademarks of Oculus, including its name, logo, and those of it or its partners’ products such as “Rift” or “Gear VR” must not appear anywhere in your app. The exception to this is when referencing Oculus hardware or services, for example in a “Quit to Oculus Home?” dialog box or similar UI.
User Data and Permissions
Only request permissions that are required by your application.
If your application transmits data about the user (e.g. for analytics purposes, save state backup, multiplayer pairing, etc.) to an external server, you must declare this in your app submission. Applications distributed through the Store must not damage or destroy data on the user’s device. That about covers it. Thanks for reading, and let us know if we can help in any way. Can’t wait to see what you create!