小米展示图规则须知

小米展示图规则须知

上传的预览图将在小部件商店您应用的详情页面进行展示,需要您保证您的预览图符合符合如下规范:

1. 需上传对应小部件的展示图,用于小部件商店中展示;

2. 预览图尺寸为:

2*2:  440*440 px

4*2:  948*440 px

4*4: 948*1000 px

3. 像素值需适配不同的设备和屏幕(1080p屏和2k屏),并兼容桌面的不同布局;

4. 预览图圆角 :小部件商店的预览图圆角为38px;

5. 预览图内如需使用到手机外观图片,必须使用小米手机外观,禁止使用 iPhone 或其他品牌手机外观素材;

小米MIUI小部件审核规范

小米MIUI小部件审核规范

本文档介绍了MIUI收录小部件的一些原则,您可通过阅读本文档,对MIUI小部件审核规范有一定了解。本文档会及时更新并完善,每一次的修改都是基于优化用户的体验、公平对待所有开发者出发。我们重视用户体验如同珍视生命一般,希望您也如我们一样。

1.MIUI 小部件所属应用规范

  • 确保小部件所属应用遵循对应的审核规范 https://dev.mi.com/distribute/doc/details?pId=1080
  • 确保应用信息及开发者账号信息填写完整和正确
  • 确保应用正常运行且不会发生崩溃或错误
  • 确保您在应用商店提交的联系信息真实有效,以便小部件管理人员在需要时与您取得联系

2.MIUI 小部件视觉规范

2.1.尺寸规范

2.1.1.设计稿尺寸

小部件需适配不同的设备和屏幕(1080p屏和2k屏),并兼容负一屏和不同布局的桌面(4*6和5*6)。对应的尺寸像素值倍数关系:1080:2k=1:1.333,详细尺寸如下表:

2.1.2.自适应布局的实际尺寸

因小部件采用的是自适应布局,在不同设备屏幕及不同样式的桌面上,小部件的尺寸会相应变化。以下是需考虑的小部件适配兼容场景(以1080*2340分辨率为基础):

  • 桌面支持4*6和5*6布局,需保证4*6布局下完美显示,5*6布局下无显示缺陷问题 (设置方式:设置—桌面—桌面布局规则)
  • 需保证有搜索框下完美显示,无搜索框下无显示缺陷问题(设置方式:设置—桌面—桌面搜索框)
  • 需保证无虚拟键下完美显示,有虚拟键下无显示缺陷问题(设置方式:设置—桌面—系统导航方式)
  • 需保证1080p与2k分辨率的屏幕上无显示问题

基于以上场景,我们列出了各尺寸的小部件在不同设备屏幕上实际显示的最小尺寸和最大尺寸,供设计师参考。(无需单独输出设计方案,设计和验收时注意不同布局下显示是否正常即可)

2.2.其他规范

  • 圆角:1080p屏下的交付资源圆角为38px,2k屏下的交付资源圆角为50px
  • 内容安全区:1080p屏下小部件的主要内容需远离边缘约40px,2k屏下为54px
  • 小部件在浅色模式和深色模式下需能完美显示
  • 小部件在无内容场景下需使用正确的占位符和文字说明
  • 小部件的字号大小设计需让界面信息清晰易读、层次分明
  • 小部件的字色层级需符合规范
  • 小部件的字高和行高需符合规范
  • 小部件预览图: 预览图圆角为38px;若应用适配了深色模式,请同时提供深色模式的预览图

具体规范和示例详见《MIUI小部件规范》中第四部分-设计规范

3.MIUI 小部件功能规范

3.1.必须适配

  • 不支持在小部件内进行文字输入
  • 不支持在小部件内上下滑动或左右滑动
  • 调整字体显示大小后,小部件需正常显示,无遮挡、截断文字的现象
  • 小部件在无网络、无数据、无内容、未授权、未添加情况下需展示相应的异常状态
  • 小部件不得出现内容无法正常显示或无法获取等情况
  • 小部件不得出现按钮或者链接点击无反应或报错的情况
  • 支持编辑的小部件,编辑功能必须能正常使用
  • 小部件不得安装或者运行前提示或者强制用户重启设备
  • 小部件显示的实际状态应与设定的优先级对应状态相符
  • 同一id的小部件不得在前后两个版本承接不同类型的功能
  • 小部件需使用独立的后台进程,且内存未超40M
  • 小部件介绍或更新日志中介绍的功能应与实际跳转相符
  • 用户未同意应用的隐私协议时,小部件应显示兜底图,点击小部件后应跳转应用,应用内出现授权弹窗
  • 已安装的小部件在加载数据时显示占位符内容。可以通过将 UI 的静态部分与代表其内容的半透明形状相结合来创建占位符外观

3.2.建议适配

  • 小部件可选择适配无障碍talkback功能,帮助无障碍人士更好的使用小部件
  • 在无障碍“视觉”功能中调整字体大小后,小部件需正常显示,无遮挡、截断现象
  • 小部件可跟随所属应用适配多语言,选择适配多语言里的部分或全部语言(除简体中文外有繁体中文、英文、维吾尔语、藏语),并保证切换语言后功能仍可以正常使用
  • 小部件可跟随所属应用适配深色模式,并保证切换深色模式后,功能可以正常使用

4.MIUI 小部件内容规范

4.1.小部件名称

  • 小部件名称与应用名称不得相同
  • 小部件名称必须贴合小部件功能,不得添加与小部件内容无关的词语
  • 概括小部件主要功能信息,中文长度不得超过10个中文字符
  • 小部件名称与其功能相对应,不同功能的小部件应该有不同的名称
  • 小部件名称不得存在占位符文本、空格、乱码等非法字符(如:#、*、& 等)
  • 小部件名称不得包含政治敏感、色情、恐怖、暴力血腥等内容,以及国家法律法规禁止的违法内容
  • 小部件名称不得使用其他热门小部件名称或别称,也不得混有商业化用语或流行用语等与小部件功能无关的词语
  • 小部件名称不得含有小米或MIUI等其他小米元素
  • 小部件名称不得涉及赌博、彩票的内容

4.2.小部件介绍

  • 中文长度不得超过22个中文字符,其他语言长度不超过44个中文字符(1个中文字符 = 2个特殊字符 / 2个非中文字符)

举例:所属“相册”应用的小部件

小部件名称小部件介绍
自选图片添加至桌面后,点击小部件来选择图片
精选回忆为你推荐精彩照片与回忆
  • 小部件介绍应符合小部件功能,不同功能的小部件要对应不同的简介
  • 小部件介绍不得添加其他热门词语或商业化用语等与应用无关的关键字
  • 小部件介绍不得违反国家法律法规,包括但不限于法律法规中禁止使用的词语
  • 小部件介绍不得添加具有侵权内容的关键字
  • 小部件介绍不得存在占位符文本、空格、乱码等非法字符(如:#、*、& 等)
  • 小部件介绍中不得使用极限词或虚假承诺等违反新广告法的内容(如“最”“第一”“唯一”“NO.1”“必备”“免费送”“100%” “全球”“顶尖”“首”等)
  • 小部件介绍不得使用疑问、反问等句式,请用陈述语句进行描述
  • 小部件介绍的末尾禁止添加任何标点符号

小部件展示图片说明

4.3.小部件中心预览素材及跳转落地页

4.3.1.预览素材图

  • 需符合MIUI 小部件设计规范,并与实际使用场景相符合
  • 预览素材图要与实际添加到桌面上的展示保持一致
  • 不得包含任何推荐相关的角标(如“推荐”、“荐”、“热门”、“最新”、“优惠”、“惠”等)
  • 不得涉及抄袭内容
  • 不得含非法金钱交易、赌博、反政府、反社会及其他法律禁止内容
  • 不得含诽谤、人身攻击或者侮辱性的内容
  • 不得含强烈的暴力暗示,包括但不限于虐待,聚众斗殴
  • 不得含过度暴露、情色、低俗内容
  • 不得含种族歧视,破坏民族团结内容
  • 不得过度宣传酒精或者危险物品(如毒药、爆炸物等)或者鼓励未成年人消费香烟和酒精饮料
  • 不得包含具有贩卖、购买违禁物品的内容

4.3.2.跳转落地页

  • 不得涉及抄袭内容
  • 不得含非法金钱交易、赌博、反政府、反社会及其他法律禁止内容
  • 不得含诽谤、人身攻击或者侮辱性的内容
  • 不得含强烈的暴力暗示,包括但不限于虐待,聚众斗殴
  • 不得含过度暴露、情色、低俗内容
  • 不得含种族歧视,破坏民族团结内容
  • 不得过度宣传酒精或者危险物品(如毒药、爆炸物等)或者鼓励未成年人消费香烟和酒精饮料
  • 不得包含具有贩卖、购买违禁物品的内容

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小部件技术规范与系统能力说明

版本更新说明

版本更新特性更新时间
v1.0.7技术规范小部件版本号MIUI Widget 大屏适配MIUI 小部件系统能力Push透传刷新服务2022-8-19
v1.0.6技术规范页面跳转规范MIUI Widget 布局规范注意事项MIUI 小部件系统能力调起 MIUI Widget 详情页2021-9-13
v1.0.5技术规范页面跳转规范注意事项-小部件名称label应用清除数据适配MIUI 小部件系统能力跳转MIUI Widget 详情页-新增可传自定义参数判断是否支持MIUI Widget 详情页MIUI Widget 与 Activity 切换动画2021-8-26
v1.0.4技术规范MIUI Widget 布局兼容适配注意事项2021-7-5
v1.0.3技术规范MIUI Widget 独立进程尺寸适配MIUI 小部件系统能力判断是否支持MIUI Widget2021-6-23
v1.0.2MIUI 小部件系统能力修改跳转 Widget 商店里的详情页修改设置卡片状态2021-5-26
v1.0.1技术规范修改刷新机制修改 MIUI Widget 标识新增 MIUI Widget 数据恢复适配新增页面跳转规范新增布局规范MIUI 小部件系统能力修改跳转 Widget 商店里的详情页修改设置卡片状态修改跳转编辑页新增判断是否支持 MIUI Widget2021-5-6
v1.0.0初始版本2021-4-21 

简介

MIUI小部件基于原生 Android Widget,开发一个 MIUI 小部件和开发一个原生 Android Widget 基本一致,部分区别如下:

  • 为了保证整机系统用户体验,MIUI 小部件对开发者做了一些规范要求;
  • 为了拓展小部件能力,丰富可玩性,MIUI 小部件额外提供了一些调用能力;

一、小部件技术规范和要求

开发者基于MIUI小部件体系开发 Widget 时,需要满足下面的技术要求:

1.MIUI Widget 使用独立进程

1.1.描述

为了方便管理 Widget,减少 Widget 更新对后台内存的占用,提升整机的用户体验。MIUI 小部件规定 Widget 需要使用独立后台进程(后简称:Widget进程)来进行内容更新。

1.2.Widget 进程限制说明

– Widget 进程名字为” :widgetProvider ” 

– Widget 进程不能拉起其他任意进程(包括 App 主进程),同时系统也会进行相应限制

– Widget 进程内存占用不能超过 35M,执行命令( adb shell dumpsys meminfo 进程名 ) 可获取进程所占内存

– Widget 进程严禁使用 native方法(fork)拉起进程

– Widget 进程只能运行 Widget内容准备和刷新相关的逻辑

1.3.Widget 进程配置说明

<receiver android:name="com.miui.ExampleWidgetProvider"
    android:process=":widgetProvider">
    ....
</receiver>

<service android:name="com.miui.ExampleWidgetService"
    android:process=":widgetProvider" >
    ....
</service>
<provider android:name="com.miui.demo.ExampleWidgetProvider"
    android:process=":widgetProvider">
    ...
</provider>

备注:Activity不需要放在 Widget 进程中

1.4.播放器小部件适配独立进程

播放器小部件存在后台播放音频以及拉起其他进程的情况,这种特殊小部件可以运行在非 Widget 进程,但必须关闭曝光刷新,必须使用前台Service,更新UI时使用主动刷新(详细可看“MIUI 小部件系统能力说明-App主动刷新小部件”)。

1.5.其他

Widget 进程系统分配的 adj 值较高,在系统资源不足时,容易被系统回收。

2.MIUI Widget 曝光刷新适配

2.1.描述

MIUI Widget 将会去掉系统原有的定时刷新。用户滑动到有 Widget 的页面,系统会判定需要触发一次刷新并通知应用。默认 MIUI Widget 曝光不刷新,有曝光刷新需求的 MIUI Widget 需在 AndroidManifest.xml 中申请,并设定曝光刷新间隔miuiWidgetRefreshMinInterval(在间隔时间内曝光多次只会触发一次),曝光刷新间隔最短为10秒。

2.2.适配方式

<receiver android:name="com.miui.ExampleWidgetProvider" >
    ...
    // 定义是否需要曝光刷新
    <meta-data                
    android:name="miuiWidgetRefresh"                
    android:value="exposure" />
    // 定义曝光刷新的时间间隔
    <meta-data
    android:name="miuiWidgetRefreshMinInterval" 
    // 时间单位为毫秒                    
    android:value="20000" />
    // MIUI Widget 标识
    <meta-data
    android:name="miuiWidget"
    android:value="true" />

    <intent-filter>   
         //系统定时刷新             
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
        //MIUI展现刷新
        <action android:name="miui.appwidget.action.APPWIDGET_UPDATE" />    </intent-filter>
</receiver>

public class ExampleWidgetProvider extends AppWidgetProvider {
    ...
    @Override
    public void onReceive(Context context, Intent intent) {
        if ("miui.appwidget.action.APPWIDGET_UPDATE".equals(intent.getAction())) {
            int[] appWidgets = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
            onUpdate(context, AppWidgetManager.getInstance(context), appWidgets); //或者自定义刷新逻辑
        } else {
            super.onReceive(context, intent);
        }
    }
}

3.MIUI Widget 尺寸设置

3.1.描述

MIUI Widget支持 2*2、4*2、4*4三种尺寸,开发者可以根据组件信息和所需展示的功能选择合适的尺寸进行设计,并且在 resource 配置文件中指定具体的尺寸。

3.2.适配方式

每个小部件必须定义 minWidth 和 minHeight,表示默认情况下应占用的最小空间量。当用户向AppWidgetHost(如桌面,负一屏等)添加小部件时,小部件占用的宽度和高度通常会超过您指定的最小值。AppWidgetHost 为用户提供了一个可用空间网格,供用户放置小部件和图标,网格可能因设备而异。

添加小部件后,它将在水平和垂直方向进行拉伸,占用满足其 minWidth 和 minHeight 约束条件所需的最小单元格数。

虽然单元格的宽度和高度以及应用到小部件的自动外边距量可能会因设备而异,但您设置尺寸时可以参考下表中的建议大小。

规格建议minWidth(单位dp)建议minHeight(单位dp)
2*2110110
4*2300110
4*4300250

3.3.示例

根据 Widget 尺寸大小在上表中选择对应的dp值,填到对应配置文件里的 minWidth/minHeight 属性。下面以2×2的 Widget 为例,说明尺寸适配过程。

// step1:在AndroidManifest.xml中声明widegt配置文件
<receiver android:name=".ExampleAppWidgetProvider" >
   ....
    <meta-data android:name="android.appwidget.provider"
    android:resource="@xml/example_appwidget_info" />
</receiver>

// step2: example_appwidget_info中设置尺寸属性
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="@dimen/widget_min_width"
    android:minHeight="@dimen/widget_min_height"
    ....    
</appwidget-provider>

// step3: values/dimens中定义尺寸值
<dimen name="widget_min_width">110dp</dimen>
<dimen name="widget_min_height">110dp</dimen>

4.MIUI Widget 标识

4.1.描述

在 AndroidManifest.xml文件中,MIUI Widget 的receiver组件需要添加 MIUI 标识,只有添加 MIUI 标识的Widget才享有MIUI Widget 能力。

4.2.示例

<receiver
    android:name="com.miui.widgetdemo.provider.ExampleWidgetProvider"
    android:process=":widgetProvider">
   <meta-data
    android:name="miuiWidget"
    android:value="true" />
    ....
</receiver>

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

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

3.6.开放能力

为了给用户提供更好的体验,MIUI小部件体系会开放并持续更新部分系统能力,便于开发者使用。

  • 跳转应用页面:小部件可以跳转自身应用或其他应用页面
  • 多个跳转入口:小部件内支持展示多个跳转入口,点击后跳转至应用内不同的页面
  • 是否已存在小部件:支持应用判断用户是否已添加该应用具体某个小部件
  • 调用小部件中心详情页:应用可以直接调用小部件中心中该应用的详情页,方便应用引导用户更快地添加小部件
  • 具体流程:在应用内引导添加时,应用调起小部件中心应用详情页,用户点击“添加到负一屏”或“添加到桌面”后,对应小部件会被添加到负一屏或桌面上,同时弹窗落下,toast提示用户添加成功,回到应用端内
  • 调用方式:见技术文档;
  • 注意事项:此时不支持用户拖动小部件添加
  • 优先级设置:开发者可以给小部件的不同状态设置相应的优先级(高/中/低),每个优先级对应不同的事件参数,MIUI会智能地根据小部件优先级进行排序,优先级越高,越可能在小部件屏上方出现
  • 点击不跳转:点击小部件直接刷新,无需跳转。如内存清理小部件

3.7.禁止的能力

  • 小部件内上下滑动或左右滑动
  • 文字输入

4.小部件设计规范

4.1.基本规范

4.1.1.手机小部件基本规范

a.尺寸

普通手机上,小部件主要分为 2×2、4×2、4×4 三个尺寸。i.设计稿尺寸

小部件在不同设备屏幕以及桌面布局下的大小不同。2k:1080=1.333x,各元素可参考此倍数关系。详细尺寸如下表:

附:MIUI小部件设计模版(设计师同学可从这里取用哦)

示例:以下为1080×2340分辨率对应widget尺寸像素值

ii.自适应布局的实际尺寸

因小部件采用的是自适应布局,在不同设备屏幕及不同样式的桌面上,小部件的尺寸会相应变化。以下是需考虑的小部件适配兼容场景(以1080*2340分辨率为基础): 

  • 负一屏和桌面小部件的样式
  • 桌面图标行列数变化后的样式:桌面支持4*6和5*6布局,需保证4*6布局下完美显示,5*6布局下无显示缺陷问题 (设置方式:设置—桌面—桌面布局规则)
  • 桌面无搜索框时的样式:需保证有搜索框下完美显示,无搜索框下无显示缺陷问题(设置方式:设置—桌面—桌面搜索框)
  • 桌面虚拟键存在和不存在时的样式:需保证无虚拟键下完美显示,有虚拟键下无显示缺陷问题(设置方式:设置—桌面—系统导航方式)
  • 1080p和2k屏幕手机下样式显示:需保证1080p与2k分辨率的屏幕上无显示问题。

基于以上场景,我们列出了各尺寸的小部件在不同设备屏幕上实际显示的最小尺寸和最大尺寸,供设计师参考。(无需单独输出设计方案,设计和验收时注意不同布局下显示是否正常即可)

iii.圆角

  • 开发者提供的手机上小部件预览图必须为38px的平滑圆角
  • 开发者交付的小部件资源里,1080p屏幕需提供38px的圆角,2k屏需提供50px圆角
  • MIUI13系统侧会对真实的小部件进行统一裁切,所以1080p屏幕上圆角实际显示为46px,2k屏上实际显示为62px
b.内容显示区

普通手机上主要内容需预留大于等于40px的安全区(红色区域内不可显示元素),2K屏幕下需预留大于等于54px的安全区。

c.文字

i.字体

为了视觉上的美观及统一,推荐使用MiSans 字体。

ii.字阶

字号大小决定了信息的层级和主次关系,合理有序的字号设计能让界面信息清晰易读、层次分明。

iii.字重

本规范主要针对以数据展示为核心信息的小部件,2×2,4×2通用。

若小部件以文字信息为主,字重规范为:主要信息使用MiSans Medium,次要信息使用MiSans regular,且透明度为40%

*计算器正常使用 MiSans

(1)以数字/数据为核心要素的小部件,数字字体统一使用Mitype-SemiBold(或Mitype Mono- SemiBold

*低于(包含)100px字号的数字,统一使用 Mitype-Bold

(2)小部件中标题文字,字重使用MiSans Medium,且透明度为40%的黑(Dark 下为40%的白)

*如含有多层级文字,字重选择为:一级标题Medium,二级标题Regular

(3)日期表达式的规范

统一使用格式:年–月–日 、月–日。 如:2021–8–16、 8–16。

(4)示例

iv.颜色

界面可以通过字色增强界面视觉层级,定义主、次、辅三个层级。

v.行高

为避免文字出现多种间距,统一字高使阅读感受及开发标准一致性。 h=f*1.2。

d.描边和投影(由MIUI统一处理)

i.描边(内描边

light:10%#000000 1px

dark:10%#ffffff 1px

ii.投影

投影由MIUI统一处理,无需三方适配

样式示例

4.1.2.折叠屏小部件基本规范

注:已适配普通手机的小部件,能够直接在折叠屏上经桌面缩放后显示,无需开发者另作适配。如果能够通过长按小部件,从“编辑”入口进入编辑页,可选择按照交互规范重新适配编辑页。

a.尺寸

与普通手机一样,折叠屏上小部件主要分为2×2、4×2、4×4 三个尺寸。

i.设计稿尺寸

以下为1916×2160分辨率对应像素值

ii.圆角

  • 开发者提供的折叠屏上小部件预览图为42px的平滑圆角
  • 开发者交付的小部件资源里,折叠屏1916px*2160px屏幕需提供42px的圆角
  • MIUI13系统侧会对真实的小部件进行统一裁切,所以1916px*2160px屏幕上圆角实际显示为42px,外屏与1080p屏的规范保持一致,实际显示为46px
b.内容显示区

折叠屏上主要内容需预留大于等于36px的安全区(红色区域内不可显示元素)

c.文字(字体/字重/颜色/行高 与手机规范一致)

i.字阶

字号大小决定了信息的层级和主次关系,合理有序的字号设计能让界面信息清晰易读、层次分明。

d.投影和描边(与手机规范一致)

4.1.3.平板小部件基本规范

注:已适配普通手机的小部件,能够直接在平板上经桌面缩放后显示,无需开发者另作适配。如果能够通过长按小部件,从“编辑”入口进入编辑页,可选择按照交互规范重新适配编辑页。并需要在开发者平台上传pad4x2(超大) 尺寸小部件信息时,提供相应的预览图。

a.尺寸

与手机、折叠屏不同,平板上小部件主要分为1×1、2×1、2×2、4×2(超大) 三个尺寸,其中1×1、2×1、2×2与手机上的2×2、4×2、4×2存在对应关系。

i.设计稿尺寸

ii.圆角

  • 开发者提供的平板小部件预览图必须为36px的平滑圆角
  • 开发者交付的小部件资源里,平板小部件需提供30px圆角
  • MIUI13系统侧会对真实的小部件进行统一裁切,平板小部件圆角实际显示为36px

【注意】如果仅新增适配pad4x2超大尺寸小部件,只有这个小部件预览图的圆角需要为36px,其他手机上已有的小部件,可沿用之前的预览图。

b.内容显示区

平板上主要内容需预留大于等于22px的安全区(红色区域内不可显示元素)

c.文字(字体/字重/颜色 与手机规范一致)

i.字阶

字号大小决定了信息的层级和主次关系,合理有序的字号设计能让界面信息清晰易读、层次分明。

ii.行高

为避免文字出现多种间距,统一字高使阅读感受及开发标准一致性。 h=f*1.2

d.投影和描边(与手机规范一致)

4.2.无内容场景规范(手机/折叠屏/平板一致)

说明:导致widget无内容的场景有:无网络、无数据、未授权、未添加内容、未登录账号等,各业务可以根据实际需求选择设计,无需全部适配。

以下是搭建【widget无内容场景】元素使用规范,对于各场景使用效果不做要求

基本规范

a.配色参考

注:不同背景下色块样式参考,颜色不做规范

b.占位色块圆角

将widget内容占位色块分为 图片占位、文字占位使用圆形或正方形来代替图标

c.文字

用于说明文字;授权说明、网络说明、数据说明 等

d.信息显示
e.加载态

已安装的小部件在加载数据时显示占位符内容。可以通过将 UI 的静态部分与代表其内容的半透明形状相结合来创建占位符外观。

注:各业务需出加载数据时显示占位符内容,用作加载时使用。

样式示例

5.上传须知

完成适配并通过审核后,开发者可以在小部件开发者平台上传小部件,具体操作流程可参考《小部件提交审核与上传操作指南 》。

6.联系我们

如果确认要适配MIUI小部件,且没有和我们联系过,请按照以下模板发送邮件至“miui-widget@xiaomi.com”:

开发者微信:

开发者联系电话:

应用包名:

我方已阅读MIUI小部件产品设计规范与技术规范,准备按照审核要求适配MIUI小部件,希望进一步沟通审核流程和相关规范。

温馨提示:我们会在看到邮件后的10个工作日内与您联系,感谢您适配小部件。

小米开放平台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。

MIUI 10 通知栏快捷开关 (Quick Settings Tile) 适配说明

1. 什么是通知栏快捷开关 (Quick Settings Tile)

快捷开关 (Quick Settings Tile) 是 Android 7.0 引入的新功能,支持开发者自定义通知栏快捷开关。任何开发者都可以注册快捷开关,然后会出现在开关编辑面板中,如下图:

 为了放下更多的快捷开关,MIUI 10 开关面板支持左右横滑,也不限制快捷开关的数量。用户也可以自由排序这些开关,比如放在最后或放在最前面,如下图:

点击开关的行为,由开方者自行定义,可以直接开启某功能,或者直接跳转到某一页面,如下图:

2. 如何适配通知栏快捷开关 (Quick Settings Tile)

可以参考官方文档中以下两章的内容:

  1. Tile: https://developer.android.com/reference/android/service/quicksettings/Tile
  2. TileService: https://developer.android.com/reference/android/service/quicksettings/TileService

如果需要完整的讲解,可以参考这篇谷歌 Framework 工程师的博客:Quick Settings Tiles on Android 7.0(可能需要翻墙),现摘录重点如下:

2.1. 在 manifest 中声明 TileService ,示例如下

<service
  android:name=".AwesomeTileService"
 
  //快捷开关的图标
  android:icon="@drawable/ic_tile_default"
 
  //快捷开关的名称
  android:label="@string/tile_name"
  android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
  <intent-filter>
    <action
      android:name="android.service.quicksettings.action.QS_TILE"/>
  </intent-filter>
</service>

2.2. 准备规范的快捷开关图标

如上所述,android:icon 是显示在通知栏的图标,有以下要求:

  • 要求是 vector drawable 矢量格式(注意是矢量格式)。
  • 图形必须是纯白色,透明背景,图形和功能有明显联系。
  • 大小为 24 x 24 dp (注意单位不是 px)。

快捷开关示例(矢量 + 纯白 + 透明背景):

2.3. 注意以下交互细节

  • 点击:开发者需要确认点击行为是什么,同时确认开关是否有二态变化,如果有,需要准备新的 vector drawable
  • 长按:长按快捷开关,默认会跳转到应用信息页。但开发者可以指定跳转的落地页,通过给 ACTION_QS_TILE_PREFERENCES 增加一个 <intent-filter> 来实现。
  • 自动更新:系统支持开发者更新开关的 UI,一个应用场景是“天气刷新”。开发者视业务需求酌情使用吧。

3. FAQ

3.1. 第三方快捷开关,默认会出现在第一屏吗

不会。第三方快捷开关,默认都会是未添加的状态,只有用户主动添加,才会出现在快捷开关面板中。

3.2. 这个功能对 Android 版本有依赖吗

有,必须是 Android 7.0 及以上的设备。

3.3. 这个功能 MIUI 9 支持吗

不支持,是 MIUI 10 新增的功能。

3.4. 这个功能区分国内版和海外版吗

不区分,只要是 MIUI 10 就支持。

3.5. 如何判断 MIUI 版本

有以下方法:

android.os.SystemProperties.get("ro.miui.ui.version.code", "7");// 如果返回值是「8」,就是 MIUI 10

android.os.SystemProperties.get("ro.miui.ui.version.name", "");// 如果返回值是「V10」,就是 MIUI 10

3.6. 如何测试

升级到  MIUI 10 最新开发版即可,支持的机型和下载链接如下(找到对应机型的最新开发版):

小米手机MIUI 10 媒体通知适配说明

小米手机MIUI 10 媒体通知适配说明

1.媒体通知是什么

媒体通知(或称 Media template / Media style)是 Android 标准通知样式的一种,自 API 21(Android 5.0) 引入,方便用户直接控制媒体内容,常见于音乐类、广播类应用。

MIUI 10 完全兼容该通知样式,并调整了视觉风格,以符合系统风格,如下图(第一条通知)。

2. 为什么要用系统的媒体通知?

音乐类应用已经都有自己的「自定义通知」可以控制音乐,那为什么还要用系统的媒体通知?

调用系统的媒体通知,系统就能做针对性的优化,如:

  • 正在播放的媒体通知默认置顶 + 默认展开为大视图。
  • 正在播放的媒体通知默认会出现在锁屏上(置顶+大视图)。

这些都能让内容更充分地曝光,也有利于提升用户体验。

注:不同于原生 Android O 允许所有通知出现在锁屏上,MIUI 限制了出现在锁屏的通知类型,以减少用户打扰。如果需要出现在锁屏上,需要前往设置 – 通知和状态栏 – 通知管理,找到对应应用,开启‘’锁屏通知‘’。

3. 如何适配系统媒体通知

3.1 媒体通知的两种视图

媒体通知有两种视图,分别称为:

  • 标准视图 / compact view:标准的通知高度,最多显示3个按钮(actions)。
  • 大视图 / expanded view:面积更大,最多显示5个按钮。

3.2 适配媒体通知

MIUI 10的媒体通知,基于 Android O,以下是几个重要的接口:

媒体通知代码示例如下:

Notification = new Notification.Builder()
    .setContentTitle("Havana(feat.Young Thug")
    .setContentText("Camila Cabello - Havana")
    .setSmallIcon(mySmallIcon)
    .setLargeIcon(album)
    .addAction(previousAction)
    .addAction(playAction)
    .addAction(nextAction)
    .addAction(playlistAction)
    .addAction(favoriteAction)
    .setOngoing(true)
    .setStyle(newNotification.MediaStyle()
        .setShowActionsInCompactView(1,2,3)
        .setMediaSession(mySession)))
    .build();

详细接口说明见官方文档:https://developer.android.com/reference/android/app/Notification.MediaStyle

不过,以下接口在 MIUI 10 无法生效:

以上接口都可能会产生不协调的颜色,故暂时屏蔽。

4. FAQ

4.1. 如何判断 MIUI 版本

有以下方法:

android.os.SystemProperties.get("ro.miui.ui.version.code", "7");// 如果返回值是「8」,就是 MIUI 10

android.os.SystemProperties.get("ro.miui.ui.version.name", "");// 如果返回值是「V10」,就是 MIUI 10

4.2. 只有 MIUI 10 支持媒体通知吗

其实 MIUI 9 也支持媒体通知,但因为没有做好优化。所以,可以大体认为「只有 MIUI 10 支持媒体通知」,含国内版和国际版,且样式和逻辑统一。

4.3. 只要是 MIUI 10 就支持媒体通知吗?

是的。因为 Android 原生从 API 21 (android 5.0)就支持媒体通知了,详见 https://developer.android.com/reference/android/app/Notification.MediaStyle。而 MIUI 10 最低是兼容到 Android 6.0,所以只要是 MIUI 10就支持媒体通知。

4.4. MIUI 10 会禁用自定义通知吗

不会。但系统无法识别自定义通知的具体内容,只会当成普通通知处理。

4.5. MIUI 10 媒体通知的样式以后会变化吗

有可能。主要取决于:

  • Android 增加新的接口:我们后续会尽力兼容新的接口,并以此调整样式。
  • 业务需求和用户反馈。

4.6. MIUI 以前自己做的锁屏音乐界面还有用吗

在 MIUI 10 上没有用了。由于那个页面的实现方式有较多问题,因此我们在 MIUI 10 上弃用了,改由在锁屏上显示媒体通知,来实现锁屏音乐控制的需求。

4.7. 第三方应用自己做的锁屏页面(如音乐类或运动类的覆盖式)还能用吗?

可以继续使用,MIUI 10 没有限制这个能力(不过前提是开启了「锁屏显示」的权限)。但我们不建议开发者做这么一个覆盖式的页面,因为用户体验很差,还是希望能够用媒体通知替代。

4.8. 如何测试

升级到  MIUI 10 最新开发版即可,支持的机型和下载链接如下(找到对应机型的最新开发版):

小米手机全面屏手势提示线(虚拟键)适配说明

小米手机全面屏手势提示线(虚拟键)适配说明

1.背景

MIUI12将加入”手势提示线”,在设置-更多设置-全面屏中,可以通过开关打开/关闭该功能。手势提示线的实现原理参考了原生的方式,和虚拟按键在同一个window当中,可以理解成是虚拟按键的一种新的形态。

  • 适配的原则是:”手势提示线”(也就是虚拟键)的背景颜色和页面整体的背景颜色保持一致;
  • 主要有两种适配方式:”使用沉浸式虚拟键”和“给虚拟键设置合适的颜色”。

  图例为开启“手势提示线”效果                              图例为关闭“手势提示线”效果

2.使用沉浸式虚拟键

2.1如何设置

沉浸式虚拟键,即app的content view延伸到虚拟键区域,虚拟键的颜色透明。类似的,还有沉浸式状态栏,即app的content view延伸到状态栏区域,状态栏的颜色透明。

有两种设置的方式,参考代码如下。

方式1:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_layout);
 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);       //设置沉浸式状态栏,在MIUI系统中,状态栏背景透明。原生系统中,状态栏背景半透明。
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);   //设置沉浸式虚拟键,在MIUI系统中,虚拟键背景透明。原生系统中,虚拟键背景半透明。
}

方式2:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_layout);
 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().setStatusBarColor(Color.TRANSPARENT);
    getWindow().setNavigationBarColor(Color.TRANSPARENT);
    getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE|
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|
        View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    );
}

2.2可能存在的问题

设置了沉浸式虚拟键和沉浸式状态栏之后,状态栏和虚拟键会遮挡住app的内容,效果如下:

2.3解决方案

如果不希望app的内容被遮挡,可以给view设置  android:fitsSystemWindows=”true”,设置之后,系统会给该view自动加上paddingTop和paddingBottom。参考代码和效果如下:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/apps_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0000FF"
    android:fitsSystemWindows="true">

2.4适用的场景举例

当页面具有复杂的背景或纹理时:

3.给虚拟键设置合适的颜色

3.1如何设置

使用setNavigationBarColor来设置虚拟键的颜色。注意不要单独把颜色设置成透明,如果要设置成透明的话,参考上面的沉浸式虚拟键,配合其他flag使用。

参考下面的代码,按照这种方式设置之后,app的content view将不会延伸到虚拟键区域。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_layout);
 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().setStatusBarColor(Color.BLUE);     //设置状态栏的背景颜色
    getWindow().setNavigationBarColor(Color.BLUE);  //设置虚拟键的背景颜色
}

3.2可能存在的问题

同一个应用往往有多个子页面,如果页面中背景颜色发生了变化,为了让虚拟键的颜色和页面的颜色保持一致,需要重新设置虚拟键的颜色,而不是统一给应用设置一个色值。

目前大部分业务已经适配了深色模式,因此在深色模式下还需要单独对虚拟键背景做深色适配。

3.3适用的场景举例

使用底部tab的颜色或者页面背景的颜色

婚恋社交移动应用软件制作核心优势分析

随着互联网不断发展,各类移动应用软件层出不穷,由于当代人们生活节奏较快,因此很多人没有足够时间去谈恋爱,而他们也不知不觉到了该谈婚论嫁的年纪,为了给这部分用户带来方便,婚恋社交移动应用软件制作应运而生,方便用户在线寻找合适的对象,帮忙助力人们解决单身问题。

一.这么我们今日就来分析一下婚恋社交软件移动应用制作核心优势。

1、方便用户在线进行婚恋社交:要知道每个人对于自己的爱人都会有一定的标准,而在生活中久久不能找到相关对象,人们就想要反思自己存在的问题。而婚恋社交官方也会为用户提供相关帮忙助力,方便用户在线筛选心仪对象信息,之后移动应用便会为用户展示符合其诉求的相关信息,为用户选用提供方便。

二、官方促进线下婚恋市场发展:婚恋社交移动应用能够很大程度上改变婚恋市场发展趋势,过往人们要想进行婚恋社交活动,往往想要开销大量的时间和精力,还要组织和协调好相关人工,多少有些不便,而现如今人们使用移动应用即可在线寻找心仪对象,从而促进线下婚恋市场发展。

2.这么婚恋社交移动应用软件制作具备哪些功能呢?

1、用户登录注册:由于移动应用私密性较高,因此人们在使用移动应用之前,想要进行登录注册操作,人们能够选用从第3方官方进行登录,也能在线注册新账号,无论哪种方案都能满足用户需求。

二、用户在线筛选:而有些人对于伴侣选用也会有一定的诉求,而移动应用则能为用户提供便利,用户能够依据实际需求对年龄、学历、身材等进行筛选,方便用户在线选用到合适的对象。

三、发起临时聊天:要想知道其匹配用户是否符合自己诉求,用户能够在线发起临时聊天,用户能够和对方进行一段时间了解,为用户选用伴侣提供一定的参考根据。

四、用户个人资料:用户还能在个人中心对个人资料进行修改,而且移动应用也支持用户在线上传本人照片,这样能够增大成功的几率。

不可否认婚恋社交移动应用制作确实给人们生活带来了诸多好处,若是能不断优化官方功能,必将给人们生活带来更多便利。

开发APP从一门开始www.yimenapp.com

物业软件制作解决方式

随着互联网不断发展,诸多移动应用软件出目前人们生活中,近几年国家尤其注重社区建设,为了给社区居民创造良好的居住氛围,物业软件制作应运而生,用户在线即可查看物业人工发布的各类通知和资讯,10分方便,而且还支持用户缴纳物业价格,帮忙助力人们节省一定的时间和精力。

一.物业软件制作能够给用户带来什麽呢?

1、方便业主获知社区资讯:现实生活中很多业主也希望了解社区发展资讯,而物业移动应用软件恰好能为业主提供方便,业主在线即可获取各类社区资讯和通知,让用户能够首先时间依据社区通知安排好生活和工作。而且物业软件也会为用户提供周边商家服务,用户足不出户也能享受高端服务,让人们感受到建设智慧社区的便利。

二、方便业主和物业进行互动:物业人工往往想要对业主负责,创造良好的社区环境也想要业主和物业人工共同维护,而使用物业移动应用,恰好能解决相关问题。业主用户能够随时和物业人工在官方上进行沟通交流,也能针对物业人工的工作内容提出一定的意见。

2.这么物业软件制作具备哪些功能呢?

1、社区资讯展示:为了给业主用户带来便利,在物业软件首页,用户能够浏览到各种社区资讯,有需求的用户能够自行浏览相关信息,方便业主深入了解社区建设情况。

二、物业通知内容:如若遇上特殊情况,物业人工也会通过移动应用软件首先时间告知业主,用户也能够依据实际情况查看物业通知内容,为社区居民创造良好的居住环境,促进业主和物业之间的交流。

三、社区论坛功能:为了促进业主之间的社交,社区论坛功能10分关键,用户能够在社区论坛内畅所欲言,给人们生活带来大幅的便利。

四、周边商家服务:为了使用户在线获得良好的使用体验,软件也会为用户展示周边商家服务,而且还会不定时为用户展示商家发布的优惠折扣信息,让用户以低廉的费用购买到相关商品。

以上就是物业软件制作的核心功能,依据现在发展趋势来说,相关软件备受创投者们的关注,具有一定发展潜力。

开发APP从一门开始www.yimenapp.com

在线点餐官方制作软件使用频率会不会高?

目前是一种网络和科技都很发达的时代。人们都喜欢以足不出户的方案,完成各种各样的事情。如今不少团队都在研发在线点餐官方制作软件,是因为觉得这款软件未来的使用频率将变得更高,事实也确实如此。

一、点餐方便

目前人们点餐都是直接登录外卖官方。不过假设公司或者企业制作了在线点餐官方制作软件,这么这样的软件的使用频率将直线上升。原因就是通过这种软件点餐将变得更为方便快捷,目前市场上还没有一款真正用来点餐的软件。

2、用户多了起来

假设在线点餐官方制作软件成功了,这么使用这种软件的用户也将越来越多。人们都在使用专业的官方做专业的事情。我们在购物的时候,会选用知名的购物官方,在点餐的时候,当然也会用专门用来点餐的软件。

3、惠及消费者

在线点餐官方制作软件会惠及更多的消费者。原因是目前的消费者日常生活繁忙,工作压力大。假设可以有一款软件,将点餐的过程简化,人们当然愿意使用。而且多数都是能够免费使用的。因此这会给消费者带来实惠。

未来在线点餐官方制作软件的使用频率会越来越高。是因为通过专用的软件点餐,更为方便于订单的管理。在这个过程中,只要将软件设计得人性化一些,就能拉拢很多消费者使用这款软件。因此专业人士预测,当这样的软件问世后期,使用这款软件的消费者将不断多了起来。

开发APP从一门开始www.yimenapp.com

APP小米厂商离线推送接口小米开放平台查看小米AppId、AppKey和 AppSecret。

查看小米开放平台APP应用小米AppId、AppKey和 AppSecret。

小米厂商离线推送接口

1.  注册小米开发者账号

如果您已经拥有小米开发者账号,可忽略本节,直接阅读“2. 启用推送”。

如果您没有小米开发者账号,请参照《开发者账号注册流程》,访问小米开放平台完成开发者账号的注册。

开发者账号的审核一般需要1-3个工作日,您可以通过登录小米开放平台查询结果。

2. 启用推送

使用小米开发者账号登录小米开放平台,在管理控制台中选择“消息推送”,进入应用列表页。

管理控制台页面

推送服务应用列表

应用列表包括该开发者账号下的已有APP(包括Android手机/平板应用、Android TV应用和iOS应用)。

说明:

对于2021年12月28日之后在GetApps创建的应用,且应用分发地在非中国大陆地区,需要切换至英文版控制台查看。

点击“未启用”状态APP的“启用推送”,可以进入消息推送启用页面。

启用推送

启用推送前,您须先阅读《小米推送技术服务协议》和《小米推送技术服务数据保护附录》。勾选同意接受,方可启用。

说明:iOS应用在启用推送服务时,需要上传至少一套证书和密钥,以保证推送服务的正常使用。

创建应用

如果你想使用的应用不在应用列表内,点击“创建应用”,选择创建手机/平板应用或电视应用。

选择操作系统、填写应用名和包名(iOS应用需填写Bundle ID)、选择应用分类,单击“创建”,创建一个新应用。

完成应用创建后,就可以启用该应用的推送服务了。

启用推送服务后,在“应用管理-应用信息”页面可查看该应用对应的AppId、AppKey和 AppSecret。

其中AppId和AppKey是客户端的身份标识,在客户端SDK初始化时使用;AppSecret是服务器端的身份标识,在使用服务端SDK向客户端发送消息时使用。

小米开放平台APP上架应用商店APP内容合规要求

小米开放平台APP上架应用商店APP内容合规要求

1、应用内容不得违反国家法规政策。

1.1 应用内不得含有违反宪法确定的基本原则的内容。

1.2 应用内不得含有危害国家统一、主权和领土完整的内容。

1.3 应用内不得含有泄露国家秘密、危害国家安全或者损害国家荣誉和利益的内容。

1.4 应用内不得含有散布谣言,扰乱社会秩序,破坏社会稳定的内容。

1.5 应用内不得含有淫秽、色情、低俗、非法交易、赌博、暴力,或者教唆犯罪的内容。

1.6 应用内不得含有违背社会公德的内容。

1.7 应用内不得含有煽动民族仇恨、民族或种族歧视,破坏民族团结,或者侵害民族风俗、习惯的内容。

1.8 应用内不得含诽谤、人身攻击或者侮辱性的内容。

1.9 应用内不得包含具有贩卖、购买违禁物品的内容。

1.10 儿童类应用内容需适合儿童,不得含有其他会对儿童造成干扰的内容,儿童类应用不得含有外链接、购买机会,除非其保留在受家长监控的指定区域中。

1.11应用不得含有宣扬邪教和封建迷信的内容,也不得含有关于宗教、种族、性取向、性别或其他目标群体的诽谤或恶意内容。

1.12 应用内不得过度宣传酒精和危险物品(如毒药、爆炸物等),或鼓励未成年人消费香烟和酒精饮料。

1.13 游戏类应用不得含有错误价值观取向的内容,包括但不限于拜金主义、耽美等不良文化。

1.14 游戏类应用要严格落实实名认证和防沉迷要求,严格执行向未成年人提供网络游戏的时段时长限制,不得以任何形式向未成年人提供网络游戏账号租售交易服务。

1.15 游戏类应用要强化“氪金”管控,杜绝擅自变更游戏内容、违规运营游戏等行为,坚决遏制“唯金钱”“唯流量”等错误倾向。

1.16 游戏类应用要加强游戏直播管理,禁止出现高额打赏、未成年人打赏等情况。

1.17 广告内容不得含有欺诈内容,不应与向用户所作的宣传或者承诺不符,如:用户实际下载的应用、跳转后的页面,与广告宣传的不一致。

1.18应用内广告存在欺骗、诱导点击等形式,欺骗用户点击低质量推广广告,或广告内容含有虚假内容、违规内容等违反国家广告法行为。

1.19广告内容不得包含不良信息或违法违规内容(例如:侵权、色情、恐怖暴力、反动等),不得含有违反政策法规的网址或页面的提示。

1.20应用所提供的广告,需设置显著的跳转/打开的提示,点击提示以外的区域,不得直接跳转/打开其他页面。

1.21 应用所提供的广告,不得强制、误导、诱导用户点击,迫使用户产生非自愿的下载/跳转行为。

1.22应用所提供的广告,须带有关闭功能和显著的关闭提示,不得设置关闭障碍,且应用关闭后,广告也需同时关闭。

1.23含有下载功能的广告,应设置显著应用下载提示,用户点击“下载按钮”以外区域,不得自动下载非用户所自愿下载应用,或通过设置关闭障碍、关闭提示欺骗等方式,强迫用户下载。

1.24应用所提供的广告,不得含有强制安装软件或出现捆绑下载的行为。

1.25广告内容和广告投放行为,应符合法律法规、政策要求的其他内容。

1.26 应用内不得含有法律、行政法规和国家规定禁止的其他内容。

2、开发者须对用户生成内容进行管控。

2.1 开发者须对应用内用户生成的内容需进行有效的管控,包括但不限于:核验用户帐号身份信息并保存有关记录。制定过滤机制对帐号名称、昵称、简介、备注、标识、评论等功能及内容中的违法有害信息进行防范处置并保存有关记录。

2.2 建立用户生成内容的举报机制,并及时作出响应。

2.3 应用应具备服务关闭功能,对严重违规的用户停止提供服务。

2.4 如应用内有社区版块的,开发者须履行管理社区版块责任,社区版块中不得包含违反法律、法规、条例及其他规定的内容。

小米开放平台APP上架小米商店应用隐私合规检测

小米开放平台APP上架小米商店应用隐私合规检测

为协助开发者在开发、运营APP的过程中,更好履行个人信息保护责任与义务,保障平台用户的合法权益,为用户和开发者提供更多更好的服务,小米应用商店新增隐私问题查询和复测功能。本文档为“隐私问题查询和复测页面”的使用教程,您可在了解文档内容后进行功能使用。

一、隐私问题查询路径

1、隐私检测弹窗提示

当开发者旗下的应用,在隐私检测过程中发现问题,我们将通过邮件、开发者站弹窗公告的方式进行提醒,告知开发者关注检测出的问题,届时开发者可通过弹窗直接跳转查看问题。如开发者旗下多个应用均检测出问题时,我们也将仅发布一个弹窗公告来提醒。

2、开发者站首页“隐私合规”入口

开发者站首页增加隐私检测入口,点击可进入隐私合规页面。在此可浏览开发者旗下在架应用的隐私检测状态,及存在的具体问题报告详情。(注:隐私合规页面中,仅对当前状态为“在架”的应用进行检测)

3、应用详情页“隐私合规”入口

同样,在各个应用的管理详情页—“应用服务”模块下,也增加了隐私问题查询入口,点击后可进入对应应用的隐私问题检测报告页。(注:部分非在架状态的应用无法检测,因此无问题报告详情)

二、隐私问题查询操作指南

1、检测情况查询

开发者进入“隐私合规”模块页面后,开发者旗下的应用将按照检测情况进行排列,不同检测状态定义如下:

1)检测情况显示“已通过”:代表该应用本次检测中,未发现问题;

2)检测情况显示“未通过”:代表该应用在本次检测中,发现存在隐私问题;

3)检测情况显示“未检测”:代表该应用目前在检测排队中,未进行检测;

4)检测情况显示“检测中”:代表开发者在“问题报告”页面,提交修改后的apk,正在复测中。

(注:因检测易受到环境差异或时间节点影响,已通过应用不代表绝对安全,未来还将不定期复测)

开发者可点击“隐私合规”模块页面上方的《隐私合规问题修改指引》,查询隐私问题的修改方法,或参照标准来进行问题的自查。

2、隐私问题报告查询

点击各个应用的“查看报告”入口可进入报告详情页,查看应用存在的相关问题及问题产生的详细介绍。对无法复现或定位的问题,报告详情页中将提供检测期间问题页面的截图供开发者参考,并且可以通过详情页中“查看报告”入口可以下载报告查看详细的检测问题项及其整改建议。

三、修改后的apk提交隐私复测操作指南

1、提交APK进行复测

如开发者将应用存在的隐私问题修改完成,开发者可在“问题报告详情页”中,点击右上角的“检测修改后的apk”,提交修改后的包体进行隐私合规的复测,提交复测的apk,无需修改apk的版本号。

复测apk上传后,将会对“包名、hash值、MD5”等信息进行校验,避免开发者不小心提交未修改的apk或错误的apk。(注:开发者上传未修改过的apk,或上传其他应用的apk,会进行弹窗提醒)

2、提交APK复测后状态查询

当开发者提交修改后的apk进行复测,问题报告详情页中的提交复测按钮将置灰,页面将暂时保持上一次的检测结果,待复测完成后,页面检测结果将更新为最新状态。(注:复测需要1~2个工作日)

若应用检测通过,问题详情页将显示以下状态。(注:检测通过的详情页,不提供apk复测入口)

小米开放平台APP上架小米应用商店应用无法提交,提示“APK解析签名错误!”,如何解决?如何修改签名文件?

小米开放平台APP上架小米应用商店应用无法提交,提示“APK解析签名错误!”,如何解决?如何修改签名文件?

小米应用商店上传的应用包都必须经过签名,且更新版本时签名需保持一致;如果没有签名或者签名不一致就会提示“APK解析签名错误!”,我们建议您首先自行比对签名,如比对后仍未发现问题,可以提供应用名称,应用包名,apk包和错误的视频或者截图到工单问题工单系统,与我们取得联系。

应用上架后签名无法更改或找回,请自行与贵司技术仔细核查确认,如果签名丢失或者需要更换,需要申请删除原应用后,再重新提交上传新apk。

小米开放平台APP上架小米应用商店创建新应用时,提示包名被占用,怎么办?

小米开放平台APP上架小米应用商店创建新应用时,提示包名被占用,怎么办?

包名一旦创建后是无法修改且应用一旦删除所有数据将清空,如:下载量、评论,

小米应用商店系统逻辑要求,同一个包名仅可使用一个账号创建,

如您在创建过程中提示包名已被占用,可以参照以下两种方案:

1、应用认领操作说明将应用认领至新账号下管理。请您参考应用认领操作指南文档:应用认领操作指南

2、如果无法进行应用认领并且不清楚登录账号的,建议您可通过侵权流程维护您的权益:侵权文档

小米开放平台APP上架小米应用商店怎么能更改应用的账号管理?

小米开放平台APP上架小米应用商店怎么能更改应用的账号管理?

1、全新认领功能已上线,您可以参考以下流程提交认领申请将应用从一个开发者账号转移至其他开发者账号管理(此方式您需要两个开发者账号) 。

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

2、您可以通过开发者账号的重新绑定来更换账号的管理权,变更绑定注册邮箱的本质是将开发者账号从旧小米账号换绑至新小米账号(该小米账号从未注册过开发者账号)。

开发者账号更换注册邮箱/重新绑定注册邮箱:https://dev.mi.com/distribute/doc/details?pId=1068

注: 小米开发者账号是通过小米账号内绑定邮箱注册的,所以1个手机号只能注册一个小米账号,1个小米账号只能注册一个开发者账号,一个邮箱只能绑定一个小米账号,

变更绑定注册邮箱的本质是将开发者账号从旧小米账号换绑至新小米账号的,所以必须提供新小米账号(未注册开发者账号)对应的米id和绑定邮箱账号,否则是无法成功更换绑定的。

小米开放平台APP上架小米应用商店如何修改应用名称?

小米开放平台APP上架小米应用商店如何修改应用名称?

如果应用已被审核驳回,您可以重新提交版本更新时在应用信息重新填写相关信息;

如果应用已经审核通过,在提交应用版本更新时是可以修改应用名称的;

如果应用存在较大改动建议您可以先申请下架后再重新提交审核。

注:应用名称半年内修改不得超过三次。

注:安装在手机上显示的应用名称读取自您提交的apk,请您务必保证在提交应用时填写的应用信息内应用名称与安装在手机上显示的应用名称保持完全一致。

注意:任何显示应用名称的地方(资质文件内、应用信息内、安装在手机上显示的等等)都需要保持一致的。

小米开放平台小米商店APP应用被侵权申诉操作流程

小米开放平台小米商店APP应用被侵权申诉操作流程

应用侵权反馈流程,您可在了解文档内容后,自行反馈应用侵权。

小米应用商店为中立的应用分发平台,如果小米应用商店的应用程序侵犯了您的合法权益(如:商标、视频、音频、图片、文字、动画等内容、设计侵权、盗版打包其他应用等),请按照以下侵权投诉流程和反通知流程,提供相关资料,并按照以下邮箱地址发送给我们。

我们将在收到有效的投诉材料后予以反馈。

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

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

1、受理渠道

对外邮箱:developer@xiaomi.com

三、侵权申诉流程

小米应用商店为中立的应用分发平台,如果小米应用商店的应用程序侵犯了您的合法权益,请按照以下侵权投诉流程,提供相关资料。我们将在收到有效的投诉材料后予以反馈。

1、投诉侵权证明材料

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

2、权利人发起侵权通知邮件

权利人应按以下表格向小米发出【小米应用商店侵权投诉通知书】,通知邮件需包含以下表格中的内容,为节约时间成本,请务必按照如下格式提供。

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

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

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

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

1、邮件标题:【举报侵权】【您举报的应用名称】

2、邮件内容:

2.1 投诉的应用:

  • 应用名称:
  • 应用链接地址:可在http://app.mi.com/ 搜索得到
  • 开发者名称:

2.2 投诉内容(侵权项说明):

  • 身份核实:
  • 贵司名称:
  • 营业执照(附件)等:

2.3 权益证明:

必须提供例如版权证明、商标证明、软件著作权书等等,以便小米核实信息并反馈。

请您注意:仅有软著、商标受理书,不足以保护商标权益。

3、小米应用商店侵权投诉通知书(必须提供)

3、小米应用商店受理

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

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

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

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

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

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

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

四、侵权投诉反通知流程

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

1、被投诉方反通知

被投诉方在收到小米转送的权利人向小米提交的相关投诉材料后,若不认可侵权,应在侵权通知邮件中规定的工作日内按以下表格向小米发出反通知书,反通知书应包含以下模板链接中的内容。为节约时间成本,请务必按照如下格式提供

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

2、小米应用商店反馈

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

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

一切法律损失,包括但不限于权利人损失、用户及小米损失,由作出错误通知/反通知的一方承担;

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

3、注意事项

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

反通知的方式:

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

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

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

五、注意事项

通知:

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

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

通知小米的方式:

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

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

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

反通知:

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

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

六、其他业务侵权:

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

涉及游戏侵权:请开发者发送侵权邮件至developer@xiaomi.com,并抄送邮箱:mi-gamebd@xiaomi.com