小米应用商店APP上架规则上架规范

上架规范

本政策提及的小米应用市场包含小米应用商店以及游戏中心,在小米应用商店上架的应用除应符合本政策要求,还应符合小米应用商店上架要求:应用商店上架要求;联运游戏除应符合本政策要求,还应符合联运游戏上架要求:小米游戏上架要求

开发者生态保护机制的运作方式

小米会在开发者应用上传或应用安装时,对开发者的应用进行审核检测,并不定期对开发者发布以及安装的应用进行复查。小米发现开发者或 应用存在违反本政策的行为,小米将对开发者应用采取包括但不限于以下一项或多项处置:

  • 拒绝应用发布和更新申请
  • 搜索、展示环节,增加问题说明
  • 公开范围受限,减少推荐和搜索展示权重
  • 下架应用
  • 向用户进行问题说明
  • 冻结/注销开发者账号
  • 限制违规应用的下载和安装
  • 系统范围内保障用户权益的相关手段:冻结已授权能力/权限/服务(如:定位等个人隐私权限获取、Push发送服务等)

在识别应用是否违反本政策时,小米会考虑多种因素,包括但不限于本政策中所提及的违规行为。同样,小米会根据诸多因素判断是否存在违规,考虑的因素包括但不限于:针对具体应用和开发者的投诉、新闻报道、违规记录、用户反馈以及其他行为。

请注意,针对存在违反本政策的处置通知中可能不会一一指出应用出现的每项违规行为。开发者有责任根据相关条款进行问题修改,并进一步核查自查,以确保应用完全符合政策要求。如在指定期限内未能修改合规,小米将进一步采取措施。

违规处置措施和影响

以下将详细介绍对涉及违反本政策的行为,小米可能采取的措施以及措施对违规应用和违规应用开发者帐号的影响。

1、驳回上架/更新申请

1.1 提交审核的新应用或应用更新版本不会在小米应用商店发布。

1.2 审核驳回现有应用的更新版本,此次更新版本之前发布的应用版本仍会保留在小米应用市场上。

1.3 应用驳回不会影响开发者的应用您访问现有用户安装量、统计信息和评分。

注意:在未完全解决违规问题之前,请勿尝试重新提交被驳回的应用。

2、搜索、展示、下载、安装环节,增加问题说明

2.1 用户会在搜索、详情页、应用列表、下载页面、安装页面等功能页面,看到应用存在问题的说明。

2.2 当应用问题修改完成且通过检测后,问题说明会自动消除。

3、公开范围受限

3.1 违反本政策的应用曝光度将被限制,被推荐及被用户搜索到概率将会降低。严重违反本政策的情况下,不排除应用无新用户曝光仅支持已安装用户升级的情况。

3.2 将违反本政策的应用设置为“公开范围受限”状态,但不会影响开发者帐号正常使用。

3.3 将违反本政策的应用设置为“公开范围受限”状态,不会影响用户查看应用的现有应用详情、用户安装量、统计信息和评分。

4、下架应用

4.1 违反本政策的应用所有版本都会从小米应用市场中下架,用户将无法再下载该应用。

4.2 由于该应用已下架,因此用户将无法查看该应用的商品详情、用户安装量、统计信息和评分。如果对应开发者提交了修改通过版本,小米将对应用做恢复上架处理。

4.3 当应用因为违规或其他问题导致下架,将在用户搜索结果上进行应用下架原因的提示。

4.4 下架不会立即影响开发者帐号的使用,若应用多次违规下架,小米有权对违反本政策的应用对应的开发者帐号进行账号冻结处理。

注意:在未完全解决问题之前,请勿尝试重新发布已下架的应用。

5、对已安装用户发布问题说明

针对违法违规的应用,将对已安装用户发送问题说明告知应用存在的违规问题和风险。

6、冻结/注销开发者账号

6.1 如果开发者帐号被冻结/注销,该账号下的所有应用都将从小米应用市场下架,并且该开发者将无法再发布新应用。

6.2 由于已冻结/注销开发者帐号,且账号旗下的应用也已下架,因此开发者将无法查看应用的商品详情、现有用户安装量、统计信息和评分。

6.3 被冻结/注销的开发者账号,其账号原注册企业和开发者将无法再次申请新的账号。

7、冻结/中止已授权的系统能力和服务

7.1 对于小米所提供或授权的公开/非公开的系统能力、系统权限、功能服务等,均将中止或关闭,开发者将无法继续使用这些能力和服务。

小米开发平台应用被侵权申诉操作指南

小米开发平台应用被侵权申诉操作指南

本文档介绍了应用被侵权申诉以及反通知流程,您可在了解文档内容后,自行反馈应用侵权。

小米应用商店为中立的应用分发平台,如果小米应用商店的应用程序侵犯了您的合法权益(如:商标侵权、内容著作权侵权、身份侵权、包名侵权等),请按照以下侵权投诉流程和反通知流程,提供相关资料,以邮件的形式发送给我们,我们将在收到有效的投诉材料后予以反馈。

一、小米应用商店侵权投诉通知和反通知流程介绍:

二、小米应用商店官方受理渠道

受理渠道

对外邮箱:developer@xiaomi.com

三、侵权申诉流程

i. 投诉侵权证明材料:

侵权类别证明材料
形式要件主体证明权属证明侵权证明
商标侵权小米应用商店侵权投诉通知书1、本人投诉:
营业执照、组织机构证明、身份证等
2、代理人投诉(投诉人和权利人主体不一致):
(1)提供委托人营业执照/身份证、委托授权书
(2)提供被委托人营业执照/身份证等
1、商标注册证(必须提供)
2、商标使用情况证明材料
1、被投诉软件的链接
2、相关纠纷的行政、司法机关的受理通知书、处理决定、判决书(如有)
内容著作权侵权1、作品登记证书
2、如无作品登记证书,则可提供作品首次公开发表或发行日期证明材料,如创作手稿,经权威机关签发的作品创作时间戳等有效权属证明
1、被投诉软件的链接
2、被投诉作品与投诉人作品侵权内容的对比截图(必须提供)
3、相关纠纷的行政、司法机关的受理通知书、处理决定、判决书(如有)
软件著作权侵权1、软著登记证明
2、无软著可提供其他权属证明
1、被投诉软件的链接
2、被投诉软件与投诉人软件代码一致的截图(必须提供)
3、相关纠纷的行政、司法机关的受理通知书、处理决定、判决书(如有)
身份侵权主体证明材料
包名侵权包名及最早发布的截图1、被投诉软件的链接
2、侵权对比图
3、相关纠纷的行政、司法机关的受理通知书、处理决定、判决书(如有)

ii. 权利人发起侵权通知邮件:

权利人应按以下格式向小米发出小米应用商店侵权投诉通知邮件,为节约时间成本,请务必按照以下格式提供。

1、邮件标题:【举报侵权】【您举报的应用名称】
2、邮件内容:
2.1 投诉的应用:
-应用名称:
-应用链接地址:可在http://app.mi.com/搜索得到
-开发者名称:
2.2 投诉内容(侵权项说明):
2.3 身份核实:

-贵司名称:
-营业执照(附件)等:
2.4 权益证明:(必须提供,,例如版权证明、商标证明、软件著作权书等等,以便小米核实信息并反馈。)
-注意:仅有软著、商标受理书,不足以保护商标权益。
2.5 小米应用商店侵权投诉通知书(必须提供且加盖公章)

点击下载:【小米应用商店侵权投诉通知书】,填写通知书并将相关证明材料邮件至开发者侵权投诉邮箱:developer@xiaomi.com,如有需要,相关证明材料,请加盖水印。

以上内容,为了确保投诉的真实性和有效性,权利人的通知书及其他相关证明材料,原则上应提供原件。

若不能提供原件的,应提供有权利人签字盖章的复印件。若材料涉外的,应按照法律的规定进行公证转递,并同时公证提供相应小米的公证转递材料。

若您提供的信息齐全真实,小米将进行审核并通知被投诉方,若被诉方无异议,则在侵权反通知期限截止后予以判罚处理。

iii. 小米应用商店受理:

小米作为中立的平台服务者,收到权利人符合本流程要求的有效通知书后,将在合理期限内将权利人的通知书转送给被投诉方。

1. 若被投诉方认可权利人的投诉:

  • 小米会尽快按照相关法律法规进行处理。

2. 若被投诉方不认可权利人的投诉并于合理期限内发出未侵权的反通知:

  • 小米会将被投诉方提供的反通知及相关材料转送给权利人,小米收到反通知后若据此作出保持、恢复上架等措施的,不承担任何法律责任。
  • 因权利人错误通知或被投诉人错误反通知导致的一切损失,包括但不限于权利人损失、用户损失及小米损失,由作出错误通知/反通知的一方承担。
  • 若权利人对于被投诉方的意见及其提供的相关材料有异议的,权利人不得再重复提出原通知要求,建议权利人尽快通过向有权机关提出诉前禁令、直接起诉、行政投诉等程序另行解决。

3. 若被投诉方于合理期限内无正当理由且未作有效反馈的:

  • 视为被投诉方认可权利人的投诉,小米会尽快按照相关法律法规进行处理。

四、侵权投诉反通知流程

如果您的应用被投诉侵犯他人合法权益,请按照以下侵权投诉反通知流程,提供相关资料,并按照以下邮箱地址发送给我们。我们将在收到有效的反通知材料后予以反馈。

1. 被投诉方反通知:

被投诉方在收到小米转送的权利人向小米提交的相关投诉材料后,若不认可侵权,应在侵权通知邮件中规定的工作日内提交【小米应用商店反通知书】,反通知书包括被投诉人主体信息、是否认可侵权、不认可侵权的初步证明材料。

点击下载:【小米应用商店反通知书模板】,填写反通知书并将相关材料发送至投诉方邮箱并抄送小米应用商店开发者侵权投诉邮箱developer@xiaomi.com

2. 小米应用商店反馈:

小米作为中立的平台服务者,会依法进行相关处理:

小米会将被投诉方提供的反通知及相关证明材料转送给权利人,小米收到反通知后若据此作出保持、恢复上架等措施的,不承担任何法律责任。

因权利人错误通知或被投诉方错误反通知导致的一切法律损失,包括但不限于权利人损失、用户及小米损失,由作出错误通知或反通知的一方承担。

若权利人对于被投诉方的意见及其提供的相关材料有异议的,权利人不得再重复提出原通知要求,建议权利人尽快通过向有权机关提出诉前禁令、直接起诉、行政投诉等程序另行解决。

五、注意事项

通知:

1. 本流程中的权利人,指拥有著作权,商标权,专利权等合法权益的原始所有人或经原始所有人合法授权的代理人,包括自然人,法人或其他组织等。

2. 为了确保投诉的真实性和有效性,权利人的通知书及其他相关证明材料,原则上应提供原件,若不能提供原件的,应提供有权利人签字盖章的复印件;若材料涉外的,应按照法律的规定进行公证转递,并同时公证提供相应小米的公证转递材料。

3. 本流程中的权利人的通知书,均应包括通知书本身及相关的主体资格证明,权属证明,侵权证明等材料。

4. 若权利人已经因为被投诉内容与被投诉方存在行政投诉或诉讼的,请在提交通知书时,将相关受理证明及提交行政机关或法院的证据材料以及行政机关或法院的意见或决定一同提交给小米,这将有利于投诉的处理。

通知小米的方式:

将前述全部电子材料以及纸质版本材料扫描后通过电子邮件发送至投诉方邮箱并抄送小米应用商店开发者侵权投诉邮箱developer@xiaomi.com

反通知:

1. 本流程中的权利人,指拥有著作权,商标权,专利权等合法权益的原始所有人或经原始所有人合法授权的代理人,包括自然人,法人或其他组织等。

2. 为了确保被投诉方提供相关材料的真实性、合法性和有效性,被投诉方的反通知书及其他相关证明材料,原则上应提供原件,若不能提供原件的,应提供有被投诉方签字盖章的复印件;若材料涉外的,应按照法律的规定进行公证转递,并同时提供相应的公证转递材料。

3. 本流程中的被投诉方的反通知书,均应包括反通知书本身及相关的主体资格证明、权属证明、不构成侵权证明等材料。

4. 若被投诉方已经就投诉内容与权利人存在行政投诉或诉讼的,请在提交反通知时,将相关受理证明及提交行政机关或法院的证据材料以及行政机关或法院的意见或决定一同提交给小米,这将有利于投诉的处理。

反通知的方式:

将前述全部电子材料以及纸质版本材料扫描后通过电子邮件发送至投诉方并抄送小米应用商店开发者侵权投诉邮箱developer@xiaomi.com

六、其他业务侵权:

海外应用侵权问题:请开发者发送侵权邮件至: overseas-dev@xiaomi.com

游戏类应用侵权:请开发者按照以下格式内容发送侵权邮件至:mi-gamebd@xiaomi.com

邮件标题:【侵权投诉】【游戏名称:XXXX】【被侵权公司:XXXX】
游戏名:
被侵权公司名:
侵权公司名:
侵权内容/原因/说明:
游戏相关资质(授权,版号,软著,营业执照等)

小米开发平台应用更新、修改操作指南

小米开发平台应用更新、修改操作指南

本文档介绍了应用更新、修改应用信息的流程,您可在了解文档内容后进行应用更新与应用信息的修改。

应用更新

已发布的应用,如需更新新版本,请参照以下流程。

小米应用商店支持应用同版本更新,根据小米应用商店系统逻辑要求,将apk_hash改变后,即可进行同版本更新。

1、进入应用管理界面,点击“管理”按钮进入应用详情页。

2、点击应用详情页“更新版本”按钮,即可进入完善资料-测试审核-发布上线的流程。

3、上传完成应用安装包,如应用包括拓展包与安装包,请一并上传。

项目

说明备注其他
单包上传支持上传32位、64位安装包或32/64位兼容包具体相关内容请参考32/64分包上传说明
双包上传需同时上传32位和64位两个安装包
主扩展包基本包的补充扩展软件
副扩展包若您需要上传两个扩展包,请将第二个扩展包上传至副扩展包处

4、若您的应用被检测到需要获取用户的敏感权限,请您按照相关权限项目进行说明,以便用户理解您获得权限的目的。

项目说明备注
获取定位您的应用将会获取用户定位,请您说明获取定位的目的
拨打电话您的应用将会利用用户设备拨打电话,请您说明拨打电话的目的
读取联系人您的应用将会获取用户联系人信息,请您说明读取联系人的目的
获取手机信息您的应用将会获取用户手机信息,请您说明获取手机信息的目的
录音您的应用将会获取为用户录音,请您说明获取录音的目的

5、完善应用的发布设置,根据需要选择应用的兼容设备、分类、发布地区与上线时间方式。

项目说明备注
兼容设备您的应用可下载与使用的设备类型
一级分类包含VR、实用工具、影音视听、聊天社交、图书阅读、学习教育、效率办公、时尚购物、居家生活、旅行交通、摄影摄像、医疗健康、体育运动、新闻咨询、娱乐消遣、金融理财等分类选择符合应用主要功能的分类项目,如应用符合多个分类,则可以自由选择,但不能选择无关的分类
二级分类根据一级分类对您的应用进行再次细分
分发地区应用可以下载并适用的地区如勾选其他海外地区,审核通过后,应用将会根据选择发布到对应海外地区
上线时间方式应用通过审核后上线时间方式选择如对上线时间无特殊要求,可选择“审核通过后立即上线”。如选择定时发布,则无法取消或更改时间

6、填写应用本地化语言信息,星号标注为必填项,填写完毕请阅读小米应用商店应用品牌展示图注意事项并勾选“我已阅读并同意”。

项目说明备注
应用名称上传应用的官方全称具体审核规范请参考应用审核规范
应用图标展示在用户桌面的应用图标,需与apk包内图标一致具体审核规范请参考应用审核规范
版本名应用版本的标识号开发者每次更新应用时,版本名要大于上一次版本名,否则无法提交应用审核
开发者名称展示给用户的开发者名称应用信息内填写的开发者名称与提交应用审核使用的账号主体内开发者信息需保持一致
关键字用户通过关键字搜索到应用可以提供多个关键字,以空格隔开
一句话简介以一句话简单介绍应用勿使用极限词和虚假承诺等违反新广告法的内容;勿使用疑问、反问等句式;保持在17个汉字或34个字符之内,句末勿加标点。
应用介绍对应用功能、亮点的准确介绍,吸引用户如实介绍应用功能和亮点,方便用户快速上手,勿呈现过多的SEO优化和空行
隐私政策为了保护用户隐私而制定的政策措施,内容须包括该APP收集使用个人信息的目的、方式和范围具体政策参考应用添加隐私政策声明的重要通知
官网链接非必填。您公司官方网站的地址
测试账号非必填。若您的应用需要注册账号才能使用,请提供可以用于测试的账号与密码该账号将用于应用审核流程,将不会展示给用户
项目说明备注
应用截图应用内相关场景截图
手机截图使用手机操作应用时呈现的截图应用图片信息如需使用到手机外观图片,禁止使用 iPhone 或其他品牌手机外观素材,应用图片信息中系统状态栏禁止存在与本应用无关的第三方应用图标
应用视频介绍非必填。以视频的形式介绍您的应用应用视频在驳回状态是无法删除的,请在重新提交审核后发送应用视频删除申请至问题工单系统
应用品牌展示图非必填。是小米应用商店为开发者提供的一项对应用品牌的直观展示服务该项已不展示给用户

7、完善行业资质证明。

注:在行业资质证明模块提交的材料无法删除,若您未上传原有材料而仅提交新材料,原有材料将会被新上传材料替换。

项目说明备注
ICP 备案号国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务开发者需要提供ICP备案截图,或ICP证和ICP备案号以证明资质
版权证明APP电子版权认证证书为您的app电子版的著作权证明,纸质软件著作权证书为您的app知识产权证明文件
免责承诺函对于承诺书的中提到的内容免除责任的一种形式相关承诺函模板请参考常见保证(承诺)函模板,若应用不符合单本图书/书城类、理财类、医疗类三种中的一种,建议开发者提供书城类承诺函
特殊资质代理证书金融理财类、影音视听类、图书阅读类、新闻资讯类、实用工具类、聊天社交类、医疗健康类应用需提交ICP证或ICP备案截图等资质或代理授权书具体要求请参考特殊行业资质要求
应用安全评估报告针对具有舆论属性或社会动员能力的互联网信息服务的主体进行评估后产出的报告非必填项,按需填写

​8、完善联系人信息并提交审核。

注:若未出现【联系人信息】模块或在【联系人信息】板块如果未展示输入验证码,请在【本地化语言信息】板块将本地化语言切换为简体中文。

9、提交审核后应用状态更新为等待审核,我们会在1-3个工作日内为您审核。

应用信息修改

针对已上线的版本,我们支持进行应用资料信息修改,请参照以下流程。

1、进入应用详情页,点击“查看资料”按钮。

2、点击“编辑资料”按钮,即可进入完善资料页面,后续流程与更新应用的3-9流程一致。

注:

  • 应用在驳回状态下不支持点击“编辑资料”按钮进行修改,如需修改,需点击“更新版本”按钮,才可在重新提交应用审核的时候进行修改。
  • 修改应用信息不支持修改应用名称,如需修改应用名称,可在提交审核或者版本更新状态下修改。

小米开放平台屏幕圆角适配说明

小米开放平台屏幕圆角适配说明

1.背景

目前大部分小米手机的屏幕都是圆角,如下示意图所示。四个黑色角表示屏幕缺失部分。

2.参数说明

MIUI提供以下两个值分别表示屏幕上下方圆角的半径:

  • rounded_corner_radius_top 
  • rounded_corner_radius_bottom

3.使用方法

例如需要取得rounded_corner_radius_top的值,可以参考如下代码:

public static int getCornerRadiusTop(Context context) {
         int radius = 0;
         int resourceId = context.getResources().getIdentifier("rounded_corner_radius_top", "dimen", "android");
         if (resourceId > 0) {
              radius = context.getResources().getDimensionPixelSize(resourceId);
       
         return radius;
}

小米开发平台全面屏及虚拟键适配说明

小米开发平台全面屏及虚拟键适配说明

1. 前言

自2016年小米 Mix 全面屏手机推出时,得到了业界和用户的双重认可,小米也引领了“全面屏”手机的风潮。作为全面屏手机的引领者,小米将推出更多的全面屏手机,追求更大的屏幕比例,更高的屏占比。

这些变化也影响了手机软件的设计,最值得开发者关注的,是以下两点:

  • 更大的屏幕高宽比
  • 虚拟导航键

2. 更大的屏幕高宽比

大部分全面屏设备都是18:9,从下图可以看到,在 1080P 的分辨率下,比标准的 16:9 屏幕,足足多了240像素。开发者需要作一些优化,以充分利用更大的显示空间。

2.1. 声明 Maximum Aspect Ratio

Android 标准接口中,支持应用声明其支持的最大屏幕高宽比(maximum aspect ratio)。具体声明如下,其中的 ratio_float 被定义为是高除以宽,以 16:9 为例,ratio_float = 16/9 = 1.778 (18:9则为2.0)。

<application>
    <meta-data android:name="android.max_aspect" android:value="ratio_float" />
</application>

若开发者没有声明该属性,ratio_float 的默认值为1.86,小于2.0,因此这类应用在全面屏手机上,默认不会全屏显示,屏幕底部会留黑。考虑到将有更多 19.5:9 甚至更长的手机出现,建议开发者声明 Maximum Aspect Ratio ≥ 2.2 或更多。值得一提的是,如果应用的 android:resizeableActivity 已经设置为 true,就不必设置 Maximum Aspect Ratio 了。详见 Android 官方文档 Declaring maximum aspect ratio

2.2. 避免内容拉伸/变形

从16:9变成18:9甚至更长的比例,图片往往被会拉伸变形,此问题常见于应用开屏图。开发者应使用更灵活的布局,以适应不同的屏幕比例。

2.3. 充分利用屏幕空间

开发者应充分利用全面屏显示更多内容。如下图,王者荣耀已修改了 Maximum Aspect Ratio,在全面屏有更宽阔的游戏视野。

3. 虚拟导航键(Navigation bar)优化

3.1. 虚拟导航键样式

为了实现更高的屏占比,屏幕内的虚拟导航键就成了标准功能,如何让其应用界面在视觉上统一,同样需要开发者的积极适配。Android 已经有相关接口允许开发者自定义虚拟键的样式,以下是可供选择的样式。

关于使用哪种样式,我们有以下建议:

建议1:如果页面含有复杂背景/纹理,建议设置为透明,如下图中的桌面和通话界面。

建议2:含「底部Tab」的页面,建议将虚拟键设置为「底部Tab」的颜色,如 MIUI 的相机和小米商城。

建议3:不含「底部Tab」的页面,建议使用背景颜色,如多看阅读。

由于一个应用内含有多种不同的页面,我们希望开发者能当前页面的情况,来选择合适的虚拟键样式,以保证视觉的统一美观。

3.2. 如何修改虚拟键样式

Android 有标准的实现方式, 调用以下接口即可 window.setNavigationBarColor (int color)。在调用该接口时,还需要设置一些flag,详见该接口的注释说明(即下文):

/**
 * Sets the color of the navigation bar to {@param color}.
 *
 * For this to take effect,
 * the window must be drawing the system bar backgrounds with
 * {@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS} and
 * {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION} must not be set.
 *
 * If {@param color} is not opaque, consider setting
 * {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_STABLE} and
 * {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION}.
 * <p>
 * The transitionName for the view background will be "android:navigation:background".
 * </p>
 */
public abstract void setNavigationBarColor(@ColorInt int color);​

4. FAQ

4.1. 这些改动是仅针对 MIUI 系统吗

不是。上述提及的均是 Android 标准接口,且早在几年前就已经存在。因此开发者的任何改动,可以在其余 Android 手机中直接生效。我们相信全面屏会是往后手机设计的趋势,做好相关的适配工作,对于开发者来说是非常值得的。

4.2. 如何测试

目前市面上的小米新机均为全面屏手机,测试方法如下:

  • 升级至 MIUI 9.5 及以上版本
  • 前往「设置 > 全面屏 > 应用全屏运行设置」,找到相关应用,然后打开开关,就可以在全面屏比例下运行应用,以观察应用的表现。

有任何问题可以邮件给我们的项目组 miuishell@xiaomi.com ,会有同事解答相关疑问。

小米开发平台剪切板隐私保护功能说明及读写剪切板权限调整说明

小米开发平台剪切板隐私保护功能说明及读写剪切板权限调整说明

1.应用口令规则告知

您的应用若存在通过读取剪切板内容识别并弹出口令的交互逻辑(例如:淘宝读取淘口令),请告知我们您的应用读取的口令规则。

您可将:

  • 开发者名称
  • 应用名称
  • 包名
  • 口令规则(正则patten字符)
  • 口令的使用说明

发送至邮箱miui-security-open@xiaomi.com

我们将在系统中维护您的应用口令,以帮助您的应用能够正确读取剪切板中的必要信息。(注意:我们仅接受在小米应用商店已上架的应用的相关申请)。

2.剪切板权限调整说明

  • 原读写剪切板权限拆分为“读取剪切板”和“写入剪切板”,给予用户更加灵活的隐私权限管控方式;
  • “读取剪切板”权限将默认设置为“智能允许”;“写入剪切板”权限将默认设置为“仅在使用中允许”;
  • 当应用读取剪切板时,若剪切板中的最新内容符合应用读取规则(例如:淘宝读取剪切板中的淘口令),将智能允许应用读取剪切板;智能允许时,将在屏幕顶部通过提示气泡的方式告知用户(用户可见内容为:已智能允许某某应用读取剪切板);
  • 当应用读取剪切板时,若剪切板中的最新内容不符合应用读取规则,且剪切板中的内容符合其他应用读取规则(例如:非淘宝应用读取剪切板中的淘口令),将智能拒绝应用读取剪切板,且用户无感知;
  • 当应用读取剪切板时,若该应用存在读取规则但剪切板最新内容不符合应用读取规则(例如:淘宝读取剪切板中的一段任意文字),将智能拒绝应用读取剪切板,且用户无感知;
  • 当应用读取剪切板时,若剪切板中的最新内容不符合任何应用读取规则且应用不存在读取规则(例如:某地图应用读取剪切板中的一段任意文字),将智能拒绝应用读取剪切板,并弹出通知、气泡告知用户,用户有权利关闭提示。

3.FAQ

3.1.此功能适配哪些Android版本

此功能适配Android的版本:Android 10、 Android 11。

3.2.开发者在哪个MIUI版本可以体验测试

三方开发者可安装MIUI 12开发版20.11.16之后的版本调试。

3.3.智能拒绝的逻辑是否会影响用户主动粘贴剪切板中的内容

不会,只要用户不手动将应用读取剪切板的权限状态手动调整为“拒绝”,用户都可正常手动长按粘贴。此次剪切板隐私保护的功能仅针对应用主动请求读取剪切板的情况。

3.4.读取剪切板权限是否可以使用权限弹窗引导用户授权

读取剪切板权限目前未支持权限询问弹窗,所有应用默认权限状态为“智能允许”。

小米开放平台相机各场景下3A操作适配说明

小米开放平台相机各场景下3A操作适配说明

1.Preview

在预览时AF可以由App控制触发对焦,也可以底层自动对焦,推荐使用底层自动对焦。

1.1.App手动对焦设置

  • CONTROL_AF_MODE_AUTO并不是AF自动模式,根据Google定义,是由App进行手动触发。App控制触发对焦逻辑是设置AF为Auto,然后App主动触发对焦。
  • App使用CONTROL_AF_TRIGGER触发对焦。CONTROL_AF_TRIGGER使用建议,CANCEL – START – IDLE;App何时触发对焦由App决定,比方App检测到加速度计和陀螺仪变化达到一定的阈值或者app为扫码软件,检测扫码一直无法解析扫码结果等(因为出现这种场景时物距发生了变化或者焦点模糊),具体场景具体调整。对于扫码等APP还可以设置AF测量区域,CONTROL_AF_REGIONS,尽量使用中心区域作为对焦点。

1.2.AF自动对焦设置

可以先检测AF有效模式,如果支持CONTINUOUS_PICTURE,设置即可,具体如下:

mCharacteristics.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES),CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE))。

CONTROL_AF_MODE设置为CONTROL_AF_MODE_CONTINUOUS_PICTURE。

2.Video

  • 可以先检测AF有效模式,如果支持CONTINUOUS_VIDEO,设置即可,具体如下:
mCharacteristics.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES),CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_VIDEO))。

CONTROL_AF_MODE设置为CONTROL_AF_MODE_CONTINUOUS_VIDEO。

  • 注释

CONTROL_AF_MODE_CONTINUOUS_PICTURE和CONTROL_AF_MODE_CONTINUOUS_VIDEO的区别是前者在AF时会快速收敛,后者在AF时慢速收敛,因为录制视频时为了防止图像抖动,收敛过程需要慢一点,共同点是二者都为自动对焦。

3.Touch

Touch是为了在预览时对特定的区域进行3A权重提高,以便于得到预期的图像。当touch预览窗口某区域时,通用的操作流程是设置CONTROL_AF_REGIONS,CONTROL_AF_TRIGGER的流程还是CANCEL – START – IDLE。

4.Flash

Flash的实用场景通常在Touch,拍照和录像情况下使用,flash有两种操作模式,手动模式和自动模式,具体操作如下:

4.1.手动模式,即Torch模式

当需要打开flash时,设置CONTROL_AF_MODE为OFF/AUTO模式,同时设置FLASH_MODE为torch即可。

4.2.自动模式

自动模式是flash交给底层AE算法控制,具体如下两种常用模式:

ON_AUTO_FLASH:设置AF_Mode为此模式表示flash由AE根据当前亮度进行打开,关闭。

ON_ALWAYS_FLASH:设置AF_Mode为此模式表示flash每次操作都会打开。

5.拍照

拍照操作流程通常为触发3A,等待3A收敛,获取到3A收敛结果,进行拍照请求。

5.1.触发3A操作

CONTROL_AE_MODE根据是否需要闪光灯设置为ON_AUTO_FLASH,ON_ALWAYS_FLASH,ON。

CONTROL_AE_PRECAPTURE_TRIGGER设置建议 CANCEL-START-IDLE。

CONTROL_AF_MODE设置为AUTO,CONTINUOUS_VIDEO都可以。

CONTROL_AF_TRIGGER设置建议CANCEL-START-IDLE。

5.2.等待3A状态收敛

根据CaptureResult的metadata获取3A状态,如果3A都收敛了即可请求拍照

result.get(CaptureResult.CONTROL_AF_STATE);   //AF_State

result.get(CaptureResult.CONTROL_AE_STATE);   //AE_State

result.get(CaptureResult.CONTROL_AWB_STATE); //AEB_State 

5.3进行拍照请求

CONTROL_AE_MODE根据是否需要闪光灯设置为ON_AUTO_FLASH,ON_ALWAYS_FLASH,ON。

CONTROL_AF_MODE设置为AUTO,CONTINUOUS_VIDEO都可以。

最终下发拍照请求:

mCaptureSession.capture(request, mCaptureCallback, mBackgroundHandler); 

6.参考

https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics
https://developer.android.com/reference/android/hardware/camera2/CaptureRequest
https://github.com/googlearchive/android-Camera2Raw

小米开放平台双WiFi适配说明

小米开放平台双WiFi适配说明

1.双WIFI简介

双WiFi顾名思义提供了手机同时连接两个WiFi同时上网的能力,一般手机只能同时连接AP的一个WiFi频段获取 WiFi信号,而支持双WiFi技术的手机可以同时连接AP的两个频段(2.4Ghz或5GHz)获取WiFi信号(可以连接一个AP的两个频段,也可以连接两个AP的不同频段)。

1.1双WIFI的优点

  • 提升网络稳定性:如果一路链路因为无线参数波动出现网络波动,可以通过另一链路及时将数据包发送出去;
  • 提升网络速度:双WiFi提供了两条链路同时加载数据的能力,提升网络速度。

1.2目前小米支持双WiFi的已发布机型

小米10、小米10 Pro、Redmi K30 5G、Redmi K30 Pro。

1.3如何进入双WIFI UI操作界面

双WiFi UI操作界面可从手机如下操作路径:“设置->WLAN->WLAN助理->双WLAN加速”进入。该界面称为副WiFi界面,副WiFi界面的打开和连接与主WiFi除了频段差异外并无区别(当主WiFi连接5Ghz时,副WiFi只能连接2.4Ghz,反之主WiFi连接2.4Ghz的时候,副WiFi只能连接5Ghz)。如下图所示:

2.双WIFI接入

2.1双WIFI接入需求

  • 判断当前机型是否支持双WiFi;
  • 判断当前双WiFi是否已连接;
  • 若未连接,作双WiFi的连接引导;
  • 接入双WiFi 网络;
  • 副WiFi相关的api。

2.2判断当前机型是否支持双WiFi

private boolean supportDualWifi(Context context) {
    String cloudvalue = Settings.System.getString(context.getContentResolver(), "cloud_slave_wifi_support");
    if ("off".equals(cloudvalue)) {
        return false;
    }
    boolean support;
    try {
        support = context.getResources().getBoolean(
                context.getResources().getIdentifier("config_slave_wifi_support", "bool", "android.miui"));
    } catch (Exception exception) {
        return false;
    }
    return support;
}

2.3判断当前双WIFI是否已连接

WiFi的api都属于系统api,有严格的权限校验,第三方应用无法直接调用。miui提供了workround判断方法,当副WiFi连接上了之后,如下参数会设置为对应的副WiFi的ssid,断开时则会清空,可依此判断当前副WiFi是否已连接。

 private boolean isSlaveWifiConnected(Context context) {
        String slaveWifiSsid =  getDualWifiSsid(context);
        if (slaveWifiSsid == null || slaveWifiSsid.isEmpty()){
            return false;
        } else {
            return true;
        }
    }


    private String getDualWifiSsid(Context context){
        return Settings.System.getString(context.getContentResolver(), "slave_wifi_ssid");
    }

2.4 若副WiFi未连接,则引导用户至副WiFi界面进行连接

判断当前副WiFi是否已连接,若未连接跳转到系统副WiFi界面引导用户连接,返回到当前界面则再次校验,校验成功后进行副WiFi网络操作。

 if (!isSlaveWifiConnected(getApplicationContext())){
            //TODO Provide Dual Wifi Ui guidance and reCheck
            Intent intent = new Intent("android.settings.DUAL_WIFI.WIFI_SETTINGS");
            startActivity(intent);
            return;
        }

2.5接入双WiFi网络part 1/4

反射获取副WiFi的transport

private int getSlaveTransportType() {
        int slaveTransportType = -1;
        try {
            Class networkCapabilitiesClass = Class.forName("android.net.NetworkCapabilities");
            Field field = networkCapabilitiesClass.getField("TRANSPORT_SLAVE_WIFI");
            slaveTransportType = (int) field.get(null);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return slaveTransportType;
    }

2.6接入双WiFi网络part 2/4

初始化副WiFi对应的NetworkRequest

 int slaveTransportType = getSlaveTransportType();
        if (slaveTransportType < 0) {
            return;
        }
        NetworkRequest nr = getNetworkRequestForType(slaveTransportType);


    private NetworkRequest getNetworkRequestForType(int type) {
        return new NetworkRequest.Builder()
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                .addTransportType(type).build();
    }

2.7接入双WiFi网络part 3/4

初始化副WiFi所需的NetworkCallback

SlaveCallback slaveNetworkCallback = new SlaveCallback();
    private class SlaveCallback extends ConnectivityManager.NetworkCallback {
        @Override
        public void onAvailable(Network network) {
            Log.d(TAG, "Network available: " + network.toString());
            Socket skS;
            try {
                InetAddress[] inetAddress = network.getAllByName("www.mi.com");
                skS = network.getSocketFactory().createSocket("www.mi.com", 80);
            } catch (IOException e) {
                e.printStackTrace();
                return;
            }
            Log.d(TAG, "skS = " + skS.toString());
        }
    }

2.8接入双WiFi网络part 4/4

请求副WiFi网络

ConnectivityManager cm = (ConnectivityManager) getApplicationContext().
        getSystemService(Context.CONNECTIVITY_SERVICE);
cm.requestNetwork(nr, slaveNetworkCallback);

PS: manifest 添加 permission
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

2.9 api补充

副WiFi提供的api汇总,详见“小米双wifi接口列表v1.0”

3.补充说明

3.1系统支持

当打开“双WLAN加速”并且辅助WLAN连接时,系统可以自动分配连接到不同的WiFi链路。 应用开发者可以跟小米确认开发的APP是否已经被支持。 当前已支持 :

  • 直播类:斗鱼,虎牙、企鹅电竞、抖音、快手、微视;           
  • 购物类:淘宝、天猫、京东、毒、唯品会、苏宁易购、阿里巴巴、有品、小米商城、拼多多、河马生鲜、 PP视频、咸鱼 ;        
  • 视频类:优酷、腾讯视频、哔哩哔哩、爱奇艺、影视大全、西瓜视频、芒果Tv,人人视频、搜狐视频、 电视家;       
  • 浏览器:UC浏览器、QQ浏览器、百度浏览器、搜狗、猎豹,搜狗搜索;        
  • 音乐类:网易云音乐、酷我、央视影音、咪咕音乐、酷狗、qq音乐 ;      
  • 休闲app、大准点评、知乎、最右、虎扑;      
  • 新闻类:今日头条、腾讯新闻、一点资讯、想看、新浪新闻;  
  • 其他:迅雷、58、汽车之家、懂车帝、乐视视频、链家、瓜子二手车、安居客。 

3.2应用适配 

推荐开发者参照本接入指南中的“双WiFi接入”章节和附带的demo对双WiFi进行应用的适配。双WiFi连接的情况下,系统可以在两个网卡之间对socket进行分配,对于多socket的情况,是有加速效果的。   但是这种有一个弊端,系统不知道APP的socket想被放到哪个网卡,是随机控制的,所以就可能出现跨运营商访问的情况。而应用自己做适配,应用可以自己控制数据传输到自己想传输的网卡上,这样就可以避免跨运营商访问的情况,更好地达到提升网络稳定性和数据加载速度的目的。

4.附件

MIUI Widget适配建议及示例

1.MIUI Widget布局自适应方案建议及示例

1.1.概述

背景见:《MIUI小部件技术规范与系统能力说明》中「小部件技术规范和要求」第八项。

本模块介绍了常用的几类Widget布局实现自适应的方案。

1.2.方案与示例

1.2.1.快捷卡片的自适应方案实践

快捷功能卡片中每个icon的大小是固定的,但是在widget中无法获取具体显示大小,因此如果只写死一套尺寸,在某些模式下,icon会显示不全。

目前采用的方案是,使用2套布局资源,在布局中写死大小,根据Google小部件开发指南中提到的,使用OPTION_APPWIDGET_MIN_WIDTH或者OPTION_APPWIDGET_MAX_WIDTH返回的数值决定使用哪套布局:

先定义2套不同尺寸的layout资源:

//layout_shortcut_large
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/shortcut_icon"
        android:layout_width="53dp"
        android:layout_height="53dp"
        android:layout_gravity="center"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/shortcut_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="@dimen/dp_4"
        android:textSize="24sp" />
</LinearLayout>


//layout_shortcut_small
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/shortcut_icon"
        android:layout_width="28dp"
        android:layout_height="28dp"
        android:layout_gravity="center"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/shortcut_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="@dimen/dp_4"
        android:textSize="14sp"/>
</LinearLayout>

在代码中动态判断使用哪一套布局:

class SimpleWidgetProvider : AppWidgetProvider() {

    override fun onUpdate(
    context: Context,
    appWidgetManager: AppWidgetManager,
    appWidgetIds: IntArray) {
        appWidgetIds.forEach { appWidgetId ->
        updateAppWidget(context, appWidgetManager, appWidgetId)
        }
    }

    fun updateAppWidget(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetId: Int,
    ) {
        val appWidgetManager = AppWidgetManager.getInstance(context)
        val options = appWidgetManager.getAppWidgetOptions(appWidgetId)
        if (options == null) {
            return null
        }
        val minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
        val widgetLayoutRes = if (minWidth >= 300)R.layout.layout_shortcut_large else R.layout.layout_shortcut_small
        val remoteViews = RemoteViews(context.packageName, widgetLayoutRes)
        appWidgetManager.updateAppWidget(appWidgetId, remoteViews)
    }
    
    /**
     * 任何option的更改都会触发,无法通过newOptions来判断是否是大小发生了变化
     * 需要将本次的MAX_HEIGHT/MAX_WIDHT记录下来,在下一次触发时比对
     */
    @CallSuper
    override fun onAppWidgetOptionsChanged(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetId: Int,
        newOptions: Bundle
    ) {
        //需要在options change通知里判断,min和max是否发生了变化,如果发生了变化,需要更新布局
    }
}

1.2.2.股票卡片的自适应方案实践

RemoteViews无法动态设置宽高,但是可以在布局中设置宽高,为了实现卡片的自适应,我们不建议在布局中给layout_width和layout_height设置固定值,但是可以通过设置最大和最小宽高来达到自适应的效果;

例如股票通过调整ListView中每个item的maxHeight和maxHeight,来实现自适应(以下按1080*2340分辨率为例):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/stock_item"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxHeight="43.64dp"
    android:minHeight="40.97dp"
    android:background="@drawable/pa_bg_stock_widget_item"
    android:paddingHorizontal="@dimen/dp_7">

    <include layout="@layout/pa_widget_stock_item" />
</RelativeLayout>
  • android:minHeight计算:(418-40*2)/ 3 / 2.75=40.97
  • android:maxHeight计算:(440-40*2)/ 3/ 2.75 = 43.64

计算过程:

在MIUI小部件设计规范中,列出了Widget Host在不同模式下的尺寸:

如表格所示,4*2规格的卡片,其最小显示高度是418px,最大显示高度是440px,我们要求内容区距离卡片外边距最小是40px,因此,对于4*2widget的内容区的最小显示高度为418-40*2;

股票4*2最多显示3条数据,因此每条数据的最小显示高度为(418-40*2)/ 3,换算成dp为40.97dp;最大显示高度类似;

1.2.3.其他方案建议

使用LinearLayout等分布局:

疫情卡片的一种自适应布局实现:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="40px">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="bottom">

        <LinearLayout
            android:id="@+id/item1"
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_marginEnd="10dp"
            android:layout_weight="1">

        </LinearLayout>

        <LinearLayout
            android:id="@+id/item2"
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_marginEnd="10dp"
            android:layout_weight="1">

        </LinearLayout>

        <LinearLayout
            android:id="@+id/item3"
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_marginEnd="10dp"
            android:layout_weight="1">

        </LinearLayout>

        <LinearLayout
            android:id="@+id/item4"
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_weight="1">

        </LinearLayout>
    </LinearLayout>

</FrameLayout>

利用LinearLayout的android:layout_height属性,动态分配每个item的尺寸;

注:股票卡片也可以采用该方案进行适配,事实上,所有使用ListView或者GridView的卡片布局,都可以用该方案代替,来达到自适应效果,但是相应地需要进行更多自定义的封装,开发成本更高,但是效果比较理想;

使用RelativeLayout相对布局:

手机管理卡片的一种自适应布局实现:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="40px">

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1">

        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/score_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:text="手机很安全,继续保持"/>

        <TextView
            android:id="@+id/score"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="100"/>
    </RelativeLayout>


    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="手机垃圾"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="内存占用"/>
    </LinearLayout>

</LinearLayout>

1.3.总结

  • 以上各个方案只是目前为止,可能的部分自适应实践建议,业务需要根据自身情况来判断如何适配
  • 以上各个方案,部分方案可以通过组合的方式,来实现更多效果
  • 以上示例代码中的数值和布局,只具有演示效果,业务需要根据具体情况调整,请勿原样复制

2.小部件加载态建议及示例

2.1.概述

背景见:《MIUI小部件规范》中「无内容场景」。没有配置加载态手机重启或者桌面/负一屏重启会呈现空白卡片,影响整体体验,本模块介绍了推荐的加载态实现方案。

2.2.方案

默认展示加载态(initialLayout指定加载态布局资源),当收到update广播时更新为实际的布局

# 工程结构
.
└── src
    ├── main
    │   └── java
    └── res
        ├── drawable
        │   └── loading.webp
        ├── drawable-night
        │   └── loading.webp
        ├── layout
        │   ├── layout_example.xml
        │   └── layout_loading.xml
        └── xml
            └── app_widget_simple.xml

layout_example.xml 正常的布局资源

...

layout_loading.xml 加载态布局资源

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="fitXY"
    android:src="@drawable/loading.webp" />

app_widget_simple.xml 小部件配置资源

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="xxx"
    android:minHeight="xxx"
    ...
    android:initialLayout="@layout/layout_loading.xml"/>

AppWidgetProvider 使用正常布局文件创建RemoteViews

public class ExampleWidget extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        for (int appWidgetId : appWidgetIds) {          
            // 正常布局文件创建RemoteViews 
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
            R.layout.example);
            ...        
        }
    }
}

备注:以上方案仅做参考。

小米开放平台MIUI小部件规范一

小米开放平台MIUI小部件规范

1.小部件简介

小部件是Android提供的能力。开发者可选取应用中重要的内容直接在桌面或小部件屏中呈现给用户,以提升用户在桌面获取信息与直达服务的效率。同时用户可通过小部件实现个性化桌面。

2.MIUI小部件体系

MIUI小部件体系基于Android小部件,对设计与技术实现进行了规范,并持续迭代开发者所需要的能力,从而联合开发者一起为用户提供更好的使用体验。

2.1.桌面网格

通过对桌面的重新设计,MIUI支持小部件在手机桌面中优雅的展示,用户可以非常方便的将小部件添加至桌面,并可快速拖动至小部件屏。

同时还支持“无字模式”:隐藏桌面上的应用与小部件名称,使桌面的简约美感达到极致。(操作路径:桌面双指捏合—左下角设置图标—无字模式)

2.2.小部件屏

原MIUI智能助理升级为小部件屏,承载了用户统一查看并使用小部件的需求。用户可以根据自己的使用习惯和喜好,对小部件进行自定义排序。

3.3.小部件中心

当用户需要添加小部件时,可以很方便的从桌面或小部件屏中,找到小部件中心入口。小部件中心支持用户直接拖拽小部件至桌面或小部件屏。

除此之外,用户还可以在这里发现更多好看或好用的小部件,即使用户未安装对应的应用。若用户未安装应用,在小部件中心中将展示开发者上传的小部件名称与截图,以此向用户传达该小部件的价值,吸引用户添加。用户添加后,将先下载该应用,安装完成后添加对应小部件。

同时,小部件中心也支持安卓小部件的入口,用户可以通过“支持小部件应用-全部-安卓小部件”入口添加。

3.小部件产品规范

3.1.小部件的名称与介绍

开发者可以根据每个小部件的功能,为小部件撰写一个简洁的名称(2~10个汉字)。在小部件中心里,小部件名称会展示为“应用名称·小部件名称”,为了展示体验更佳,小部件名称与应用名称不得相同。

为了更好的帮助用户理解小部件的用途,开发者还需要为每个小部件撰写介绍。小部件介绍的中文长度不得超过22个中文字符,其他语言长度不超过44个中文字符(1个中文字符 = 2个特殊字符 / 2个非中文字符)。

3.2.小部件的尺寸

MIUI小部件支持2*2、4*2、4*4三种尺寸,开发者可以根据小部件信息和所需展示的功能选择合适的尺寸进行设计。

3.3.如何设计一个小部件

小部件中展示的内容由开发者定义,在开发者设计小部件时,我们建议遵循以下原则:

  • 仅展示重点信息:小部件可便捷展示简洁的信息,建议开发者选择一个与您的应用主要用途相关的功能或内容。如运动应用的小部件展示今日步数、音乐应用的小部件展示最近播放的歌曲等;
  • 与个人内容相关:当小部件与用户个人信息有关时,更容易被用户添加并使用。如日历应用在展示月视图的同时展现我的日程、电商应用的小部件展示用户最新物流信息、电影购票应用展示用户即将开场的电影票信息。
  • 根据尺寸填充不同内容:小部件中展示的信息量应该根据尺寸进行变化,如2*2的天气小部件仅展示当前温度,4*2的天气小部件可展示最近几小时的温度走势,4*4的天气小部件可展示未来多天的天气预报。
  • 避免仅跳转应用首页:小部件应该为用户提供信息外露或功能直达的价值,如果点击一个小部件仅仅是打开应用首页,大部分用户将不会添加到其桌面上。
  • 具有品牌辨识度:为了让用户能知道小部件所展示的内容来自哪个应用,建议在设计小部件时加入品牌元素,但不建议直接放APP的图标在小部件中。
  • (建议适配项)支持深色模式:小部件需要支持深色模式,在用户进入深色模式后,可以通过修改前景与背景颜色,使小部件与深色模式下的系统更加统一。如小部件未适配深色模式,也要保证在系统切换为深色模式后,小部件的显示和功能正常。
  • (建议适配项)支持无障碍:MIUI一直致力于让全球每一个人都能享受科技带来的美好生活,因此我们建议开发者设计的小部件,也支持无障碍功能,了解更多可前往小米无障碍官网(http://accessibility.miui.com/)。如小部件未适配无障碍,也要保证在系统开启无障碍talkback功能或是在“设置-无障碍-视觉”中将字体调大后,小部件的显示和功能正常,未出现截断或遮挡等异常现象。
  • (建议适配项)支持多语言:MIUI已经拥有国内外3.1亿用户,覆盖80种语言,支持221个国家与地区。在MIUI国内版中,建议开发者设计的小部件,跟随主应用适配简体中文、繁体中文、英文、维语、藏语中的全部或部分语言,并保证在系统切换为多语言后,小部件的显示和功能正常,未出现截断或遮挡等异常现象。

3.4.支持用户编辑小部件内容

MIUI小部件支持在桌面长按时,提供「编辑小部件」功能,用户点击后跳转到开发者提供的指定页面,对该小部件进行编辑。

a.普通手机设备编辑页展示效果

b.折叠屏编辑页交互规范

由于折叠屏内屏较大,负一屏/桌面的横屏/竖屏模式中,长按小部件点击“编辑”进入编辑页,都采用半屏为预览区,半屏为编辑页的样式。以图中负一屏竖屏为例:

i.编辑类型一:快捷入口合集

没有特定交互框架,没有规范,以原有手机界面为准。

ii.编辑类型二:内容选择,即时生效

所做的操作均会产生即时的影响,没有撤销方式。用以快速操作。

c.平板编辑页交互规范

i.手机上的2×2/4×2/4×4尺寸,在平板上的编辑页与在折叠屏上一样,复用折叠屏上内屏的编辑页设计资源即可。

ii.平板专属的4×2超大尺寸(详见3.a.平板小部件基本规范-尺寸),采取MIUIX设计规范里居中浮窗形式。

3.5.刷新机制

MIUI会在小部件展现时,调用对应小部件进程进行刷新。开发者也可在主应用存活时对小部件进行刷新。同时,MIUI会根据小部件的类别及当前系统状态,平衡体验与性能,智能调整小部件的刷新频率。如您的小部件需要使用日期或时间,请直接调用原生控件 AnalogClock。

怎么快速的制作一款APP,推荐使用一门APP开发平台

怎么快速的制作一款APP,推荐使用一门APP开发平台

移动互联网时代的到来,让我们每个人都深深的感受到!
我们时时刻刻都与“网”打着交道,我们用QQ,微信、社交移动应用联络,我们用贴吧,微博等手机应用分享着自己身边的新鲜故事,讨论着世界范围内的热门话题,可见移动应用产业背后的受众市场是多么的庞大,移动应用将成为这个时代的流量入口,于是移动应用制作也成为了一些商家或者个人的选用,希望在移动应用市场羽翼渐丰的时候,能在这个领域占得一片天。

不过初入行的人,不知道该怎么制作自己的app,这时候就想要颇具经验的移动应用制作官方指导,这么究竟该怎样辨别哪些移动应用制作官方的水平究竟有多高呢,怎么选用成为企业或个人比较头痛的事情?

这么小明认为,靠谱的app制作官方想要具备以下几点:

一. 专业的移动应用制作团队一定有丰富的从业经验

俗话说,外行看热闹,内行看门道,外行的企业家可能只能看到移动应用最本质的东西,比如说移动应用有个怎样的页面,移动应用想要具备怎样的功能等问题。

不过入行时间久的移动应用外包开发公司就不同样,他们有完善的全局观,能够把整个过程的预算,策划,和注意的问题全全展目前您的面前。

比如一门APP官方就提供一对一的在线咨询服务,用3分钟的时间就能帮客户梳理关于预算,预方式等一些列问题,让客户能够在工程开始时就能项目封装成app够了解到整个移动应用制作进程会怎样展开,不止如此,一门APP也是一家在移动应用制作领域移动端开发框架资质雄厚的企业,在成立的近10年里,一门APP打造了几十万个优质移动应用,是英特尔,春秋航空等知名企业的首先选用。

二. 专业的移动应用制作团队一定有完善的今后保障制度

移动应用制作市场泥沙俱下,有的移动应用制作公司既没有合格的手续,也没有解决问题的提套完善体系,更别说帮忙助力移动应用直接上架发布了,不过专业的移动应用制作团队这些肯定都是一应俱全的。

比如一门APP官方,在移动应用制作工程完工后,一门APP会将使用方法,性能介绍等210余项移动应用数据交付给企业,在今后的使用中,有任意问题,企业都能够通过在线求解等方案随时解决,同时,只要是在一门APP定制制作得移动应用,官方还无偿帮忙助力客户把移动应链接生成app用上架发布到苹果和安卓的应用商店,供消费者下载使用。

这些优点都能说明一门APP对于品质的看重和对于信誉度的看重,因此选用一门APP,绝对不会让您后悔。

选用一种含金量高,经验丰富的移动应用制作官方,其实很轻松,打开一门APP官网,点进去,就够了,后面的事情都能够迎刃而解,再不需您操心。

2022年如何快速选择一款好用便宜的APP开发工具?

2022年如何快速选择一款好用便宜的APP开发工具?

移动应用软件的流行是智能手机普及

的成果。

发展到现如今移动应用已势不可挡。

在生活中我们能使用到的移动应用软件种类越来越多,涉及的领域也越来越广,不过这还不是移动应用发展的尽头,它的发展趋势是不可估量的。

二1世纪是个注重创新的时代,对于很多有想法的年轻人和企业家来看,移动应用领域有着众多的机遇,但大多数的创业者们是因为没有相关经验很难进入移动应用市场,此时他们就想要寻找合适的制作官方。

但市面上的制作官方鱼龙混杂,很多移动应用开发官方并不能依据客户的想要制出独具特色的产品web2app,不能令客户满意。

这么为了以免这些问题创业者们到底该怎么选用移动应用开发官方?
据我所知一门APP就是一种能满足客户需求的官方,是创业者开发移动应用的首选。

一.免费1对1的需求评审

一门APP官方针对不了解移动应用开发流程的个人或企业,第一提供免费1对1需求梳理服务。

轻松来看就是初步了解个人或企业的情况和需要的是什麽样的移动应用,然后依据客户的想法进行一对一沟通,并引导客户在线提交需求,最后官方将为客户提供一套方式。

当然这个方式也不是一次性就定型的,若是在方式中仍有客户不满意的地方,客户能够随时随地的联系官方的客服进行反馈。

同时,官方还支持“一键一体”的移动应用开发模式,官方保有着大量的原生模块,对于客户有想要调整的地方,官方可通过一键一体快安卓防闪框架app速调整。

除此之外,免费的1对1需求评审还能为客户提供二四小h5app时客服咨询、制作预算单等一系列服务,真正做到想客户之所想,实现官方以满足客户的需求的目标。

二.质量高好评多

我们在选用一种移动应用 定制官方使往往会最先研究的是该官方往日的案例和受到好评度。

就好像我们在网络上购物同样的心态,所谓“货比3家”比的就是质量、费用和评价。

从这些方面来考察,一门APP绝不会令你失望。

对于质量和评价,从一门APP曾为英特尔、春秋航空等知名企业开发的移动应用,官方移动应用生成的数量高达五0万+,并受到众多企业的一致好评就得以体现。

对于费用,官方也是明码标价,依据客户不同层次的需求制定不同的预算表。

总之,一门APP的移动应用定制官方就是全心全意为客户服务的官方。

注册小米开放平台开发者账号常见问题

本文档介绍了开发者账号常见问题,您可通过了解以下内容,自助解决问题。

1、注册开发者账号时,提示注册信息(开发者名称,注册邮箱,手机号码等)已被注册?

  • 一个身份证/营业执照/邮箱/手机号码只能注册一个开发者账号,出现此提示,则说明相关证件已经注册了开发者信息,不能再次进行注册。请您与公司内部人员进行核实。
  • 如果您无法找到之前注册账号的信息,可以通过开发者账号资料修改操作指南,重新绑定登录信息或者注销您之前的账号并重新注册。

2、原账号丢失,找不回了,请问怎么办/之前账号的员工离职,账号没有交接,请问怎么找回来/开发者账号密码如何找回?

  • 如果您无法自行找回,您可以通过开发者账号更换登录邮箱的方式找回账号的管理权,开发者账号更换注册邮箱/重新绑定注册邮箱:https://dev.mi.com/distribute/doc/details?pId=1068
  • 您可以选择对当前开发者账号进行账号注销操作,在注销成功后便可重新注册开发者账号。

注意:注销开发者账号,其下的应用及相关SDK服务将一并删除,请慎重确认是否注销开发者账号。

开发者账号注销流程请参见:https://dev.mi.com/distribute/doc/details?pId=1068

3、管理员或企业认证后,信息填写错误想要修改,如何解决?

如果填写企业信息提示信息不一致(如下图),建议再次核实填写的信息与实际信息是否一致,如确无问题,请提供贵司公司名称,信用代码,法人姓名至工单系统;

认证过程中,无法进行修改,您可走完账号注册流程后进行相关信息的修改。

4、小米帐号绑定手机号码/邮箱因员工离职或者停用而无法验证,如何更改手机号码/邮箱?

修改安全手机号、安全邮箱帐号、密码、密保等小米帐号信息仅支持开发者自行修改,处理方式如下:

温馨提示:如果使用小米帐号遇到异常情况时可以自行联系小米帐号团队 xiaomi-account-dev@xiaomi.com ;如果是申述被拒绝的发邮件也无法帮助通过,请直接按照“企业开发者账号更换登录邮箱”方式解决。

5、之前注册的开发者账号已审核通过,为什么再次登录又提示注册呢?

首先,请您核实登录邮箱或小米账号是否登录正确,并清除网页缓存后重新尝试登录,若还是无法解决问题,可提供注册邮箱,通过工单咨询的方式解决。

6、如何修改账号主体信息,比如公司名称等?

  • 您登录开发者账号,进入右上角资料修改界面,在该页面即可修改主体信息,修改开发者账号主体信息是需要提交审核的。
  • 审核时间是1-3个工作日,审核期间不会影响到账号内的应用状态的,在此期间,请耐心等候,最终审核结果会通过邮件的方式发送到您的邮箱的。

具体流程可参见:开发者账号资料修改指南

注意:务必保证填写的公司名称、公司注册名称等信息与营业执照内公司名称等相应信息保持一致以及应用信息内有关开发者信息与开发者账号主体信息一致。

7、港澳台地区如何注册开发者账号?

目前的开发者身份支持港澳台地区,在选择企业类型时,直接选择港澳台企业即可。具体操作流程您可参考账号注册文档:企业开发者账号注册流程

8、海外开发者如何注册开发者账号?

针对海外开发者账号及应用分发问题我们拥有专门海外开发者支持专员Xiaomi App Store Overseas Developer Support Team,请您将问题反馈至邮箱overseas-dev@xiaomi.com,海外开发者账号后台入口:https://dev.mi.com/en

海外版应用商店目前暂不支持pc端查看应用,请您使用海外版手机查看。

9、账号是否支持子账号管理?/开发者账号是否支持多个账号管理

目前小米开发者账号是暂时无法支持多个子账号同时管理一个账号的,还请您直接使用开发者账号登录并管理您的应用。

10、事业单位无营业执照如何注册开发者账号?

事业单位若无法提供营业执照,企业类型可选择“其他组织”进行认证并按照系统提示填写信息 ,具体可参考文档:企业开发者账号注册流程

11、选择邮寄纸质材料方式认证,这些材料具体是哪些?

您在填写完成企业信息后选择邮寄纸质材料,我们将会在审核通过后短信通知您提供相应材料。

使用纸质材料审核的企业,要求提供字迹清晰并加盖公章的材料:

  • 企业认证申请表(在您填写完企业信息后,选择点击寄材料,会自动生成该申请表)。
  • 三证合一的营业执照副本复印件
  • 法定代表人身份证正反面复印件
  • 账户管理人身份证正反面复印件(如果法人亲自管理,则提交法人的即可)

如何修改小米开发者账号密码与账号信息

开发者账号密码修改

适用场景:

公司人员交接,开发者账号绑定的手机号码及邮箱可正常接收查看验证码。

操作方法/路径:

1、登陆小米账号管理页面(https://account.xiaomi.com);

2、完成对账号密码的修改(安全邮箱、安全手机号码等均可进行修改)。

企业开发者账号更换登录邮箱

适用场景:

原注册员工离职,无法找回账号;需要更改开发者管理应用;注册或者更改公司名称提示“已存在”。

操作方法/路径:

1、进入问题工单系统,按以下问题描述格式提供相关信息,申请协助处理。

工单主题:【企业开发者账号更换登录邮箱】

工单问题描述:

  • 贵公司企业名称:
  • 贵公司营业执照扫描件:
  • 需要绑定到小米账号的新的登录邮箱(公司必须使用企业邮箱且该邮箱未注册开发者账号):
  • 需要绑定到的新登录邮箱所对应的小米账号ID(非手机号码):
  • 原账号下应用的名称和包名:(未上传过应用,请填写“无”)
  • 信息变更申请表:点击下载模板(请加盖公章)
  • 公司座机和联系人手机:

注:登录邮箱和小米账号必须是一对一绑定的,且没有注册过小米开发者,

请您先和公司内部同事进行确认贵司的企业营业执照是否已被其他部门注册了企业开发者,如果是,请贵司内部进行协商后确认账号是否统一管理。

注:以上解决方式仅限于仅开通开发者且未开通广告商的账号,如旧账号同时开通了开发者账号和广告商账号(开发者需自行内部核实),请先按照以上邮件信息格式联系ad-audit@xiaomi.com,进行核实账号资质,以同步推广账号和资金。因未先联系广告邮箱带来的后续问题,需开发者自行承担。

开发者账号注销

适用场景:

员工离职账号无法找回、账号不再使用、账号需注销重新注册。

注:开发者账号注销后,其下的应用及已接入服务将一并删除,请谨慎选择。

操作方法/路径:

1、进入问题工单系统,按以下问题描述格式进行反馈:

问题描述主题:【开发者账号注销申请】

问题描述内容:

  • 贵公司企业名称:(个人开发者可不提供)
  • 企业营业执照扫描件:(个人开发者可不提供)
  • 法人或个人开发者手持身份证:
  • 加盖企业公章或个人开发者签名的注销申请书:(申请内容自拟,无明确要求)
  • 注册邮箱账号:
  • 注销原因:

2、收到反馈后,我们会在1-2个工作日内为您处理完成。

个人开发者账号转换为企业开发者账号

适用场景:

原有开发者账号无法满足上传应用需求,需要转换开发者账户类型。

注:不支持企业开发者账号转换为个人开发者账号;开发者账号类型转换后,其下的应用数据无任何影响。

操作方法/路径:

1、登录小米开放平台,点击右上角用户名“资料修改”;

2、点击基本资料账户类型处“升级为企业开发者”,按后续提示操作即可。

企业开发者账号主体、认证信息修改

适用场景:

公司营业执照更新、公司名称变更。

注:修改完主体信息的开发者账户,需在应用apk包中修改开发者名称,才可以在应用中显示最新主体名称。

操作方法/路径:

1、方式一:登录开发者账号,进入右上角资料修改界面,在该页面即可修改主体信息。

修改开发者账号主体信息是需要提交审核的,审核时间是1-3个工作日,审核期间不会影响到账号内的应用状态的,最终审核结果会通过邮件的方式发送到开发者邮箱。

注:务必保证填写的公司名称、公司注册名称等信息与营业执照内公司名称等相应信息保持一致以及应用信息内有关开发者信息与开发者账号主体信息一致。

2、方式二:通过认领的方式来实现应用主体的迁移。

在小米开放平台创建开发者账号后,再通过认领流程将该应用转移至开发者新的账号下管理。

企业开发者账号注册流程https://dev.mi.com/distribute/doc/details?pId=1145

应用认领操作指南 :https://dev.mi.com/distribute/doc/details?pId=1076

小米开放平台被下架应用申诉线上化操作指南

很多客户的APP在成功上架了小米应用市场之后会由于各种原因被市场下架已经上架的APP,这里就需要对被下架的应用进行申诉上线的操作。

一、适用范围

1、适用对象:本功能适用于应用,游戏(含预约、内测、正式)。

2、适用状态:当前应用处于被下架状态。

二、操作指南

1、应用被下架与应用被下架后删除的同学都需点击发起更新或添加新应用进行操作,在填写包名时界面会跳转到”更新版本“的界面。

图:点击更新或者新建应用

2、点击“更新版本”填写应用相关信息。

图:更新版本

3、应用信息填写完成后点击“提交审核”系统将自动跳出申诉页面。

图:提交应用信息并提交审核

4、成功上传申诉材料后,点击“确定”。

图:上传申诉材料

5、填写无误后,系统会提示您提交审核已成功。

图:上传审核

以上是被下架应用申诉线上化的全部内容,如果您看完此文档后仍有问题,可与我们取得联系。

应用开发者请进入问题工单系统,进行反馈;游戏开发者联系mi-gamebd@xiaomi.com。

如果你在APP新上架或者是已上架应用被下架的处理过程中还有其他疑问,你也可以联系我们一门APP打包平台在线客服进行咨询。

小米开放平台应用更新、修改操作指南

应用更新

已发布的应用,如需更新新版本,请参照以下流程。

小米应用商店支持应用同版本更新,根据小米应用商店系统逻辑要求,将apk_hash改变后,即可进行同版本更新。

1、进入应用管理界面,点击“管理”按钮进入应用详情页。

图:点击管理进入应用详情页

2、点击应用详情页“更新版本”按钮,即可进入完善资料-测试审核-发布上线的流程。

图:点击更新版本去更新应用版本

3、上传完成应用安装包,如应用包括拓展包与安装包,请一并上传。

图:上传应用安装包

项目

说明备注其他
单包上传支持上传32位、64位安装包或32/64位兼容包具体相关内容请参考32/64分包上传说明
双包上传需同时上传32位和64位两个安装包
主扩展包基本包的补充扩展软件
副扩展包若您需要上传两个扩展包,请将第二个扩展包上传至副扩展包处
图:应用安装包说明

4、若您的应用被检测到需要获取用户的敏感权限,请您按照相关权限项目进行说明,以便用户理解您获得权限的目的。

图:应用敏感权限说明
项目说明备注
获取定位您的应用将会获取用户定位,请您说明获取定位的目的
拨打电话您的应用将会利用用户设备拨打电话,请您说明拨打电话的目的
读取联系人您的应用将会获取用户联系人信息,请您说明读取联系人的目的
获取手机信息您的应用将会获取用户手机信息,请您说明获取手机信息的目的
录音您的应用将会获取为用户录音,请您说明获取录音的目的
图:敏感权限说明示例

5、完善应用的发布设置,根据需要选择应用的兼容设备、分类、发布地区与上线时间方式。

图:设置应用上线时间
项目说明备注
兼容设备您的应用可下载与使用的设备类型
一级分类包含VR、实用工具、影音视听、聊天社交、图书阅读、学习教育、效率办公、时尚购物、居家生活、旅行交通、摄影摄像、医疗健康、体育运动、新闻咨询、娱乐消遣、金融理财等分类选择符合应用主要功能的分类项目,如应用符合多个分类,则可以自由选择,但不能选择无关的分类
二级分类根据一级分类对您的应用进行再次细分
分发地区应用可以下载并适用的地区如勾选其他海外地区,审核通过后,应用将会根据选择发布到对应海外地区
上线时间方式应用通过审核后上线时间方式选择如对上线时间无特殊要求,可选择“审核通过后立即上线”。如选择定时发布,则无法取消或更改时间
图:应用上线时间说明

6、填写应用本地化语言信息,星号标注为必填项,填写完毕请阅读小米应用商店应用品牌展示图注意事项并勾选“我已阅读并同意”。

图:填写应用本地化语言信息
项目说明备注
应用名称上传应用的官方全称具体审核规范请参考应用审核规范
应用图标展示在用户桌面的应用图标,需与apk包内图标一致具体审核规范请参考应用审核规范
版本名应用版本的标识号开发者每次更新应用时,版本名要大于上一次版本名,否则无法提交应用审核
开发者名称展示给用户的开发者名称应用信息内填写的开发者名称与提交应用审核使用的账号主体内开发者信息需保持一致
关键字用户通过关键字搜索到应用可以提供多个关键字,以空格隔开
一句话简介以一句话简单介绍应用勿使用极限词和虚假承诺等违反新广告法的内容;勿使用疑问、反问等句式;保持在17个汉字或34个字符之内,句末勿加标点。
应用介绍对应用功能、亮点的准确介绍,吸引用户如实介绍应用功能和亮点,方便用户快速上手,勿呈现过多的SEO优化和空行
隐私政策为了保护用户隐私而制定的政策措施,内容须包括该APP收集使用个人信息的目的、方式和范围具体政策参考应用添加隐私政策声明的重要通知
官网链接非必填。您公司官方网站的地址
测试账号非必填。若您的应用需要注册账号才能使用,请提供可以用于测试的账号与密码该账号将用于应用审核流程,将不会展示给用户
图:本地化语言信息说明
图:上传应用截图和视频介绍
项目说明备注
应用截图应用内相关场景截图
手机截图使用手机操作应用时呈现的截图应用图片信息如需使用到手机外观图片,禁止使用 iPhone 或其他品牌手机外观素材,应用图片信息中系统状态栏禁止存在与本应用无关的第三方应用图标
应用视频介绍非必填。以视频的形式介绍您的应用应用视频在驳回状态是无法删除的,请在重新提交审核后发送应用视频删除申请至问题工单系统
应用品牌展示图非必填。是小米应用商店为开发者提供的一项对应用品牌的直观展示服务该项已不展示给用户
图:应用截图和视频介绍说明

7、完善行业资质证明。

注:在行业资质证明模块提交的材料无法删除,若您未上传原有材料而仅提交新材料,原有材料将会被新上传材料替换。

图:上传应用资质
项目说明备注
ICP 备案号国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务开发者需要提供ICP备案截图,或ICP证和ICP备案号以证明资质
版权证明APP电子版权认证证书为您的app电子版的著作权证明,纸质软件著作权证书为您的app知识产权证明文件
免责承诺函对于承诺书的中提到的内容免除责任的一种形式相关承诺函模板请参考常见保证(承诺)函模板,若应用不符合单本图书/书城类、理财类、医疗类三种中的一种,建议开发者提供书城类承诺函
特殊资质代理证书金融理财类、影音视听类、图书阅读类、新闻资讯类、实用工具类、聊天社交类、医疗健康类应用需提交ICP证或ICP备案截图等资质或代理授权书具体要求请参考特殊行业资质要求
应用安全评估报告针对具有舆论属性或社会动员能力的互联网信息服务的主体进行评估后产出的报告非必填项,按需填写
图:应用资质说明

​8、完善联系人信息并提交审核。

图:添加联系人信息

注:若未出现【联系人信息】模块或在【联系人信息】板块如果未展示输入验证码,请在【本地化语言信息】板块将本地化语言切换为简体中文。

图:选择中文本地化语言信息

9、提交审核后应用状态更新为等待审核,我们会在1-3个工作日内为您审核。

图:提交审核

应用信息修改

针对已上线的版本,我们支持进行应用资料信息修改,请参照以下流程。

1、进入应用详情页,点击“查看资料”按钮。

图:点应用查看资料按钮

2、点击“编辑资料”按钮,即可进入完善资料页面,后续流程与更新应用的3-9流程一致。

注:

  • 应用在驳回状态下不支持点击“编辑资料”按钮进行修改,如需修改,需点击“更新版本”按钮,才可在重新提交应用审核的时候进行修改。
  • 修改应用信息不支持修改应用名称,如需修改应用名称,可在提交审核或者版本更新状态下修改。
图:编辑应用资料

以上为应用更新、修改相关流程内容,如您仍有问题,可进入问题工单系统,与我们取得联系。

小米开放平台应用创建操作指南

1、登录小米应用商店开发者站官网,点击“创建应用”,即可开始应用首次创建。

图:登录小米应用商店开发者站官网创建应用


2、点击“创建应用”及进入创建包名页面,在此页面您需要填写语言、操作系统、应用名称、应用包名等信息。

图:输入应用信息
项目说明备注
默认语言应用展示与操作时默认呈现给用户的语言类别
操作系统应用适用的系统
应用名称上传应用的官方全称
应用包名应用的唯一标识不可创建已存在包名
图:应用信息说明

3、创建包名后,进入到完善资料页,完成应用安装包的上传,如应用包括拓展包与安装包,请一并上传。

图:上传安装包
项目说明备注
单包上传支持上传64位安装包或32/64位兼容包具体相关内容请参考32/64分包上传说明
双包上传需同时上传32位和64位两个安装包
主扩展包基本包的补充扩展软件
副扩展包若您需要上传两个扩展包,请将第二个扩展包上传至副扩展包处
图:安装包说明

4、若您的应用被检测到需要获取用户的敏感权限,请您按照相关权限项目进行说明,以便用户理解您获得权限的目的。

图:应用敏感权限说明
项目说明备注
获取定位您的应用将会获取用户定位,请您说明获取定位的目的
拨打电话您的应用将会利用用户设备拨打电话,请您说明拨打电话的目的
读取联系人您的应用将会获取用户联系人信息,请您说明读取联系人的目的
获取手机信息您的应用将会获取用户手机信息,请您说明获取手机信息的目的
录音您的应用将会获取为用户录音,请您说明获取录音的目的
图:敏感权限说明示例

5、完善应用的发布设置,根据需要选择应用的兼容设备、分类、发布地区与上线时间方式。

图:应用发布设置
项目说明备注
兼容设备您的应用可下载与使用的设备类型
一级分类包含VR、实用工具、影音视听、聊天社交、图书阅读、学习教育、效率办公、时尚购物、居家生活、旅行交通、摄影摄像、医疗健康、体育运动、新闻咨询、娱乐消遣、金融理财等分类选择符合应用主要功能的分类项目,如应用符合多个分类,则可以自由选择,但不能选择无关的分类
二级分类根据一级分类对您的应用进行再次细分
分发地区应用可以下载并适用的地区如勾选其他海外地区,审核通过后,应用将会根据选择发布到对应海外地区
上线时间方式应用通过审核后上线时间方式选择如对上线时间无特殊要求,可选择“审核通过后立即上线”。如选择定时发布,则无法取消或更改时间。
图:发布设置

6、填写应用本地化语言信息,星号标注为必填项,填写完毕请阅读小米应用商店应用品牌展示图注意事项并勾选“我已阅读并同意”。

图:填写应用本地化语言信息
项目说明备注
应用名称上传应用的官方全称具体审核规范请参考应用审核规范
应用图标展示在用户桌面的应用图标,需与apk包内图标一致具体审核规范请参考应用审核规范
版本名应用版本的标识号
开发者名称展示给用户的开发者名称应用信息内填写的开发者名称与提交应用审核使用的账号主体内开发者信息需保持一致
关键字用户通过关键字搜索到应用可以提供多个关键字,以空格隔开
一句话简介以一句话简单介绍应用勿使用极限词和虚假承诺等违反新广告法的内容;勿使用疑问、反问等句式;保持在17个汉字或34个字符之内,句末勿加标点。
应用介绍对应用功能、亮点的准确介绍,吸引用户如实介绍应用功能和亮点,方便用户快速上手,勿呈现过多的SEO优化和空行。
隐私政策为了保护用户隐私而制定的政策措施,内容须包括该APP收集使用个人信息的目的、方式和范围具体政策参考应用添加隐私政策声明的重要通知
官网链接非必填。您公司官方网站的地址
测试账号非必填。若您的应用需要注册账号才能使用,请提供可以用于测试的账号与密码该账号将用于应用审核流程,将不会展示给用户
图:本地化语言信息说明
图:填写应用信息
项目说明备注
应用截图应用内相关场景截图
手机截图使用手机操作应用时呈现的截图应用图片信息如需使用到手机外观图片,禁止使用 iPhone 或其他品牌手机外观素材,应用图片信息中系统状态栏禁止存在与本应用无关的第三方应用图标。
应用视频介绍非必填。以视频的形式介绍您的应用应用视频在驳回状态是无法删除的,请在重新提交审核后发送应用视频删除申请至问题工单系统
应用品牌展示图非必填。是小米应用商店为开发者提供的一项对应用品牌的直观展示服务该项已不展示给用户
图:应用信息说明

7、完善行业资质证明。

图:上传应用资质信息
项目说明备注
ICP 备案号国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务开发者需要提供ICP备案截图,或ICP证和ICP备案号以证明资质
版权证明APP电子版权认证证书为您的app电子版的著作权证明,纸质软件著作权证书为您的app知识产权证明文件
免责承诺函对于承诺书的中提到的内容免除责任的一种形式相关承诺函模板请参考常见保证(承诺)函模板,若应用不符合单本图书/书城类、理财类、医疗类三种中的一种,建议开发者提供书城类承诺函
特殊资质代理证书金融理财类、影音视听类、图书阅读类、新闻资讯类、实用工具类、聊天社交类、医疗健康类应用需提交ICP证或ICP备案截图等资质或代理授权书具体要求请参考特殊行业资质要求
应用安全评估报告针对具有舆论属性或社会动员能力的互联网信息服务的主体进行评估后产出的报告
非必填项,按需填写
图:应用资质说明

8、完善联系人信息并提交审核。

图:填写联系人信息

注:若未出现【联系人信息】模块或在【联系人信息】板块如果未展示输入验证码,请在【本地化语言信息】板块将本地化语言切换为简体中文。

图:选择中文本地化语言信息

9、提交审核后应用状态更新为等待审核,我们会在1-3个工作日内为您审核。

图:提交审核

以上为应用创建与发布流程内容,如您仍有问题,可进入问题工单系统,与我们取得联系。

小米开放平台开发者账号注册常见问题

1、注册开发者账号时,提示注册信息(开发者名称,注册邮箱,手机号码等)已被注册?

  • 一个身份证/营业执照/邮箱/手机号码只能注册一个开发者账号,出现此提示,则说明相关证件已经注册了开发者信息,不能再次进行注册。请您与公司内部人员进行核实。
  • 如果您无法找到之前注册账号的信息,可以通过开发者账号资料修改操作指南,重新绑定登录信息或者注销您之前的账号并重新注册。

2、原账号丢失,找不回了,请问怎么办/之前账号的员工离职,账号没有交接,请问怎么找回来/开发者账号密码如何找回?

  • 如果您无法自行找回,您可以通过开发者账号更换登录邮箱的方式找回账号的管理权,开发者账号更换注册邮箱/重新绑定注册邮箱:https://dev.mi.com/distribute/doc/details?pId=1068
  • 您可以选择对当前开发者账号进行账号注销操作,在注销成功后便可重新注册开发者账号。

注意:注销开发者账号,其下的应用及相关SDK服务将一并删除,请慎重确认是否注销开发者账号。

开发者账号注销流程请参见:https://dev.mi.com/distribute/doc/details?pId=1068

3、管理员或企业认证后,信息填写错误想要修改,如何解决?

如果填写企业信息提示信息不一致(如下图),建议再次核实填写的信息与实际信息是否一致,如确无问题,请提供贵司公司名称,信用代码,法人姓名至工单系统;

认证过程中,无法进行修改,您可走完账号注册流程后进行相关信息的修改。

图:上传资料不一致

4、小米帐号绑定手机号码/邮箱因员工离职或者停用而无法验证,如何更改手机号码/邮箱?

修改安全手机号、安全邮箱帐号、密码、密保等小米帐号信息仅支持开发者自行修改,处理方式如下:

温馨提示:如果使用小米帐号遇到异常情况时可以自行联系小米帐号团队 xiaomi-account-dev@xiaomi.com ;如果是申述被拒绝的发邮件也无法帮助通过,请直接按照“企业开发者账号更换登录邮箱”方式解决。

5、之前注册的开发者账号已审核通过,为什么再次登录又提示注册呢?

首先,请您核实登录邮箱或小米账号是否登录正确,并清除网页缓存后重新尝试登录,若还是无法解决问题,可提供注册邮箱,通过工单咨询的方式解决。

6、如何修改账号主体信息,比如公司名称等?

  • 您登录开发者账号,进入右上角资料修改界面,在该页面即可修改主体信息,修改开发者账号主体信息是需要提交审核的。
  • 审核时间是1-3个工作日,审核期间不会影响到账号内的应用状态的,在此期间,请耐心等候,最终审核结果会通过邮件的方式发送到您的邮箱的。

具体流程可参见:开发者账号资料修改指南

注意:务必保证填写的公司名称、公司注册名称等信息与营业执照内公司名称等相应信息保持一致以及应用信息内有关开发者信息与开发者账号主体信息一致。

7、港澳台地区如何注册开发者账号?

目前的开发者身份支持港澳台地区,在选择企业类型时,直接选择港澳台企业即可。具体操作流程您可参考账号注册文档:企业开发者账号注册流程

8、海外开发者如何注册开发者账号?

针对海外开发者账号及应用分发问题我们拥有专门海外开发者支持专员Xiaomi App Store Overseas Developer Support Team,请您将问题反馈至邮箱overseas-dev@xiaomi.com,海外开发者账号后台入口:https://dev.mi.com/en

海外版应用商店目前暂不支持pc端查看应用,请您使用海外版手机查看。

9、账号是否支持子账号管理?/开发者账号是否支持多个账号管理

目前小米开发者账号是暂时无法支持多个子账号同时管理一个账号的,还请您直接使用开发者账号登录并管理您的应用。

10、事业单位无营业执照如何注册开发者账号?

事业单位若无法提供营业执照,企业类型可选择“其他组织”进行认证并按照系统提示填写信息 ,具体可参考文档:企业开发者账号注册流程

图:选择其他组织认证事业单位开发者账号

11、选择邮寄纸质材料方式认证,这些材料具体是哪些?

您在填写完成企业信息后选择邮寄纸质材料,我们将会在审核通过后短信通知您提供相应材料。

使用纸质材料审核的企业,要求提供字迹清晰并加盖公章的材料:

  • 企业认证申请表(在您填写完企业信息后,选择点击寄材料,会自动生成该申请表)。
图:认证方式选择
  • 三证合一的营业执照副本复印件
  • 法定代表人身份证正反面复印件
  • 账户管理人身份证正反面复印件(如果法人亲自管理,则提交法人的即可)

以上为开发者常见问题内容,如您仍有问题,可进入问题工单系统,与我们取得联系。

小米开放平台开发者账号资料修改操作指南

开发者账号密码修改

适用场景:

公司人员交接,开发者账号绑定的手机号码及邮箱可正常接收查看验证码。

操作方法/路径:

1、登陆小米账号管理页面(https://account.xiaomi.com);

图:登陆小米账号管理页面

2、完成对账号密码的修改(安全邮箱、安全手机号码等均可进行修改)。

企业开发者账号更换登录邮箱

适用场景:

原注册员工离职,无法找回账号;需要更改开发者管理应用;注册或者更改公司名称提示“已存在”。

操作方法/路径:

1、进入问题工单系统,按以下问题描述格式提供相关信息,申请协助处理。

工单主题:【企业开发者账号更换登录邮箱】

工单问题描述:

  • 贵公司企业名称:
  • 贵公司营业执照扫描件:
  • 需要绑定到小米账号的新的登录邮箱(公司必须使用企业邮箱且该邮箱未注册开发者账号):
  • 需要绑定到的新登录邮箱所对应的小米账号ID(非手机号码):
  • 原账号下应用的名称和包名:(未上传过应用,请填写“无”)
  • 信息变更申请表:点击下载模板(请加盖公章)
  • 公司座机和联系人手机:

注:登录邮箱和小米账号必须是一对一绑定的,且没有注册过小米开发者,

请您先和公司内部同事进行确认贵司的企业营业执照是否已被其他部门注册了企业开发者,如果是,请贵司内部进行协商后确认账号是否统一管理。

注:以上解决方式仅限于仅开通开发者且未开通广告商的账号,如旧账号同时开通了开发者账号和广告商账号(开发者需自行内部核实),请先按照以上邮件信息格式联系ad-audit@xiaomi.com,进行核实账号资质,以同步推广账号和资金。因未先联系广告邮箱带来的后续问题,需开发者自行承担。

开发者账号注销

适用场景:

员工离职账号无法找回、账号不再使用、账号需注销重新注册。

注:开发者账号注销后,其下的应用及已接入服务将一并删除,请谨慎选择。

操作方法/路径:

1、进入问题工单系统,按以下问题描述格式进行反馈:

问题描述主题:【开发者账号注销申请】

问题描述内容:

  • 贵公司企业名称:(个人开发者可不提供)
  • 企业营业执照扫描件:(个人开发者可不提供)
  • 法人或个人开发者手持身份证:
  • 加盖企业公章或个人开发者签名的注销申请书:(申请内容自拟,无明确要求)
  • 注册邮箱账号:
  • 注销原因:

2、收到反馈后,我们会在1-2个工作日内为您处理完成。

个人开发者账号转换为企业开发者账号

适用场景:

原有开发者账号无法满足上传应用需求,需要转换开发者账户类型。

注:不支持企业开发者账号转换为个人开发者账号;开发者账号类型转换后,其下的应用数据无任何影响。

操作方法/路径:

1、登录小米开放平台,点击右上角用户名“资料修改”;

图:修改资料入口

2、点击基本资料账户类型处“升级为企业开发者”,按后续提示操作即可。

图:账号升级

企业开发者账号主体、认证信息修改

适用场景:

公司营业执照更新、公司名称变更。

注:修改完主体信息的开发者账户,需在应用apk包中修改开发者名称,才可以在应用中显示最新主体名称。

操作方法/路径:

1、方式一:登录开发者账号,进入右上角资料修改界面,在该页面即可修改主体信息。

修改开发者账号主体信息是需要提交审核的,审核时间是1-3个工作日,审核期间不会影响到账号内的应用状态的,最终审核结果会通过邮件的方式发送到开发者邮箱。

注:务必保证填写的公司名称、公司注册名称等信息与营业执照内公司名称等相应信息保持一致以及应用信息内有关开发者信息与开发者账号主体信息一致。

2、方式二:通过认领的方式来实现应用主体的迁移。

在小米开放平台创建开发者账号后,再通过认领流程将该应用转移至开发者新的账号下管理。

企业开发者账号注册流程https://dev.mi.com/distribute/doc/details?pId=1145

应用认领操作指南 :https://dev.mi.com/distribute/doc/details?pId=1076

注:小米ID获取方式:

访问网址https://account.xiaomi.com登录小米账号,如下图所示红框内即为小米ID。

图:获取小米ID

以上为开发者账号管理操作指南内容,如您仍有问题,可进入问题工单系统,与我们取得联系。

小米开放平台企业开发者账号注册操作指南

账号类型及所需材料

图:企业开发者账号注册所需资料

操作流程

1、点击小米开发者站的右上角注册小米账号;若已有小米账号,使用已有小米账号完成以下认证(需确认已有小米账号未进行开发者认证);

注:若小米账号已注册过主题开发者身份,则无法注册开发者账号;若需要注册开发者账号,则需注销该账号下的主题开发者身份再进行申请注册开发者账号。

图:账号注册

2、选择开发者账户类型为“企业开发者”;

图:选择为企业开发者

3、认真阅读相关合同条款,并勾选“我已经阅读并同意上述协议内容”;

图:服务条款

4、填写公司基本资料 ;

新增企业组织类型的选项为:企业、政府/事业单位、港澳台企业、其他组织。请根据自身需要选择组织类型(相关账号权益与所需材料可查询该文档第一模块)。

图:填写企业信息

如果您是港澳台企业或政府/事业单位,请先完成机构信息与企业法人代表资料填写;

图:港澳台企业或政府事业单位信息填写
图:上传企业法人资料

5、填写企业联系人信息;

图:填写联系人信息

6、填写企业的相关信息,请点击“开始认证”跳转至企业管理员实名认证页面;

图:开始认证企业资质

7、使用手机扫码(微信扫码即可)后进行企业管理员实名认证,成功后点击进入下一步,跳转至企业信息填写页面;

图:管理员扫码认证

8、在手机端进行企业实名认证;

注:在姓名、手机号码和身份证一致的情况下,刷脸认证已被取消。如果不一致则无法通过申请人认证环节。

图:扫码后填写相关资料

9、管理员认证完成后,需填写相应的企业信息并完成企业认证,认证方式有两种:对公打款认证与纸质材料认证;

对公打款认证:完善相应信息后点击下一步,系统会发送邮件和短信通知您已发起打款申请。通知发出后30分钟~3个工作日内,会向对公银行账号中汇入一笔验证资金,不会从该账户扣款。收到打款后,登录小米开放平台进入“对公打款”输入打款金额并提交认证,系统审核后给出认证结果。

纸质材料认证:对于没有对公账户,或不方便提供对公账户的企业/机构,可以通过提交纸质材料方式进行企业实名认证;需要将提交认证的相关纸质材料,加盖公章复印件,审核备案后,企业认证通过(法人身份在线审核,授权代理人需邮寄至法大大公司总部审核,时间一般为1-7个工作日,如情况紧急,可优先选择对公打款认证)。

注:深圳法大大网络科技有限公司为小米应用商店第三方合作认证公司,我司与法大大公司均会对开发者所有材料进行保密。

图:填写相关信息后对公打款验证

10、如选择“对公打款认证”选项,在收到打款申请通知后的3个工作日内,请关注打款结果并提交认证;

收到打款后,登录小米开放平台进入“对公打款”输入打款金额并提交认证,系统审核后给出认证结果。

注:若您有核对账单的需求,需要返回对公打款,您可选择您所需要的账户进行退回。

对公打款退款账户:

①15000099319124 深圳法大大网络科技有限公司,平安银行杭州分行营业部

②755929597010903 深圳法大大网络科技有限公司,招商银行深圳分行深圳软件基地支行

11、认证完毕后选填相应的资质认证,点击注册即可提交审核;

12、申请将在1-3个工作日内审核完毕。您可以通过登录开发者站查询结果,审核完成后,将向您的注册邮箱及联系人邮箱发送审核结果。

以上为开发者账号注册流程内容,如您仍有问题,可进入问题工单系统,与我们取得联系。