GKD规则编写之属性-2

0. 前言

本篇主要讲述在GKD规则编写中不必需,但常用的属性

如果没有看过上一篇的同学,请看完上一篇哦!

1. 正文

1.1 snapshotUrls

snapshotUrls属性通常位于rules属性内,与matches属性同级。

snapshotUrls属性后接字符串,字符串的内容是快照的导入链接。

那么,什么是快照?又有什么作用?

1.1.1 快照

以下对于快照的介绍来自@Snoopy1866(锟斤拷)

GKD 使用无障碍权限获取到某个广告弹窗的界面元素信息,并可以通过快照将界面元素信息永久保存,便于规则的书写和维护。

PS:快照不同于截图。截图仅包含界面的图像信息,而快照不仅包含界面的图像信息,还包含界面的元素信息,例如控件的名称和属性,以及控件与控件之间的位置关系信息。

1.1.2 格式

snapshotUrls属性的格式为:

snapshotUrls: '快照链接'

snapshotUrls属性的值也可以是数组,格式如下:

snapshotUrls: [
    '快照链接1',
    '快照链接2',
    '...',
]

请注意:快照链接必须以https://i.gkd.li/i/开头,关于如何获取该链接,可以前往@Snoopy1866编写的教程处查看

snapshotUrls属性所处的位置:

{
    groups: [
        rules: [
        	snapshotUrls: '快照链接',
    	],
    ]
}

1.1.3 特殊情况

特别地,如果rules属性被简写为rules: 规则时,snapshotUrls的位置应在:

{
    groups: [
        rules: '规则',
        snapshotUrls: '快照链接',
    ]
}

1.2 quickFind

quickFind属性需要搭配网页审查工具使用。

关于网页审查工具,可以前往@Snoopy1866编写的教程处查看。

1.2.1 格式

quickFind属性的接受的值的类型为:boolean类型,

即:truefalse

使用方法如下:

quickFind: true,

注意:当quickFind的值为false时,quickFind属性应省略不写

1.2.2 说明

关于quickFind属性的说明:

1.2.2.1 什么时候使用quickFind属性?

rules属性内的规则的满足下列条件:

末尾属性选择器第一个属性选择表达式符合下面的结构之一的选择器

  • [id='abc']
  • [vid='abc']
  • [text='abc']
  • [text^='abc']
  • [text*='abc']
  • [text$='abc']

比如 A > B + C[id='x'][childCount=2] 符合, 但 A > B + C[childCount=2][id='x'] 不符合

并且网页审查工具出现可快速查找提示(即一个对勾)时,可以使用quickFind属性。

1.2.2.2 quickFind属性的位置

  1. quickFind属性与rules属性同级时,该规则组的所有规则全部使用quickFind

    可以理解为:在该规则组下全局开启quickFind

  2. quickFind属性位于rules属性内的其中一个对象中时,仅对该子规则集开启quickFind

    可以理解为:局部使用quickFind

1.3 activityIds

activityIds属性需要搭配网页审查工具使用。

这里拓展下,什么是activity?

1.3.1 activity

Android的Activity是一个应用组件,一个应用通常由多个彼此松散联系的activity组成,在这里,你只需要知道这个就足够了。

GKD的activityIds与Android的Activity是一样的。

1.3.2 介绍

activityIds属性接受一个String类型(即字符串)的值 或者 一个String类型的数组

值的内容是规则执行的activityId

1.3.2.1 activityIds属性的意义

值的内容是规则执行的activityId

如何理解这句话?

activityIds相当于是一个牢笼,将规则的生效范围局限在activityIds规定的Activity下。

比如,一个规则A,在Activity1下能正常工作,但在Activity2下误触。

这时,我们就需要用activityIds,将规则的生效范围限定在Activity1,使其不在Activity2生效

1.3.2.2 格式

使用方法如下:

activityIds: 'activityId',

activityIds: [
    "activityId1",
    "activityId2",
    ...
],

1.3.2.3 说明

类比quickFind属性,

  1. activityIds属性与rules属性同级时,该规则组的所有规则全部在activityIds规定的activity中生效。

  2. activityIds属性位于rules属性内的其中一个对象中时,在仅是该子规则集activityIds规定的activity中生效。

1.4 resetMatch

resetMatch属性接受一个string类型的参数。

可选参数为:appactivity。默认为activity

1.4.1 格式

resetMatch: 'app',

resetMatch: 'activity',

1.4.2 说明

1.4.2.1 作用

resetMatch属性的作用为:规定在规则因actionMaximum等原因进入冷却后,重新开始匹配的条件。

resetMatch的值为app时,规则冷却后,只有重新进入app才会重新开始匹配;

resetMatch的值为默认的activity时,规则冷却后,只要activity变化,就会重新开始匹配。

请注意:activity的变化并不一定伴随着activityId的变化。

1.4.2.2 特殊情况

resetMatch的值为activity时,一般不会写进规则中。

如:

{
    resetMatch: 'activity',
    rules: '',
},

{
    rules: '',
},

完全等价,我们一般会选择下方的写法。

1.5 matchTime

–TODO–


GKD规则编写之属性-2
https://blog.adproqwq.top/2024/01/06/GKD规则编写之属性-2/
作者
Adpro
发布于
2024-01-06
许可协议