@gkd-kit/docs 0.0.1778124232018 → 0.0.1788031478448

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/.vitepress/dist/404.html +11 -13
  2. package/.vitepress/dist/404_.md +11 -13
  3. package/.vitepress/dist/_config.json +1 -1
  4. package/.vitepress/dist/api/index.html +16 -18
  5. package/.vitepress/dist/api/index_.md +16 -18
  6. package/.vitepress/dist/api/interfaces/RawApp.html +15 -17
  7. package/.vitepress/dist/api/interfaces/RawAppGroup.html +19 -26
  8. package/.vitepress/dist/api/interfaces/RawAppGroup_.md +19 -26
  9. package/.vitepress/dist/api/interfaces/RawAppRule.html +15 -37
  10. package/.vitepress/dist/api/interfaces/RawAppRuleProps.html +15 -17
  11. package/.vitepress/dist/api/interfaces/RawAppRuleProps_.md +15 -17
  12. package/.vitepress/dist/api/interfaces/RawAppRule_.md +15 -37
  13. package/.vitepress/dist/api/interfaces/RawApp_.md +15 -17
  14. package/.vitepress/dist/api/interfaces/RawCategory.html +15 -17
  15. package/.vitepress/dist/api/interfaces/RawCategory_.md +15 -17
  16. package/.vitepress/dist/api/interfaces/RawCommonProps.html +20 -22
  17. package/.vitepress/dist/api/interfaces/RawCommonProps_.md +20 -22
  18. package/.vitepress/dist/api/interfaces/RawGlobalApp.html +15 -17
  19. package/.vitepress/dist/api/interfaces/RawGlobalApp_.md +15 -17
  20. package/.vitepress/dist/api/interfaces/RawGlobalGroup.html +15 -22
  21. package/.vitepress/dist/api/interfaces/RawGlobalGroup_.md +15 -22
  22. package/.vitepress/dist/api/interfaces/RawGlobalRule.html +15 -37
  23. package/.vitepress/dist/api/interfaces/RawGlobalRuleProps.html +15 -17
  24. package/.vitepress/dist/api/interfaces/RawGlobalRuleProps_.md +15 -17
  25. package/.vitepress/dist/api/interfaces/RawGlobalRule_.md +15 -37
  26. package/.vitepress/dist/api/interfaces/RawGroupProps.html +15 -22
  27. package/.vitepress/dist/api/interfaces/RawGroupProps_.md +15 -22
  28. package/.vitepress/dist/api/interfaces/RawRuleProps.html +30 -37
  29. package/.vitepress/dist/api/interfaces/RawRuleProps_.md +30 -37
  30. package/.vitepress/dist/api/interfaces/RawSubscription.html +16 -18
  31. package/.vitepress/dist/api/interfaces/RawSubscription_.md +16 -18
  32. package/.vitepress/dist/api/type-aliases/IArray.html +18 -20
  33. package/.vitepress/dist/api/type-aliases/IArray_.md +18 -20
  34. package/.vitepress/dist/api/type-aliases/Integer.html +16 -18
  35. package/.vitepress/dist/api/type-aliases/IntegerMatcher.html +15 -17
  36. package/.vitepress/dist/api/type-aliases/IntegerMatcher_.md +15 -17
  37. package/.vitepress/dist/api/type-aliases/Integer_.md +16 -18
  38. package/.vitepress/dist/api/type-aliases/Position.html +22 -24
  39. package/.vitepress/dist/api/type-aliases/Position_.md +22 -24
  40. package/.vitepress/dist/api/type-aliases/StringMatcher.html +15 -17
  41. package/.vitepress/dist/api/type-aliases/StringMatcher_.md +15 -17
  42. package/.vitepress/dist/api/type-aliases/SwipeArg.html +15 -17
  43. package/.vitepress/dist/api/type-aliases/SwipeArg_.md +15 -17
  44. package/.vitepress/dist/assets/api_index.md.CjQzKled.js +1 -0
  45. package/.vitepress/dist/assets/api_index.md.CjQzKled.lean.js +1 -0
  46. package/.vitepress/dist/assets/api_interfaces_RawApp.md.BpzQ9G66.js +1 -0
  47. package/.vitepress/dist/assets/api_interfaces_RawApp.md.BpzQ9G66.lean.js +1 -0
  48. package/.vitepress/dist/assets/api_interfaces_RawAppGroup.md.Ck2PMmew.js +18 -0
  49. package/.vitepress/dist/assets/api_interfaces_RawAppGroup.md.Ck2PMmew.lean.js +1 -0
  50. package/.vitepress/dist/assets/api_interfaces_RawAppRule.md.svCCf5YM.js +1 -0
  51. package/.vitepress/dist/assets/api_interfaces_RawAppRule.md.svCCf5YM.lean.js +1 -0
  52. package/.vitepress/dist/assets/api_interfaces_RawAppRuleProps.md.Djcgq66H.js +1 -0
  53. package/.vitepress/dist/assets/api_interfaces_RawAppRuleProps.md.Djcgq66H.lean.js +1 -0
  54. package/.vitepress/dist/assets/api_interfaces_RawCategory.md.DHBN1t1h.js +1 -0
  55. package/.vitepress/dist/assets/api_interfaces_RawCategory.md.DHBN1t1h.lean.js +1 -0
  56. package/.vitepress/dist/assets/api_interfaces_RawCommonProps.md.BqWR20Ki.js +6 -0
  57. package/.vitepress/dist/assets/api_interfaces_RawCommonProps.md.BqWR20Ki.lean.js +1 -0
  58. package/.vitepress/dist/assets/api_interfaces_RawGlobalApp.md.nzd5SVi6.js +1 -0
  59. package/.vitepress/dist/assets/api_interfaces_RawGlobalApp.md.nzd5SVi6.lean.js +1 -0
  60. package/.vitepress/dist/assets/api_interfaces_RawGlobalGroup.md.BX5E3cY2.js +1 -0
  61. package/.vitepress/dist/assets/api_interfaces_RawGlobalGroup.md.BX5E3cY2.lean.js +1 -0
  62. package/.vitepress/dist/assets/api_interfaces_RawGlobalRule.md.BBIb-pml.js +1 -0
  63. package/.vitepress/dist/assets/api_interfaces_RawGlobalRule.md.BBIb-pml.lean.js +1 -0
  64. package/.vitepress/dist/assets/api_interfaces_RawGlobalRuleProps.md.CnnmlY17.js +1 -0
  65. package/.vitepress/dist/assets/api_interfaces_RawGlobalRuleProps.md.CnnmlY17.lean.js +1 -0
  66. package/.vitepress/dist/assets/api_interfaces_RawGroupProps.md.b_Emqo9z.js +1 -0
  67. package/.vitepress/dist/assets/api_interfaces_RawGroupProps.md.b_Emqo9z.lean.js +1 -0
  68. package/.vitepress/dist/assets/api_interfaces_RawRuleProps.md.Dub6x9Ex.js +1 -0
  69. package/.vitepress/dist/assets/api_interfaces_RawRuleProps.md.Dub6x9Ex.lean.js +1 -0
  70. package/.vitepress/dist/assets/api_interfaces_RawSubscription.md.DGEaq3vF.js +4 -0
  71. package/.vitepress/dist/assets/api_interfaces_RawSubscription.md.DGEaq3vF.lean.js +1 -0
  72. package/.vitepress/dist/assets/api_type-aliases_IArray.md.CaN7hADu.js +4 -0
  73. package/.vitepress/dist/assets/api_type-aliases_IArray.md.CaN7hADu.lean.js +1 -0
  74. package/.vitepress/dist/assets/api_type-aliases_Integer.md.Dm63ynqV.js +2 -0
  75. package/.vitepress/dist/assets/api_type-aliases_Integer.md.Dm63ynqV.lean.js +1 -0
  76. package/.vitepress/dist/assets/api_type-aliases_IntegerMatcher.md.BE39eIyQ.js +1 -0
  77. package/.vitepress/dist/assets/api_type-aliases_IntegerMatcher.md.BE39eIyQ.lean.js +1 -0
  78. package/.vitepress/dist/assets/api_type-aliases_Position.md.CieLiaPU.js +16 -0
  79. package/.vitepress/dist/assets/api_type-aliases_Position.md.CieLiaPU.lean.js +1 -0
  80. package/.vitepress/dist/assets/api_type-aliases_StringMatcher.md.DMiH2Jb8.js +1 -0
  81. package/.vitepress/dist/assets/api_type-aliases_StringMatcher.md.DMiH2Jb8.lean.js +1 -0
  82. package/.vitepress/dist/assets/api_type-aliases_SwipeArg.md.CJ5jBhMZ.js +1 -0
  83. package/.vitepress/dist/assets/api_type-aliases_SwipeArg.md.CJ5jBhMZ.lean.js +1 -0
  84. package/.vitepress/dist/assets/app.DsMGk2Gm.js +1 -0
  85. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.DWHYjgK3.js +1 -0
  86. package/.vitepress/dist/assets/chunks/FileSaver.min.mmHyTxhb.js +1 -0
  87. package/.vitepress/dist/assets/chunks/VPLocalSearchBox.cfebC-xP.js +3 -0
  88. package/.vitepress/dist/assets/chunks/framework.bo_0njjP.js +5 -0
  89. package/.vitepress/dist/assets/chunks/metadata.0dc14c20.js +1 -0
  90. package/.vitepress/dist/assets/chunks/rolldown-runtime.CbXtAM7H.js +1 -0
  91. package/.vitepress/dist/assets/chunks/theme.BqxP_Qp6.js +1 -0
  92. package/.vitepress/dist/assets/guide_example.md.DLHK84th.js +1 -0
  93. package/.vitepress/dist/assets/guide_example.md.DLHK84th.lean.js +1 -0
  94. package/.vitepress/dist/assets/guide_external.md.gUhHg9ej.js +1 -0
  95. package/.vitepress/dist/assets/guide_external.md.gUhHg9ej.lean.js +1 -0
  96. package/.vitepress/dist/assets/guide_faq.md.DeiwxCAf.js +21 -0
  97. package/.vitepress/dist/assets/guide_faq.md.DeiwxCAf.lean.js +1 -0
  98. package/.vitepress/dist/assets/guide_index.md.6qboURPf.js +1 -0
  99. package/.vitepress/dist/assets/guide_index.md.6qboURPf.lean.js +1 -0
  100. package/.vitepress/dist/assets/guide_node.md.CwfEt3rN.js +1 -0
  101. package/.vitepress/dist/assets/guide_node.md.CwfEt3rN.lean.js +1 -0
  102. package/.vitepress/dist/assets/guide_optimize.md.FR-Zkx4h.js +1 -0
  103. package/.vitepress/dist/assets/guide_optimize.md.FR-Zkx4h.lean.js +1 -0
  104. package/.vitepress/dist/assets/guide_privacy.md.DBrgK5-u.js +1 -0
  105. package/.vitepress/dist/assets/guide_privacy.md.DBrgK5-u.lean.js +1 -0
  106. package/.vitepress/dist/assets/guide_selector.md.nAYYctX6.js +1 -0
  107. package/.vitepress/dist/assets/guide_selector.md.nAYYctX6.lean.js +1 -0
  108. package/.vitepress/dist/assets/guide_snapshot.md.AsADTlKo.js +1 -0
  109. package/.vitepress/dist/assets/guide_snapshot.md.AsADTlKo.lean.js +1 -0
  110. package/.vitepress/dist/assets/guide_sponsor.md.DZrghTwB.js +1 -0
  111. package/.vitepress/dist/assets/guide_sponsor.md.DZrghTwB.lean.js +1 -0
  112. package/.vitepress/dist/assets/{guide_subscription.md.b3kL74Yn.js → guide_subscription.md.u5UT7BiK.js} +6 -6
  113. package/.vitepress/dist/assets/guide_subscription.md.u5UT7BiK.lean.js +1 -0
  114. package/.vitepress/dist/assets/guide_terms.md.DFt17QYh.js +1 -0
  115. package/.vitepress/dist/assets/guide_terms.md.DFt17QYh.lean.js +1 -0
  116. package/.vitepress/dist/assets/guide_what-is-gkd.md.nCfci---.js +1 -0
  117. package/.vitepress/dist/assets/guide_what-is-gkd.md.nCfci---.lean.js +1 -0
  118. package/.vitepress/dist/assets/{index.md.C7gsJKtc.js → index.md.BdZV93Gs.js} +1 -1
  119. package/.vitepress/dist/assets/{index.md.C7gsJKtc.lean.js → index.md.BdZV93Gs.lean.js} +1 -1
  120. package/.vitepress/dist/assets/inter-italic-cyrillic-ext._dlW9xFb.woff2 +0 -0
  121. package/.vitepress/dist/assets/inter-italic-cyrillic.D7dRslh9.woff2 +0 -0
  122. package/.vitepress/dist/assets/inter-italic-greek-ext.Ct-Tf2bq.woff2 +0 -0
  123. package/.vitepress/dist/assets/inter-italic-greek.DNcpQ8QC.woff2 +0 -0
  124. package/.vitepress/dist/assets/inter-italic-latin-ext.DytegdRQ.woff2 +0 -0
  125. package/.vitepress/dist/assets/inter-italic-latin.CoImASkB.woff2 +0 -0
  126. package/.vitepress/dist/assets/inter-italic-symbols.DBflboKE.woff2 +0 -0
  127. package/.vitepress/dist/assets/inter-italic-vietnamese.BI5UxJD-.woff2 +0 -0
  128. package/.vitepress/dist/assets/inter-roman-cyrillic-ext.BeNbU08G.woff2 +0 -0
  129. package/.vitepress/dist/assets/inter-roman-cyrillic.CD0kT8R4.woff2 +0 -0
  130. package/.vitepress/dist/assets/inter-roman-greek-ext.CFAEQ5Ow.woff2 +0 -0
  131. package/.vitepress/dist/assets/inter-roman-greek.Dsf7YjP7.woff2 +0 -0
  132. package/.vitepress/dist/assets/inter-roman-latin-ext.Dl_ayf4-.woff2 +0 -0
  133. package/.vitepress/dist/assets/inter-roman-latin.BOE8-mWI.woff2 +0 -0
  134. package/.vitepress/dist/assets/inter-roman-symbols.w-B2-dTa.woff2 +0 -0
  135. package/.vitepress/dist/assets/inter-roman-vietnamese.CpqCnS2H.woff2 +0 -0
  136. package/.vitepress/dist/assets/polyfills.CHgXubMX.js +3 -0
  137. package/.vitepress/dist/assets/style.sQiVUa0J.css +2 -0
  138. package/.vitepress/dist/guide/example.html +15 -17
  139. package/.vitepress/dist/guide/example_.md +15 -17
  140. package/.vitepress/dist/guide/external.html +15 -17
  141. package/.vitepress/dist/guide/external_.md +15 -17
  142. package/.vitepress/dist/guide/faq.html +16 -18
  143. package/.vitepress/dist/guide/faq_.md +16 -18
  144. package/.vitepress/dist/guide/index.html +15 -17
  145. package/.vitepress/dist/guide/index_.md +15 -17
  146. package/.vitepress/dist/guide/node.html +15 -17
  147. package/.vitepress/dist/guide/node_.md +15 -17
  148. package/.vitepress/dist/guide/optimize.html +15 -17
  149. package/.vitepress/dist/guide/optimize_.md +15 -17
  150. package/.vitepress/dist/guide/privacy.html +15 -17
  151. package/.vitepress/dist/guide/privacy_.md +15 -17
  152. package/.vitepress/dist/guide/selector.html +21 -23
  153. package/.vitepress/dist/guide/selector_.md +21 -23
  154. package/.vitepress/dist/guide/snapshot.html +15 -17
  155. package/.vitepress/dist/guide/snapshot_.md +15 -17
  156. package/.vitepress/dist/guide/sponsor.html +15 -17
  157. package/.vitepress/dist/guide/sponsor_.md +15 -17
  158. package/.vitepress/dist/guide/subscription.html +20 -22
  159. package/.vitepress/dist/guide/subscription_.md +20 -22
  160. package/.vitepress/dist/guide/terms.html +15 -17
  161. package/.vitepress/dist/guide/terms_.md +15 -17
  162. package/.vitepress/dist/guide/what-is-gkd.html +15 -17
  163. package/.vitepress/dist/guide/what-is-gkd_.md +15 -17
  164. package/.vitepress/dist/hashmap.json +1 -1
  165. package/.vitepress/dist/index.html +15 -17
  166. package/.vitepress/dist/index_.md +15 -17
  167. package/_config.json +1 -1
  168. package/package.json +1 -4
  169. package/.vitepress/dist/assets/api_index.md.DbsdFYfN.js +0 -1
  170. package/.vitepress/dist/assets/api_index.md.DbsdFYfN.lean.js +0 -1
  171. package/.vitepress/dist/assets/api_interfaces_RawApp.md.VF5jpSTM.js +0 -1
  172. package/.vitepress/dist/assets/api_interfaces_RawApp.md.VF5jpSTM.lean.js +0 -1
  173. package/.vitepress/dist/assets/api_interfaces_RawAppGroup.md.CIX1JDEc.js +0 -23
  174. package/.vitepress/dist/assets/api_interfaces_RawAppGroup.md.CIX1JDEc.lean.js +0 -1
  175. package/.vitepress/dist/assets/api_interfaces_RawAppRule.md.DhYtItNA.js +0 -1
  176. package/.vitepress/dist/assets/api_interfaces_RawAppRule.md.DhYtItNA.lean.js +0 -1
  177. package/.vitepress/dist/assets/api_interfaces_RawAppRuleProps.md.B7FJNPoD.js +0 -1
  178. package/.vitepress/dist/assets/api_interfaces_RawAppRuleProps.md.B7FJNPoD.lean.js +0 -1
  179. package/.vitepress/dist/assets/api_interfaces_RawCategory.md.r-sNQdvB.js +0 -1
  180. package/.vitepress/dist/assets/api_interfaces_RawCategory.md.r-sNQdvB.lean.js +0 -1
  181. package/.vitepress/dist/assets/api_interfaces_RawCommonProps.md.CZf8W6jX.js +0 -6
  182. package/.vitepress/dist/assets/api_interfaces_RawCommonProps.md.CZf8W6jX.lean.js +0 -1
  183. package/.vitepress/dist/assets/api_interfaces_RawGlobalApp.md.Pg3dMO1q.js +0 -1
  184. package/.vitepress/dist/assets/api_interfaces_RawGlobalApp.md.Pg3dMO1q.lean.js +0 -1
  185. package/.vitepress/dist/assets/api_interfaces_RawGlobalGroup.md.C6tJ8Ztc.js +0 -6
  186. package/.vitepress/dist/assets/api_interfaces_RawGlobalGroup.md.C6tJ8Ztc.lean.js +0 -1
  187. package/.vitepress/dist/assets/api_interfaces_RawGlobalRule.md.DKEsLdiI.js +0 -1
  188. package/.vitepress/dist/assets/api_interfaces_RawGlobalRule.md.DKEsLdiI.lean.js +0 -1
  189. package/.vitepress/dist/assets/api_interfaces_RawGlobalRuleProps.md.DCuw4zBK.js +0 -1
  190. package/.vitepress/dist/assets/api_interfaces_RawGlobalRuleProps.md.DCuw4zBK.lean.js +0 -1
  191. package/.vitepress/dist/assets/api_interfaces_RawGroupProps.md.BQw600Ow.js +0 -6
  192. package/.vitepress/dist/assets/api_interfaces_RawGroupProps.md.BQw600Ow.lean.js +0 -1
  193. package/.vitepress/dist/assets/api_interfaces_RawRuleProps.md.CEwmTzSR.js +0 -1
  194. package/.vitepress/dist/assets/api_interfaces_RawRuleProps.md.CEwmTzSR.lean.js +0 -1
  195. package/.vitepress/dist/assets/api_interfaces_RawSubscription.md.DH1bY2R2.js +0 -4
  196. package/.vitepress/dist/assets/api_interfaces_RawSubscription.md.DH1bY2R2.lean.js +0 -1
  197. package/.vitepress/dist/assets/api_type-aliases_IArray.md.mS9PXjxK.js +0 -4
  198. package/.vitepress/dist/assets/api_type-aliases_IArray.md.mS9PXjxK.lean.js +0 -1
  199. package/.vitepress/dist/assets/api_type-aliases_Integer.md.CD5PaiMa.js +0 -2
  200. package/.vitepress/dist/assets/api_type-aliases_Integer.md.CD5PaiMa.lean.js +0 -1
  201. package/.vitepress/dist/assets/api_type-aliases_IntegerMatcher.md.DffqKRFD.js +0 -1
  202. package/.vitepress/dist/assets/api_type-aliases_IntegerMatcher.md.DffqKRFD.lean.js +0 -1
  203. package/.vitepress/dist/assets/api_type-aliases_Position.md.OdVVrNbs.js +0 -16
  204. package/.vitepress/dist/assets/api_type-aliases_Position.md.OdVVrNbs.lean.js +0 -1
  205. package/.vitepress/dist/assets/api_type-aliases_StringMatcher.md.Dm_IN8ij.js +0 -1
  206. package/.vitepress/dist/assets/api_type-aliases_StringMatcher.md.Dm_IN8ij.lean.js +0 -1
  207. package/.vitepress/dist/assets/api_type-aliases_SwipeArg.md.BBrbAV2_.js +0 -1
  208. package/.vitepress/dist/assets/api_type-aliases_SwipeArg.md.BBrbAV2_.lean.js +0 -1
  209. package/.vitepress/dist/assets/app.Bof6In7P.js +0 -1
  210. package/.vitepress/dist/assets/chunks/@localSearchIndexroot.CIJmSUUZ.js +0 -1
  211. package/.vitepress/dist/assets/chunks/FileSaver.min.BxHcgHsl.js +0 -1
  212. package/.vitepress/dist/assets/chunks/VPLocalSearchBox.BEJmHkAl.js +0 -2
  213. package/.vitepress/dist/assets/chunks/framework.C9O3MI31.js +0 -2
  214. package/.vitepress/dist/assets/chunks/index.BJCOYsj9.js +0 -275
  215. package/.vitepress/dist/assets/chunks/theme.HzWOLh31.js +0 -1
  216. package/.vitepress/dist/assets/guide_example.md.DQFpVk96.js +0 -1
  217. package/.vitepress/dist/assets/guide_example.md.DQFpVk96.lean.js +0 -1
  218. package/.vitepress/dist/assets/guide_external.md.jyqZleQg.js +0 -1
  219. package/.vitepress/dist/assets/guide_external.md.jyqZleQg.lean.js +0 -1
  220. package/.vitepress/dist/assets/guide_faq.md.CJ97c3Oj.js +0 -21
  221. package/.vitepress/dist/assets/guide_faq.md.CJ97c3Oj.lean.js +0 -1
  222. package/.vitepress/dist/assets/guide_index.md.DXqOoSRT.js +0 -1
  223. package/.vitepress/dist/assets/guide_index.md.DXqOoSRT.lean.js +0 -1
  224. package/.vitepress/dist/assets/guide_node.md.Dueqr68D.js +0 -1
  225. package/.vitepress/dist/assets/guide_node.md.Dueqr68D.lean.js +0 -1
  226. package/.vitepress/dist/assets/guide_optimize.md.QtHsJC_W.js +0 -1
  227. package/.vitepress/dist/assets/guide_optimize.md.QtHsJC_W.lean.js +0 -1
  228. package/.vitepress/dist/assets/guide_privacy.md.DEY7H6Xw.js +0 -1
  229. package/.vitepress/dist/assets/guide_privacy.md.DEY7H6Xw.lean.js +0 -1
  230. package/.vitepress/dist/assets/guide_selector.md.CkWe6yh0.js +0 -12
  231. package/.vitepress/dist/assets/guide_selector.md.CkWe6yh0.lean.js +0 -1
  232. package/.vitepress/dist/assets/guide_snapshot.md.CAyOxKjJ.js +0 -1
  233. package/.vitepress/dist/assets/guide_snapshot.md.CAyOxKjJ.lean.js +0 -1
  234. package/.vitepress/dist/assets/guide_sponsor.md.BcOIEi8A.js +0 -1
  235. package/.vitepress/dist/assets/guide_sponsor.md.BcOIEi8A.lean.js +0 -1
  236. package/.vitepress/dist/assets/guide_subscription.md.b3kL74Yn.lean.js +0 -1
  237. package/.vitepress/dist/assets/guide_terms.md.DfiFWTE8.js +0 -1
  238. package/.vitepress/dist/assets/guide_terms.md.DfiFWTE8.lean.js +0 -1
  239. package/.vitepress/dist/assets/guide_what-is-gkd.md.L893NqGU.js +0 -1
  240. package/.vitepress/dist/assets/guide_what-is-gkd.md.L893NqGU.lean.js +0 -1
  241. package/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  242. package/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  243. package/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  244. package/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  245. package/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  246. package/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  247. package/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  248. package/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  249. package/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  250. package/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  251. package/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  252. package/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  253. package/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  254. package/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  255. package/.vitepress/dist/assets/polyfills.-wjBxrqk.js +0 -1
  256. package/.vitepress/dist/assets/style.DmRq6upP.css +0 -1
@@ -1,6 +0,0 @@
1
- import{_ as a,c as t,o as i,aq as s}from"./chunks/framework.C9O3MI31.js";const k=JSON.parse('{"title":"RawCommonProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCommonProps.md","filePath":"api/interfaces/RawCommonProps.md","lastUpdated":null}'),o={name:"api/interfaces/RawCommonProps.md"};function r(l,e,n,c,p,h){return i(),t("div",null,e[0]||(e[0]=[s(`<h1 id="rawcommonprops" tabindex="-1">RawCommonProps <a class="header-anchor" href="#rawcommonprops" aria-label="Permalink to “RawCommonProps”">​</a></h1><p>全局规则(组)和应用规则(组)的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to “Extended by”">​</a></h2><ul><li><a href="./RawRuleProps"><code>RawRuleProps</code></a></li><li><a href="./RawGroupProps"><code>RawGroupProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to “Properties”">​</a></h2><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to “actionCd?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to “actionDelay?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to “fastQuery?”">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/guide/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to “matchRoot?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to “matchDelay?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to “matchTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to “actionMaximum?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to “resetMatch?”">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;match&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>决定如何重置 matchTime/actionMaximum,如果规则因 matchTime/actionMaximum 而休眠, 重置可以唤醒规则</p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to “Examples”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>
2
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 当 activity 刷新时, 重置规则</span></span>
3
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 刷新 activity 并不代表 activityId 变化</span></span>
4
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 如 哔哩哔哩视频播放页 底部点击推荐视频 进入另一个 视频播放页, 进入了新 activity 但是 activityId 并没有变化</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;match&#39;</span></span>
5
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 在应用内由不匹配界面切换为匹配界面时, 重置规则</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;app&#39;</span></span>
6
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 重新进入 app 时, 重置规则</span></span></code></pre></div><hr><h3 id="actioncdkey" tabindex="-1">actionCdKey? <a class="header-anchor" href="#actioncdkey" aria-label="Permalink to “actionCdKey?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionCdKey</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>与这个 key 的 rule 共享 cd</p><p>比如开屏广告可能需要多个 rule 去匹配, 当一个 rule 触发时, 其它 rule 的触发是无意义的</p><p>如果你对这个 key 的 rule 设置 actionCd=3000, 那么当这个 rule 和 本 rule 触发任意一个时, 在 3000 毫秒 内两个 rule 都将进入 cd</p><hr><h3 id="actionmaximumkey" tabindex="-1">actionMaximumKey? <a class="header-anchor" href="#actionmaximumkey" aria-label="Permalink to “actionMaximumKey?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximumKey</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>与这个 key 的 rule 共享次数</p><p>比如开屏广告可能需要多个 rule 去匹配, 当一个 rule 触发时, 其它 rule 的触发是无意义的</p><p>如果你对这个 key 的 rule 设置 actionMaximum=1, 那么当这个 rule 和 本 rule 触发任意一个时, 两个 rule 都将进入休眠</p><hr><h3 id="order" tabindex="-1">order? <a class="header-anchor" href="#order" aria-label="Permalink to “order?”">​</a></h3><blockquote><p><code>optional</code> <strong>order</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>规则参与匹配的顺序, 数字越小越先匹配</p><p>如果两个规则 order 相同, 按照 groups 中的数组顺序匹配, app 类型规则顺序优先于 global 类型规则</p><p>属于不同订阅的规则按照订阅列表中顺序匹配, 长按订阅卡片可以拖动排序</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span></span></code></pre></div><hr><h3 id="forcedtime" tabindex="-1">forcedTime? <a class="header-anchor" href="#forcedtime" aria-label="Permalink to “forcedTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>forcedTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>在开始匹配后的一段时间内, 不管界面没有通知变化, 主动使此规则参与屏幕查询</p><p>GKD 借助 <a href="https://developer.android.com/reference/android/accessibilityservice/AccessibilityService#onAccessibilityEvent(android.view.accessibility.AccessibilityEvent)" target="_blank" rel="noreferrer">onAccessibilityEvent</a> 感知界面变化</p><p>但是某些基于 flutter/webview 开发的应用/页面在变化时并不会通知系统去触发 onAccessibilityEvent, 但是屏幕上的节点信息确实产生变化</p><p>唯一的办法是在开始匹配的一定时间内主动查询屏幕节点</p><hr><h3 id="prioritytime" tabindex="-1">priorityTime? <a class="header-anchor" href="#prioritytime" aria-label="Permalink to “priorityTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>priorityTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>设置一个优先级时间, 在优先级时间内, 此规则为 优先级规则</p><p>如果规则参与匹配, 匹配顺序为 优先级规则(内部 order 排序) -&gt; 普通规则(内部 order 排序)</p><p>当新无障碍事件到来时, 如果当前匹配规则是普通规则, 则中断匹配操作重新匹配</p><p>优先时间过后, 规则将变为普通规则</p><p>使用场景: 某些应用开启很多规则, 导致开屏一类规则被其他规则阻塞, 可以设置优先级时间让开屏规则优先匹配</p><p>注意: 如果全部规则都是优先级规则或只有一个规则, 则不会发生中断行为</p><hr><h3 id="priorityactionmaximum" tabindex="-1">priorityActionMaximum? <a class="header-anchor" href="#priorityactionmaximum" aria-label="Permalink to “priorityActionMaximum?”">​</a></h3><blockquote><p><code>optional</code> <strong>priorityActionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>优先级执行次数, 触发多少次后, 规则将变为普通规则</p><h4 id="default-5" tabindex="-1">Default <a class="header-anchor" href="#default-5" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span></span></code></pre></div><hr><h3 id="snapshoturls" tabindex="-1">snapshotUrls? <a class="header-anchor" href="#snapshoturls" aria-label="Permalink to “snapshotUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>snapshotUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的匹配界面快照链接, 增强订阅可维护性</p><hr><h3 id="excludesnapshoturls" tabindex="-1">excludeSnapshotUrls? <a class="header-anchor" href="#excludesnapshoturls" aria-label="Permalink to “excludeSnapshotUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>excludeSnapshotUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的排除匹配界面的快照链接</p><hr><h3 id="exampleurls" tabindex="-1">exampleUrls? <a class="header-anchor" href="#exampleurls" aria-label="Permalink to “exampleUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>exampleUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的规则在手机上的运行示例, 支持 jpg/png/webp/gif</p><p>如果规则是多个规则组合起来的, 可以更好看懂规则到底在干啥, 比如 点击关闭按钮-选择关闭原因-确认关闭 这种广告用 gif 看着更清楚在干啥</p>`,124)]))}const g=a(o,[["render",r]]);export{k as __pageData,g as default};
@@ -1 +0,0 @@
1
- import{_ as a,c as t,o as i,aq as s}from"./chunks/framework.C9O3MI31.js";const k=JSON.parse('{"title":"RawCommonProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawCommonProps.md","filePath":"api/interfaces/RawCommonProps.md","lastUpdated":null}'),o={name:"api/interfaces/RawCommonProps.md"};function r(l,e,n,c,p,h){return i(),t("div",null,e[0]||(e[0]=[s("",124)]))}const g=a(o,[["render",r]]);export{k as __pageData,g as default};
@@ -1 +0,0 @@
1
- import{_ as a,c as r,o,aq as i}from"./chunks/framework.C9O3MI31.js";const f=JSON.parse('{"title":"RawGlobalApp","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalApp.md","filePath":"api/interfaces/RawGlobalApp.md","lastUpdated":null}'),d={name:"api/interfaces/RawGlobalApp.md"};function t(s,e,c,n,l,p){return o(),r("div",null,e[0]||(e[0]=[i('<h1 id="rawglobalapp" tabindex="-1">RawGlobalApp <a class="header-anchor" href="#rawglobalapp" aria-label="Permalink to “RawGlobalApp”">​</a></h1><p>全局规则应用配置</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to “Extends”">​</a></h2><ul><li><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to “Properties”">​</a></h2><h3 id="id" tabindex="-1">id <a class="header-anchor" href="#id" aria-label="Permalink to “id”">​</a></h3><blockquote><p><strong>id</strong>: <code>string</code></p></blockquote><p>目标应用的包名</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to “enable?”">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>在此应用启用/禁用此规则</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><hr><h3 id="activityids" tabindex="-1">activityIds? <a class="header-anchor" href="#activityids" aria-label="Permalink to “activityIds?”">​</a></h3><blockquote><p><code>optional</code> <strong>activityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 界面Id startWith activityIds 的任意一项, 则匹配</p><p>如果要匹配所有界面: <code>undefined</code> (不填写) 或者 <code>[]</code> (避免使用上级属性)</p><p>如果 activityId 以 <code>.</code> 开头, 则等价于 appId + activityId</p><p>示例: <code>com.tencent.mm</code> (微信) 的某界面 <code>.MainActivity</code> 等价于 <code>com.tencent.mm.MainActivity</code></p><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#activityids"><code>activityIds</code></a></p><hr><h3 id="excludeactivityids" tabindex="-1">excludeActivityIds? <a class="header-anchor" href="#excludeactivityids" aria-label="Permalink to “excludeActivityIds?”">​</a></h3><blockquote><p><code>optional</code> <strong>excludeActivityIds</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果 设备界面Id startWith excludeActivityIds 的任意一项, 则排除匹配</p><p>优先级高于 activityIds</p><p>当 activityId 以 <code>.</code> 开头时, 与 activityIds 识别规则一致</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeactivityids"><code>excludeActivityIds</code></a></p><hr><h3 id="versionnames" tabindex="-1"><s>versionNames?</s> <a class="header-anchor" href="#versionnames" aria-label="Permalink to “versionNames?”">​</a></h3><blockquote><p><code>optional</code> <strong>versionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则匹配</p><h4 id="deprecated" tabindex="-1">Deprecated <a class="header-anchor" href="#deprecated" aria-label="Permalink to “Deprecated”">​</a></h4><p><a href="./RawAppRuleProps#versionname">versionName</a></p><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versionnames"><code>versionNames</code></a></p><hr><h3 id="excludeversionnames" tabindex="-1"><s>excludeVersionNames?</s> <a class="header-anchor" href="#excludeversionnames" aria-label="Permalink to “excludeVersionNames?”">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionNames</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>如果应用版本名称包含在此列表中, 则排除匹配, 优先级高于 versionNames</p><h4 id="deprecated-1" tabindex="-1">Deprecated <a class="header-anchor" href="#deprecated-1" aria-label="Permalink to “Deprecated”">​</a></h4><p><a href="./RawAppRuleProps#versionname">versionName</a></p><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversionnames"><code>excludeVersionNames</code></a></p><hr><h3 id="versioncodes" tabindex="-1"><s>versionCodes?</s> <a class="header-anchor" href="#versioncodes" aria-label="Permalink to “versionCodes?”">​</a></h3><blockquote><p><code>optional</code> <strong>versionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则匹配</p><h4 id="deprecated-2" tabindex="-1">Deprecated <a class="header-anchor" href="#deprecated-2" aria-label="Permalink to “Deprecated”">​</a></h4><p><a href="./RawAppRuleProps#versioncode">versionCode</a></p><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versioncodes"><code>versionCodes</code></a></p><hr><h3 id="excludeversioncodes" tabindex="-1"><s>excludeVersionCodes?</s> <a class="header-anchor" href="#excludeversioncodes" aria-label="Permalink to “excludeVersionCodes?”">​</a></h3><blockquote><p><code>optional</code> <strong>excludeVersionCodes</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>如果应用版本代码包含在此列表中, 则排除匹配, 优先级高于 versionCodes</p><h4 id="deprecated-3" tabindex="-1">Deprecated <a class="header-anchor" href="#deprecated-3" aria-label="Permalink to “Deprecated”">​</a></h4><p><a href="./RawAppRuleProps#versioncode">versionCode</a></p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#excludeversioncodes"><code>excludeVersionCodes</code></a></p><hr><h3 id="versioncode" tabindex="-1">versionCode? <a class="header-anchor" href="#versioncode" aria-label="Permalink to “versionCode?”">​</a></h3><blockquote><p><code>optional</code> <strong>versionCode</strong>: <a href="./../type-aliases/IntegerMatcher"><code>IntegerMatcher</code></a></p></blockquote><p>应用版本代码(整数)匹配规则</p><h4 id="inherited-from-6" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-6" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versioncode"><code>versionCode</code></a></p><hr><h3 id="versionname" tabindex="-1">versionName? <a class="header-anchor" href="#versionname" aria-label="Permalink to “versionName?”">​</a></h3><blockquote><p><code>optional</code> <strong>versionName</strong>: <a href="./../type-aliases/StringMatcher"><code>StringMatcher</code></a></p></blockquote><p>应用版本名称(字符串)匹配规则</p><h4 id="inherited-from-7" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-7" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawAppRuleProps"><code>RawAppRuleProps</code></a>.<a href="./RawAppRuleProps#versionname"><code>versionName</code></a></p>',75)]))}const m=a(d,[["render",t]]);export{f as __pageData,m as default};
@@ -1 +0,0 @@
1
- import{_ as a,c as r,o,aq as i}from"./chunks/framework.C9O3MI31.js";const f=JSON.parse('{"title":"RawGlobalApp","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalApp.md","filePath":"api/interfaces/RawGlobalApp.md","lastUpdated":null}'),d={name:"api/interfaces/RawGlobalApp.md"};function t(s,e,c,n,l,p){return o(),r("div",null,e[0]||(e[0]=[i("",75)]))}const m=a(d,[["render",t]]);export{f as __pageData,m as default};
@@ -1,6 +0,0 @@
1
- import{_ as a,c as r,o,aq as i}from"./chunks/framework.C9O3MI31.js";const u=JSON.parse('{"title":"RawGlobalGroup","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalGroup.md","filePath":"api/interfaces/RawGlobalGroup.md","lastUpdated":null}'),t={name:"api/interfaces/RawGlobalGroup.md"};function s(l,e,h,d,p,n){return o(),r("div",null,e[0]||(e[0]=[i(`<h1 id="rawglobalgroup" tabindex="-1">RawGlobalGroup <a class="header-anchor" href="#rawglobalgroup" aria-label="Permalink to “RawGlobalGroup”">​</a></h1><p>全局规则组</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to “Extends”">​</a></h2><ul><li><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to “Properties”">​</a></h2><h3 id="rules" tabindex="-1">rules <a class="header-anchor" href="#rules" aria-label="Permalink to “rules”">​</a></h3><blockquote><p><strong>rules</strong>: <a href="./RawGlobalRule"><code>RawGlobalRule</code></a>[]</p></blockquote><p>全局规则组的规则列表</p><hr><h3 id="disableifappgroupmatch" tabindex="-1">disableIfAppGroupMatch? <a class="header-anchor" href="#disableifappgroupmatch" aria-label="Permalink to “disableIfAppGroupMatch?”">​</a></h3><blockquote><p><code>optional</code> <strong>disableIfAppGroupMatch</strong>: <code>string</code></p></blockquote><p>如果 <a href="./RawSubscription#apps">RawSubscription.apps</a> 下的应用下存在一个名称以此开头并且 <a href="./RawAppGroup#ignoreglobalgroupmatch">RawAppGroup.ignoreGlobalGroupMatch</a> 不为 <code>true</code> 的规则组存在, 则此全局规则组不会匹配此应用, 只判断是否存在, 不判断是否启用</p><p>当值为 <code>&#39;&#39;</code> 即长度为 0 的字符串 时, 等价于设置为当前全局规则组的 name</p><p>这等价于在 <a href="./RawGlobalRuleProps#apps">RawGlobalRuleProps.apps</a> 中自动配置 <code>{id:&#39;xxx&#39;, enable:false}</code></p><hr><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to “actionCd?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actioncd"><code>actionCd</code></a></p><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to “actionDelay?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actiondelay"><code>actionDelay</code></a></p><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to “fastQuery?”">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/guide/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#fastquery"><code>fastQuery</code></a></p><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to “matchRoot?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#matchroot"><code>matchRoot</code></a></p><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to “matchDelay?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#matchdelay"><code>matchDelay</code></a></p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to “matchTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#matchtime"><code>matchTime</code></a></p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to “actionMaximum?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><h4 id="inherited-from-6" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-6" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actionmaximum"><code>actionMaximum</code></a></p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to “resetMatch?”">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;match&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>决定如何重置 matchTime/actionMaximum,如果规则因 matchTime/actionMaximum 而休眠, 重置可以唤醒规则</p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to “Examples”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>
2
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 当 activity 刷新时, 重置规则</span></span>
3
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 刷新 activity 并不代表 activityId 变化</span></span>
4
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 如 哔哩哔哩视频播放页 底部点击推荐视频 进入另一个 视频播放页, 进入了新 activity 但是 activityId 并没有变化</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;match&#39;</span></span>
5
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 在应用内由不匹配界面切换为匹配界面时, 重置规则</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;app&#39;</span></span>
6
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 重新进入 app 时, 重置规则</span></span></code></pre></div><h4 id="inherited-from-7" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-7" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#resetmatch"><code>resetMatch</code></a></p><hr><h3 id="actioncdkey" tabindex="-1">actionCdKey? <a class="header-anchor" href="#actioncdkey" aria-label="Permalink to “actionCdKey?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionCdKey</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>与这个 key 的 rule 共享 cd</p><p>比如开屏广告可能需要多个 rule 去匹配, 当一个 rule 触发时, 其它 rule 的触发是无意义的</p><p>如果你对这个 key 的 rule 设置 actionCd=3000, 那么当这个 rule 和 本 rule 触发任意一个时, 在 3000 毫秒 内两个 rule 都将进入 cd</p><h4 id="inherited-from-8" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-8" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actioncdkey"><code>actionCdKey</code></a></p><hr><h3 id="actionmaximumkey" tabindex="-1">actionMaximumKey? <a class="header-anchor" href="#actionmaximumkey" aria-label="Permalink to “actionMaximumKey?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximumKey</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>与这个 key 的 rule 共享次数</p><p>比如开屏广告可能需要多个 rule 去匹配, 当一个 rule 触发时, 其它 rule 的触发是无意义的</p><p>如果你对这个 key 的 rule 设置 actionMaximum=1, 那么当这个 rule 和 本 rule 触发任意一个时, 两个 rule 都将进入休眠</p><h4 id="inherited-from-9" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-9" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#actionmaximumkey"><code>actionMaximumKey</code></a></p><hr><h3 id="order" tabindex="-1">order? <a class="header-anchor" href="#order" aria-label="Permalink to “order?”">​</a></h3><blockquote><p><code>optional</code> <strong>order</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>规则参与匹配的顺序, 数字越小越先匹配</p><p>如果两个规则 order 相同, 按照 groups 中的数组顺序匹配, app 类型规则顺序优先于 global 类型规则</p><p>属于不同订阅的规则按照订阅列表中顺序匹配, 长按订阅卡片可以拖动排序</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span></span></code></pre></div><h4 id="inherited-from-10" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-10" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#order"><code>order</code></a></p><hr><h3 id="forcedtime" tabindex="-1">forcedTime? <a class="header-anchor" href="#forcedtime" aria-label="Permalink to “forcedTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>forcedTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>在开始匹配后的一段时间内, 不管界面没有通知变化, 主动使此规则参与屏幕查询</p><p>GKD 借助 <a href="https://developer.android.com/reference/android/accessibilityservice/AccessibilityService#onAccessibilityEvent(android.view.accessibility.AccessibilityEvent)" target="_blank" rel="noreferrer">onAccessibilityEvent</a> 感知界面变化</p><p>但是某些基于 flutter/webview 开发的应用/页面在变化时并不会通知系统去触发 onAccessibilityEvent, 但是屏幕上的节点信息确实产生变化</p><p>唯一的办法是在开始匹配的一定时间内主动查询屏幕节点</p><h4 id="inherited-from-11" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-11" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#forcedtime"><code>forcedTime</code></a></p><hr><h3 id="prioritytime" tabindex="-1">priorityTime? <a class="header-anchor" href="#prioritytime" aria-label="Permalink to “priorityTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>priorityTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>设置一个优先级时间, 在优先级时间内, 此规则为 优先级规则</p><p>如果规则参与匹配, 匹配顺序为 优先级规则(内部 order 排序) -&gt; 普通规则(内部 order 排序)</p><p>当新无障碍事件到来时, 如果当前匹配规则是普通规则, 则中断匹配操作重新匹配</p><p>优先时间过后, 规则将变为普通规则</p><p>使用场景: 某些应用开启很多规则, 导致开屏一类规则被其他规则阻塞, 可以设置优先级时间让开屏规则优先匹配</p><p>注意: 如果全部规则都是优先级规则或只有一个规则, 则不会发生中断行为</p><h4 id="inherited-from-12" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-12" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#prioritytime"><code>priorityTime</code></a></p><hr><h3 id="priorityactionmaximum" tabindex="-1">priorityActionMaximum? <a class="header-anchor" href="#priorityactionmaximum" aria-label="Permalink to “priorityActionMaximum?”">​</a></h3><blockquote><p><code>optional</code> <strong>priorityActionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>优先级执行次数, 触发多少次后, 规则将变为普通规则</p><h4 id="default-5" tabindex="-1">Default <a class="header-anchor" href="#default-5" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span></span></code></pre></div><h4 id="inherited-from-13" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-13" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#priorityactionmaximum"><code>priorityActionMaximum</code></a></p><hr><h3 id="snapshoturls" tabindex="-1">snapshotUrls? <a class="header-anchor" href="#snapshoturls" aria-label="Permalink to “snapshotUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>snapshotUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的匹配界面快照链接, 增强订阅可维护性</p><h4 id="inherited-from-14" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-14" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#snapshoturls"><code>snapshotUrls</code></a></p><hr><h3 id="excludesnapshoturls" tabindex="-1">excludeSnapshotUrls? <a class="header-anchor" href="#excludesnapshoturls" aria-label="Permalink to “excludeSnapshotUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>excludeSnapshotUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的排除匹配界面的快照链接</p><h4 id="inherited-from-15" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-15" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#excludesnapshoturls"><code>excludeSnapshotUrls</code></a></p><hr><h3 id="exampleurls" tabindex="-1">exampleUrls? <a class="header-anchor" href="#exampleurls" aria-label="Permalink to “exampleUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>exampleUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的规则在手机上的运行示例, 支持 jpg/png/webp/gif</p><p>如果规则是多个规则组合起来的, 可以更好看懂规则到底在干啥, 比如 点击关闭按钮-选择关闭原因-确认关闭 这种广告用 gif 看着更清楚在干啥</p><h4 id="inherited-from-16" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-16" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#exampleurls"><code>exampleUrls</code></a></p><hr><h3 id="key" tabindex="-1">key <a class="header-anchor" href="#key" aria-label="Permalink to “key”">​</a></h3><blockquote><p><strong>key</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>当前规则组在列表中的唯一标识</p><p>也是客户端禁用/启用此规则组的依据</p><p>设置后不可更改, 否则造成客户端启用/禁用错乱</p><p>key 没有顺序大小之分, 可以是任意数字</p><h4 id="inherited-from-17" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-17" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#key"><code>key</code></a></p><hr><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to “name”">​</a></h3><blockquote><p><strong>name</strong>: <code>string</code></p></blockquote><p>规则组名称</p><h4 id="inherited-from-18" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-18" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#name"><code>name</code></a></p><hr><h3 id="desc" tabindex="-1">desc? <a class="header-anchor" href="#desc" aria-label="Permalink to “desc?”">​</a></h3><blockquote><p><code>optional</code> <strong>desc</strong>: <code>string</code></p></blockquote><p>规则组描述</p><h4 id="inherited-from-19" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-19" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#desc"><code>desc</code></a></p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to “enable?”">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>控制规则默认情况下是启用还是禁用</p><h4 id="default-6" tabindex="-1">Default <a class="header-anchor" href="#default-6" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><h4 id="inherited-from-20" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-20" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#enable"><code>enable</code></a></p><hr><h3 id="scopekeys" tabindex="-1">scopeKeys? <a class="header-anchor" href="#scopekeys" aria-label="Permalink to “scopeKeys?”">​</a></h3><blockquote><p><code>optional</code> <strong>scopeKeys</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>其它 group 的 key, 允许将目标组的所有 rule 添加到当前组的作用域</p><p>假设 group1[key=1] 有一个 rule1[key=11], group2[key=2] 有 rule2[key=22], rule3[key=23]</p><p>如果 group1 的 scopeKeys=[2] 并且 group2 没有被禁用, 那么 rule1 的 preKeys/actionCdKey/actionMaximumKey 可以是 11/22/23</p><p>如果存在相同 key 的 rule, 优先使用本组的 rule, 其次按 scopeKeys 的顺序查找其它组的 rule</p><h4 id="inherited-from-21" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-21" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGroupProps"><code>RawGroupProps</code></a>.<a href="./RawGroupProps#scopekeys"><code>scopeKeys</code></a></p><hr><h3 id="matchanyapp" tabindex="-1">matchAnyApp? <a class="header-anchor" href="#matchanyapp" aria-label="Permalink to “matchAnyApp?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchAnyApp</strong>: <code>boolean</code></p></blockquote><p>true =&gt; 匹配任意应用</p><p>false =&gt; 仅匹配 apps 里面的应用</p><h4 id="default-7" tabindex="-1">Default <a class="header-anchor" href="#default-7" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><h4 id="inherited-from-22" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-22" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a>.<a href="./RawGlobalRuleProps#matchanyapp"><code>matchAnyApp</code></a></p><hr><h3 id="matchlauncher" tabindex="-1">matchLauncher? <a class="header-anchor" href="#matchlauncher" aria-label="Permalink to “matchLauncher?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchLauncher</strong>: <code>boolean</code></p></blockquote><p>是否匹配桌面, 仅全局规则可用</p><p>如果你切换了桌面, 你需要打开 GKD 的界面触发识别新桌面</p><h4 id="default-8" tabindex="-1">Default <a class="header-anchor" href="#default-8" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-23" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-23" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a>.<a href="./RawGlobalRuleProps#matchlauncher"><code>matchLauncher</code></a></p><hr><h3 id="matchsystemapp" tabindex="-1">matchSystemApp? <a class="header-anchor" href="#matchsystemapp" aria-label="Permalink to “matchSystemApp?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchSystemApp</strong>: <code>boolean</code></p></blockquote><p>是否匹配系统应用, 仅全局规则可用</p><h4 id="default-9" tabindex="-1">Default <a class="header-anchor" href="#default-9" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-24" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-24" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a>.<a href="./RawGlobalRuleProps#matchsystemapp"><code>matchSystemApp</code></a></p><hr><h3 id="apps" tabindex="-1">apps? <a class="header-anchor" href="#apps" aria-label="Permalink to “apps?”">​</a></h3><blockquote><p><code>optional</code> <strong>apps</strong>: <a href="./RawGlobalApp"><code>RawGlobalApp</code></a>[]</p></blockquote><p>应用配置列表, 配置应用内界面如何匹配或不匹配</p><h4 id="inherited-from-25" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-25" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a>.<a href="./RawGlobalRuleProps#apps"><code>apps</code></a></p>`,238)]))}const f=a(t,[["render",s]]);export{u as __pageData,f as default};
@@ -1 +0,0 @@
1
- import{_ as a,c as r,o,aq as i}from"./chunks/framework.C9O3MI31.js";const u=JSON.parse('{"title":"RawGlobalGroup","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalGroup.md","filePath":"api/interfaces/RawGlobalGroup.md","lastUpdated":null}'),t={name:"api/interfaces/RawGlobalGroup.md"};function s(l,e,h,d,p,n){return o(),r("div",null,e[0]||(e[0]=[i("",238)]))}const f=a(t,[["render",s]]);export{u as __pageData,f as default};
@@ -1 +0,0 @@
1
- import{_ as a,c as i,o as r,aq as s}from"./chunks/framework.C9O3MI31.js";const k=JSON.parse('{"title":"RawGlobalRule","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalRule.md","filePath":"api/interfaces/RawGlobalRule.md","lastUpdated":null}'),t={name:"api/interfaces/RawGlobalRule.md"};function o(l,e,h,n,d,c){return r(),i("div",null,e[0]||(e[0]=[s('<h1 id="rawglobalrule" tabindex="-1">RawGlobalRule <a class="header-anchor" href="#rawglobalrule" aria-label="Permalink to “RawGlobalRule”">​</a></h1><p>全局规则</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to “Extends”">​</a></h2><ul><li><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to “Properties”">​</a></h2><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to “actionCd?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#actioncd"><code>actionCd</code></a></p><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to “actionDelay?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#actiondelay"><code>actionDelay</code></a></p><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to “fastQuery?”">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/guide/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#fastquery"><code>fastQuery</code></a></p><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to “matchRoot?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#matchroot"><code>matchRoot</code></a></p><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to “matchDelay?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#matchdelay"><code>matchDelay</code></a></p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to “matchTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#matchtime"><code>matchTime</code></a></p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to “actionMaximum?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><h4 id="inherited-from-6" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-6" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#actionmaximum"><code>actionMaximum</code></a></p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to “resetMatch?”">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;match&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>决定如何重置 matchTime/actionMaximum,如果规则因 matchTime/actionMaximum 而休眠, 重置可以唤醒规则</p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to “Examples”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 当 activity 刷新时, 重置规则</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 刷新 activity 并不代表 activityId 变化</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 如 哔哩哔哩视频播放页 底部点击推荐视频 进入另一个 视频播放页, 进入了新 activity 但是 activityId 并没有变化</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;match&#39;</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 在应用内由不匹配界面切换为匹配界面时, 重置规则</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;app&#39;</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 重新进入 app 时, 重置规则</span></span></code></pre></div><h4 id="inherited-from-7" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-7" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#resetmatch"><code>resetMatch</code></a></p><hr><h3 id="actioncdkey" tabindex="-1">actionCdKey? <a class="header-anchor" href="#actioncdkey" aria-label="Permalink to “actionCdKey?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionCdKey</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>与这个 key 的 rule 共享 cd</p><p>比如开屏广告可能需要多个 rule 去匹配, 当一个 rule 触发时, 其它 rule 的触发是无意义的</p><p>如果你对这个 key 的 rule 设置 actionCd=3000, 那么当这个 rule 和 本 rule 触发任意一个时, 在 3000 毫秒 内两个 rule 都将进入 cd</p><h4 id="inherited-from-8" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-8" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#actioncdkey"><code>actionCdKey</code></a></p><hr><h3 id="actionmaximumkey" tabindex="-1">actionMaximumKey? <a class="header-anchor" href="#actionmaximumkey" aria-label="Permalink to “actionMaximumKey?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximumKey</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>与这个 key 的 rule 共享次数</p><p>比如开屏广告可能需要多个 rule 去匹配, 当一个 rule 触发时, 其它 rule 的触发是无意义的</p><p>如果你对这个 key 的 rule 设置 actionMaximum=1, 那么当这个 rule 和 本 rule 触发任意一个时, 两个 rule 都将进入休眠</p><h4 id="inherited-from-9" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-9" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#actionmaximumkey"><code>actionMaximumKey</code></a></p><hr><h3 id="order" tabindex="-1">order? <a class="header-anchor" href="#order" aria-label="Permalink to “order?”">​</a></h3><blockquote><p><code>optional</code> <strong>order</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>规则参与匹配的顺序, 数字越小越先匹配</p><p>如果两个规则 order 相同, 按照 groups 中的数组顺序匹配, app 类型规则顺序优先于 global 类型规则</p><p>属于不同订阅的规则按照订阅列表中顺序匹配, 长按订阅卡片可以拖动排序</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span></span></code></pre></div><h4 id="inherited-from-10" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-10" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#order"><code>order</code></a></p><hr><h3 id="forcedtime" tabindex="-1">forcedTime? <a class="header-anchor" href="#forcedtime" aria-label="Permalink to “forcedTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>forcedTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>在开始匹配后的一段时间内, 不管界面没有通知变化, 主动使此规则参与屏幕查询</p><p>GKD 借助 <a href="https://developer.android.com/reference/android/accessibilityservice/AccessibilityService#onAccessibilityEvent(android.view.accessibility.AccessibilityEvent)" target="_blank" rel="noreferrer">onAccessibilityEvent</a> 感知界面变化</p><p>但是某些基于 flutter/webview 开发的应用/页面在变化时并不会通知系统去触发 onAccessibilityEvent, 但是屏幕上的节点信息确实产生变化</p><p>唯一的办法是在开始匹配的一定时间内主动查询屏幕节点</p><h4 id="inherited-from-11" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-11" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#forcedtime"><code>forcedTime</code></a></p><hr><h3 id="prioritytime" tabindex="-1">priorityTime? <a class="header-anchor" href="#prioritytime" aria-label="Permalink to “priorityTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>priorityTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>设置一个优先级时间, 在优先级时间内, 此规则为 优先级规则</p><p>如果规则参与匹配, 匹配顺序为 优先级规则(内部 order 排序) -&gt; 普通规则(内部 order 排序)</p><p>当新无障碍事件到来时, 如果当前匹配规则是普通规则, 则中断匹配操作重新匹配</p><p>优先时间过后, 规则将变为普通规则</p><p>使用场景: 某些应用开启很多规则, 导致开屏一类规则被其他规则阻塞, 可以设置优先级时间让开屏规则优先匹配</p><p>注意: 如果全部规则都是优先级规则或只有一个规则, 则不会发生中断行为</p><h4 id="inherited-from-12" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-12" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#prioritytime"><code>priorityTime</code></a></p><hr><h3 id="priorityactionmaximum" tabindex="-1">priorityActionMaximum? <a class="header-anchor" href="#priorityactionmaximum" aria-label="Permalink to “priorityActionMaximum?”">​</a></h3><blockquote><p><code>optional</code> <strong>priorityActionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>优先级执行次数, 触发多少次后, 规则将变为普通规则</p><h4 id="default-5" tabindex="-1">Default <a class="header-anchor" href="#default-5" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span></span></code></pre></div><h4 id="inherited-from-13" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-13" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#priorityactionmaximum"><code>priorityActionMaximum</code></a></p><hr><h3 id="snapshoturls" tabindex="-1">snapshotUrls? <a class="header-anchor" href="#snapshoturls" aria-label="Permalink to “snapshotUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>snapshotUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的匹配界面快照链接, 增强订阅可维护性</p><h4 id="inherited-from-14" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-14" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#snapshoturls"><code>snapshotUrls</code></a></p><hr><h3 id="excludesnapshoturls" tabindex="-1">excludeSnapshotUrls? <a class="header-anchor" href="#excludesnapshoturls" aria-label="Permalink to “excludeSnapshotUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>excludeSnapshotUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的排除匹配界面的快照链接</p><h4 id="inherited-from-15" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-15" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#excludesnapshoturls"><code>excludeSnapshotUrls</code></a></p><hr><h3 id="exampleurls" tabindex="-1">exampleUrls? <a class="header-anchor" href="#exampleurls" aria-label="Permalink to “exampleUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>exampleUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的规则在手机上的运行示例, 支持 jpg/png/webp/gif</p><p>如果规则是多个规则组合起来的, 可以更好看懂规则到底在干啥, 比如 点击关闭按钮-选择关闭原因-确认关闭 这种广告用 gif 看着更清楚在干啥</p><h4 id="inherited-from-16" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-16" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#exampleurls"><code>exampleUrls</code></a></p><hr><h3 id="key" tabindex="-1">key? <a class="header-anchor" href="#key" aria-label="Permalink to “key?”">​</a></h3><blockquote><p><code>optional</code> <strong>key</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>当前规则在列表中的唯一标识</p><p>key 没有顺序大小之分, 可以是任意数字</p><p>设置后不可更改, 否则造成点击记录错乱</p><h4 id="inherited-from-17" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-17" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#key"><code>key</code></a></p><hr><h3 id="name" tabindex="-1">name? <a class="header-anchor" href="#name" aria-label="Permalink to “name?”">​</a></h3><blockquote><p><code>optional</code> <strong>name</strong>: <code>string</code></p></blockquote><p>规则名称</p><h4 id="inherited-from-18" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-18" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#name"><code>name</code></a></p><hr><h3 id="prekeys" tabindex="-1">preKeys? <a class="header-anchor" href="#prekeys" aria-label="Permalink to “preKeys?”">​</a></h3><blockquote><p><code>optional</code> <strong>preKeys</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>要求当前列表里某个 key 刚刚执行</p><p>比如: 点击关闭按钮-选择关闭原因-确认关闭, key 分别是 1,2,3, preKeys 分别是 [],[1],[2]</p><p>那么 选择关闭原因 必须要求 点击关闭按钮 刚刚执行过才能执行, 确认关闭 也要求 选择关闭原因 刚刚执行过才执行</p><p>否则后面的规则不会触发, 也就是要求规则按顺序执行, 这是为了防止规则匹配范围太过广泛而误触</p><h4 id="inherited-from-19" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-19" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#prekeys"><code>preKeys</code></a></p><hr><h3 id="action" tabindex="-1">action? <a class="header-anchor" href="#action" aria-label="Permalink to “action?”">​</a></h3><blockquote><p><code>optional</code> <strong>action</strong>: <code>&quot;click&quot;</code> | <code>&quot;clickNode&quot;</code> | <code>&quot;clickCenter&quot;</code> | <code>&quot;back&quot;</code> | <code>&quot;longClick&quot;</code> | <code>&quot;longClickNode&quot;</code> | <code>&quot;longClickCenter&quot;</code> | <code>&quot;swipe&quot;</code> | <code>&quot;none&quot;</code></p></blockquote><p>规则匹配后的操作行为</p><p>在 <a href="./RawRuleProps#position">position</a> 存在的情况下, action 的默认值为 <code>clickCenter</code></p><p>在 <a href="./RawRuleProps#swipearg">swipeArg</a> 存在的情况下, action 的默认值为 <code>swipe</code></p><h4 id="examples-1" tabindex="-1">Examples <a class="header-anchor" href="#examples-1" aria-label="Permalink to “Examples”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`click`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 为默认值, 如果目标节点是 clickable 的, 则使用 `clickNode`, 反之使用 `clickCenter`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 并且当 `clickNode` 事件没有被应用接收时, 则使用 `clickCenter`</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`clickNode`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 向系统发起一个点击无障碍节点事件. 即使节点在屏幕外部/或者被其它节点遮挡,也依然能够正确触发点击目标节点</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 但是如果目标节点不是 clickable 的, 目标应用通常不响应这个点击事件, 也就是点击无效果</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 在极少数情况下, 即使节点是 clickable 的,应用显示接收但是不响应节点点击事件, 此时需要手动设置 `clickCenter`</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`clickCenter`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 计算出此控件的中心的坐标并且如果这个坐标在屏幕内部,那么就向系统发起一个点击屏幕坐标事件</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 如果这个坐标不在屏幕内部, 当作未匹配</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 另外如果目标节点的位置被其它节点遮挡覆盖, 则会点击触发最上层的节点(可能不是目标节点)</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`back`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 向系统发起一个返回事件, 相当于按下返回键</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`longClick`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 如果目标节点是 longClickable 的, 则使用 `longClickNode`, 反之使用 `longClickCenter`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 并且当 `longClickNode` 事件没有被应用接收时, 则使用 `longClickCenter`</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`longClickNode`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 向系统发起一个长按无障碍节点事件,与 clickNode 类似</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`longClickCenter`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 与 clickCenter 类似, 长按时间为 400 毫秒</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`swipe`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 向系统发起一个滑动事件, 使用 swipeArg 定义滑动参数</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`none`</span></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 什么都不做, 仅作为匹配标记使用</span></span></code></pre></div><h4 id="inherited-from-20" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-20" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#action"><code>action</code></a></p><hr><h3 id="position" tabindex="-1">position? <a class="header-anchor" href="#position" aria-label="Permalink to “position?”">​</a></h3><blockquote><p><code>optional</code> <strong>position</strong>: <a href="./../type-aliases/Position"><code>Position</code></a></p></blockquote><p>在使用 clickCenter/longClickCenter 时的自定义点击位置</p><p>默认坐标为节点中心</p><p>如果计算出的坐标不在屏幕内部, 当作未匹配</p><p>在 position 存在的情况下, <a href="./RawRuleProps#action">action</a> 的默认值为 <code>clickCenter</code></p><h4 id="inherited-from-21" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-21" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#position"><code>position</code></a></p><hr><h3 id="swipearg" tabindex="-1">swipeArg? <a class="header-anchor" href="#swipearg" aria-label="Permalink to “swipeArg?”">​</a></h3><blockquote><p><code>optional</code> <strong>swipeArg</strong>: <a href="./../type-aliases/SwipeArg"><code>SwipeArg</code></a></p></blockquote><p>在使用 swipe 时的滑动参数</p><p>在 swipeArg 存在的情况下, <a href="./RawRuleProps#action">action</a> 的默认值为 <code>swipe</code></p><h4 id="inherited-from-22" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-22" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#swipearg"><code>swipeArg</code></a></p><hr><h3 id="matches" tabindex="-1">matches? <a class="header-anchor" href="#matches" aria-label="Permalink to “matches?”">​</a></h3><blockquote><p><code>optional</code> <strong>matches</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>一个或者多个合法的 GKD 选择器, 如果所有选择器都能匹配上节点, 那么点击最后一个选择器的目标节点</p><p>点击优先级大于 <a href="./RawRuleProps#anymatches">anyMatches</a></p><h4 id="inherited-from-23" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-23" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#matches"><code>matches</code></a></p><hr><h3 id="anymatches" tabindex="-1">anyMatches? <a class="header-anchor" href="#anymatches" aria-label="Permalink to “anyMatches?”">​</a></h3><blockquote><p><code>optional</code> <strong>anyMatches</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>一个或者多个合法的 GKD 选择器, 如果存在一个选择器能匹配上节点, 那么点击这个节点</p><p>如果 anyMatches 的所有选择器都无法匹配, 则停止匹配此规则</p><p>与 <a href="./RawRuleProps#matches">matches</a> 一起使用时, 仍然点击 <a href="./RawRuleProps#matches">matches</a> 的最后一项</p><h4 id="inherited-from-24" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-24" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#anymatches"><code>anyMatches</code></a></p><hr><h3 id="excludematches" tabindex="-1">excludeMatches? <a class="header-anchor" href="#excludematches" aria-label="Permalink to “excludeMatches?”">​</a></h3><blockquote><p><code>optional</code> <strong>excludeMatches</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>一个或者多个合法的 GKD 选择器, 如果存在一个选择器匹配上节点, 则停止匹配此规则</p><h4 id="inherited-from-25" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-25" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#excludematches"><code>excludeMatches</code></a></p><hr><h3 id="excludeallmatches" tabindex="-1">excludeAllMatches? <a class="header-anchor" href="#excludeallmatches" aria-label="Permalink to “excludeAllMatches?”">​</a></h3><blockquote><p><code>optional</code> <strong>excludeAllMatches</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>一个或者多个合法的 GKD 选择器, 如果所有选择器匹配上节点, 则停止匹配此规则</p><h4 id="inherited-from-26" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-26" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawRuleProps"><code>RawRuleProps</code></a>.<a href="./RawRuleProps#excludeallmatches"><code>excludeAllMatches</code></a></p><hr><h3 id="matchanyapp" tabindex="-1">matchAnyApp? <a class="header-anchor" href="#matchanyapp" aria-label="Permalink to “matchAnyApp?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchAnyApp</strong>: <code>boolean</code></p></blockquote><p>true =&gt; 匹配任意应用</p><p>false =&gt; 仅匹配 apps 里面的应用</p><h4 id="default-6" tabindex="-1">Default <a class="header-anchor" href="#default-6" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><h4 id="inherited-from-27" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-27" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a>.<a href="./RawGlobalRuleProps#matchanyapp"><code>matchAnyApp</code></a></p><hr><h3 id="matchlauncher" tabindex="-1">matchLauncher? <a class="header-anchor" href="#matchlauncher" aria-label="Permalink to “matchLauncher?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchLauncher</strong>: <code>boolean</code></p></blockquote><p>是否匹配桌面, 仅全局规则可用</p><p>如果你切换了桌面, 你需要打开 GKD 的界面触发识别新桌面</p><h4 id="default-7" tabindex="-1">Default <a class="header-anchor" href="#default-7" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-28" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-28" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a>.<a href="./RawGlobalRuleProps#matchlauncher"><code>matchLauncher</code></a></p><hr><h3 id="matchsystemapp" tabindex="-1">matchSystemApp? <a class="header-anchor" href="#matchsystemapp" aria-label="Permalink to “matchSystemApp?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchSystemApp</strong>: <code>boolean</code></p></blockquote><p>是否匹配系统应用, 仅全局规则可用</p><h4 id="default-8" tabindex="-1">Default <a class="header-anchor" href="#default-8" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-29" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-29" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a>.<a href="./RawGlobalRuleProps#matchsystemapp"><code>matchSystemApp</code></a></p><hr><h3 id="apps" tabindex="-1">apps? <a class="header-anchor" href="#apps" aria-label="Permalink to “apps?”">​</a></h3><blockquote><p><code>optional</code> <strong>apps</strong>: <a href="./RawGlobalApp"><code>RawGlobalApp</code></a>[]</p></blockquote><p>应用配置列表, 配置应用内界面如何匹配或不匹配</p><h4 id="inherited-from-30" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-30" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawGlobalRuleProps"><code>RawGlobalRuleProps</code></a>.<a href="./RawGlobalRuleProps#apps"><code>apps</code></a></p>',274)]))}const u=a(t,[["render",o]]);export{k as __pageData,u as default};
@@ -1 +0,0 @@
1
- import{_ as a,c as i,o as r,aq as s}from"./chunks/framework.C9O3MI31.js";const k=JSON.parse('{"title":"RawGlobalRule","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalRule.md","filePath":"api/interfaces/RawGlobalRule.md","lastUpdated":null}'),t={name:"api/interfaces/RawGlobalRule.md"};function o(l,e,h,n,d,c){return r(),i("div",null,e[0]||(e[0]=[s("",274)]))}const u=a(t,[["render",o]]);export{k as __pageData,u as default};
@@ -1 +0,0 @@
1
- import{_ as e,c as l,o as t,aq as s}from"./chunks/framework.C9O3MI31.js";const b=JSON.parse('{"title":"RawGlobalRuleProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalRuleProps.md","filePath":"api/interfaces/RawGlobalRuleProps.md","lastUpdated":null}'),i={name:"api/interfaces/RawGlobalRuleProps.md"};function o(r,a,p,h,n,d){return t(),l("div",null,a[0]||(a[0]=[s('<h1 id="rawglobalruleprops" tabindex="-1">RawGlobalRuleProps <a class="header-anchor" href="#rawglobalruleprops" aria-label="Permalink to “RawGlobalRuleProps”">​</a></h1><p>全局规则的基础通用属性</p><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to “Extended by”">​</a></h2><ul><li><a href="./RawGlobalGroup"><code>RawGlobalGroup</code></a></li><li><a href="./RawGlobalRule"><code>RawGlobalRule</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to “Properties”">​</a></h2><h3 id="matchanyapp" tabindex="-1">matchAnyApp? <a class="header-anchor" href="#matchanyapp" aria-label="Permalink to “matchAnyApp?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchAnyApp</strong>: <code>boolean</code></p></blockquote><p>true =&gt; 匹配任意应用</p><p>false =&gt; 仅匹配 apps 里面的应用</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><hr><h3 id="matchlauncher" tabindex="-1">matchLauncher? <a class="header-anchor" href="#matchlauncher" aria-label="Permalink to “matchLauncher?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchLauncher</strong>: <code>boolean</code></p></blockquote><p>是否匹配桌面, 仅全局规则可用</p><p>如果你切换了桌面, 你需要打开 GKD 的界面触发识别新桌面</p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="matchsystemapp" tabindex="-1">matchSystemApp? <a class="header-anchor" href="#matchsystemapp" aria-label="Permalink to “matchSystemApp?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchSystemApp</strong>: <code>boolean</code></p></blockquote><p>是否匹配系统应用, 仅全局规则可用</p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><hr><h3 id="apps" tabindex="-1">apps? <a class="header-anchor" href="#apps" aria-label="Permalink to “apps?”">​</a></h3><blockquote><p><code>optional</code> <strong>apps</strong>: <a href="./RawGlobalApp"><code>RawGlobalApp</code></a>[]</p></blockquote><p>应用配置列表, 配置应用内界面如何匹配或不匹配</p>',28)]))}const u=e(i,[["render",o]]);export{b as __pageData,u as default};
@@ -1 +0,0 @@
1
- import{_ as e,c as l,o as t,aq as s}from"./chunks/framework.C9O3MI31.js";const b=JSON.parse('{"title":"RawGlobalRuleProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGlobalRuleProps.md","filePath":"api/interfaces/RawGlobalRuleProps.md","lastUpdated":null}'),i={name:"api/interfaces/RawGlobalRuleProps.md"};function o(r,a,p,h,n,d){return t(),l("div",null,a[0]||(a[0]=[s("",28)]))}const u=e(i,[["render",o]]);export{b as __pageData,u as default};
@@ -1,6 +0,0 @@
1
- import{_ as a,c as o,o as r,aq as i}from"./chunks/framework.C9O3MI31.js";const m=JSON.parse('{"title":"RawGroupProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGroupProps.md","filePath":"api/interfaces/RawGroupProps.md","lastUpdated":null}'),t={name:"api/interfaces/RawGroupProps.md"};function s(n,e,l,h,d,c){return r(),o("div",null,e[0]||(e[0]=[i(`<h1 id="rawgroupprops" tabindex="-1">RawGroupProps <a class="header-anchor" href="#rawgroupprops" aria-label="Permalink to “RawGroupProps”">​</a></h1><p>全局规则组和应用规则组的基础通用属性</p><h2 id="extends" tabindex="-1">Extends <a class="header-anchor" href="#extends" aria-label="Permalink to “Extends”">​</a></h2><ul><li><a href="./RawCommonProps"><code>RawCommonProps</code></a></li></ul><h2 id="extended-by" tabindex="-1">Extended by <a class="header-anchor" href="#extended-by" aria-label="Permalink to “Extended by”">​</a></h2><ul><li><a href="./RawGlobalGroup"><code>RawGlobalGroup</code></a></li><li><a href="./RawAppGroup"><code>RawAppGroup</code></a></li></ul><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to “Properties”">​</a></h2><h3 id="actioncd" tabindex="-1">actionCd? <a class="header-anchor" href="#actioncd" aria-label="Permalink to “actionCd?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionCd</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>当前规则的冷却时间, 或者执行 action 最小间隔</p><h4 id="default" tabindex="-1">Default <a class="header-anchor" href="#default" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1000</span></span></code></pre></div><h4 id="inherited-from" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#actioncd"><code>actionCd</code></a></p><hr><h3 id="actiondelay" tabindex="-1">actionDelay? <a class="header-anchor" href="#actiondelay" aria-label="Permalink to “actionDelay?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>延迟执行: 查询到节点-&gt;等待一段时间-&gt;再次查询到节点则执行对应 action</p><h4 id="inherited-from-1" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-1" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#actiondelay"><code>actionDelay</code></a></p><hr><h3 id="fastquery" tabindex="-1">fastQuery? <a class="header-anchor" href="#fastquery" aria-label="Permalink to “fastQuery?”">​</a></h3><blockquote><p><code>optional</code> <strong>fastQuery</strong>: <code>boolean</code></p></blockquote><p>如果开启, 此规则下的所有满足 <strong>特定格式的选择器</strong> 将使用快速查找优化查询速度</p><p>详细文档请查看 <a href="https://gkd.li/guide/optimize" target="_blank" rel="noreferrer">查询优化</a></p><h4 id="default-1" tabindex="-1">Default <a class="header-anchor" href="#default-1" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-2" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-2" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#fastquery"><code>fastQuery</code></a></p><hr><h3 id="matchroot" tabindex="-1">matchRoot? <a class="header-anchor" href="#matchroot" aria-label="Permalink to “matchRoot?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchRoot</strong>: <code>boolean</code></p></blockquote><p>此规则下的所有选择器是否直接从根节点开始匹配</p><p>GKD 的原理是监听系统屏幕节点变化 这时候会接收到一个事件节点, 默认从这个节点开始匹配到其子孙节点</p><p>常见情况是: 如果匹配的速度跟不上节点事件数量的产生速度, 下一次匹配的开始节点将变成根节点</p><p>但是如果节点事件产生速度较慢, 比如屏幕上只有一个节点(文本)在变化, 那么开始匹配的节点一直将是这个节点</p><p>此时如果你的选择器的末端属性选择器选择的不是这个节点, 那么匹配将会失败, 即使你能在网页审查工具查询到这个节点</p><p>为了解决这个问题, 你可以设置 matchRoot=true, 这样每次匹配都会从根节点开始匹配</p><p>以 <a href="https://i.gkd.li/i/16105497" target="_blank" rel="noreferrer">快照-16105497</a> 为例, 事件节点总是 _id=8 的节点, 此时如果你的选择器是 <code>[text*=&quot;15秒&quot;] - [text*=&quot;跳过&quot;]</code></p><p>在 matchRoot=false 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/ec60677f-f0d7-4b0d-8ac2-56306852e4a0" alt="image"></p><p>而在 matchRoot=true 的情况下, 你的匹配范围如下蓝框</p><p><img src="https://github.com/gkd-kit/gkd/assets/38517192/33eb9029-c3c3-4a2e-ab60-a1f099371fef" alt="image"></p><h4 id="default-2" tabindex="-1">Default <a class="header-anchor" href="#default-2" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span></code></pre></div><h4 id="inherited-from-3" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-3" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#matchroot"><code>matchRoot</code></a></p><hr><h3 id="matchdelay" tabindex="-1">matchDelay? <a class="header-anchor" href="#matchdelay" aria-label="Permalink to “matchDelay?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchDelay</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>匹配延迟</p><p>规则准备匹配/或被唤醒时, 等待一段时间, 使此规则参与查询屏幕节点</p><h4 id="inherited-from-4" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-4" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#matchdelay"><code>matchDelay</code></a></p><hr><h3 id="matchtime" tabindex="-1">matchTime? <a class="header-anchor" href="#matchtime" aria-label="Permalink to “matchTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>matchTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>规则匹配时间, 此规则参与查询屏幕节点时, 等待一段时间, 休眠此规则</p><p>例如某些应用的 开屏广告 的 activityId 容易误触/太广泛, 而开屏广告几乎只在应用切出来时出现, 设置一个有限匹配时间能避免后续的误触</p><h4 id="inherited-from-5" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-5" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#matchtime"><code>matchTime</code></a></p><hr><h3 id="actionmaximum" tabindex="-1">actionMaximum? <a class="header-anchor" href="#actionmaximum" aria-label="Permalink to “actionMaximum?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>最大执行次数</p><p>规则的 action 被执行的最大次数, 达到最大次数时, 休眠此规则</p><p>功能类似 matchTime, 适用于只需要执行一次的: 开屏广告/更新弹窗/青少年弹窗 一类规则</p><p>当规则准备匹配/或被唤醒时, 将重新计算次数</p><h4 id="inherited-from-6" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-6" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#actionmaximum"><code>actionMaximum</code></a></p><hr><h3 id="resetmatch" tabindex="-1">resetMatch? <a class="header-anchor" href="#resetmatch" aria-label="Permalink to “resetMatch?”">​</a></h3><blockquote><p><code>optional</code> <strong>resetMatch</strong>: <code>&quot;activity&quot;</code> | <code>&quot;match&quot;</code> | <code>&quot;app&quot;</code></p></blockquote><p>决定如何重置 matchTime/actionMaximum,如果规则因 matchTime/actionMaximum 而休眠, 重置可以唤醒规则</p><h4 id="default-3" tabindex="-1">Default <a class="header-anchor" href="#default-3" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span></code></pre></div><h4 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to “Examples”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;activity&#39;</span></span>
2
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 当 activity 刷新时, 重置规则</span></span>
3
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 刷新 activity 并不代表 activityId 变化</span></span>
4
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 如 哔哩哔哩视频播放页 底部点击推荐视频 进入另一个 视频播放页, 进入了新 activity 但是 activityId 并没有变化</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;match&#39;</span></span>
5
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 在应用内由不匹配界面切换为匹配界面时, 重置规则</span></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;app&#39;</span></span>
6
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 重新进入 app 时, 重置规则</span></span></code></pre></div><h4 id="inherited-from-7" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-7" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#resetmatch"><code>resetMatch</code></a></p><hr><h3 id="actioncdkey" tabindex="-1">actionCdKey? <a class="header-anchor" href="#actioncdkey" aria-label="Permalink to “actionCdKey?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionCdKey</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>与这个 key 的 rule 共享 cd</p><p>比如开屏广告可能需要多个 rule 去匹配, 当一个 rule 触发时, 其它 rule 的触发是无意义的</p><p>如果你对这个 key 的 rule 设置 actionCd=3000, 那么当这个 rule 和 本 rule 触发任意一个时, 在 3000 毫秒 内两个 rule 都将进入 cd</p><h4 id="inherited-from-8" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-8" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#actioncdkey"><code>actionCdKey</code></a></p><hr><h3 id="actionmaximumkey" tabindex="-1">actionMaximumKey? <a class="header-anchor" href="#actionmaximumkey" aria-label="Permalink to “actionMaximumKey?”">​</a></h3><blockquote><p><code>optional</code> <strong>actionMaximumKey</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>与这个 key 的 rule 共享次数</p><p>比如开屏广告可能需要多个 rule 去匹配, 当一个 rule 触发时, 其它 rule 的触发是无意义的</p><p>如果你对这个 key 的 rule 设置 actionMaximum=1, 那么当这个 rule 和 本 rule 触发任意一个时, 两个 rule 都将进入休眠</p><h4 id="inherited-from-9" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-9" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#actionmaximumkey"><code>actionMaximumKey</code></a></p><hr><h3 id="order" tabindex="-1">order? <a class="header-anchor" href="#order" aria-label="Permalink to “order?”">​</a></h3><blockquote><p><code>optional</code> <strong>order</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>规则参与匹配的顺序, 数字越小越先匹配</p><p>如果两个规则 order 相同, 按照 groups 中的数组顺序匹配, app 类型规则顺序优先于 global 类型规则</p><p>属于不同订阅的规则按照订阅列表中顺序匹配, 长按订阅卡片可以拖动排序</p><h4 id="default-4" tabindex="-1">Default <a class="header-anchor" href="#default-4" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span></span></code></pre></div><h4 id="inherited-from-10" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-10" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#order"><code>order</code></a></p><hr><h3 id="forcedtime" tabindex="-1">forcedTime? <a class="header-anchor" href="#forcedtime" aria-label="Permalink to “forcedTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>forcedTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>单位: 毫秒</p><p>在开始匹配后的一段时间内, 不管界面没有通知变化, 主动使此规则参与屏幕查询</p><p>GKD 借助 <a href="https://developer.android.com/reference/android/accessibilityservice/AccessibilityService#onAccessibilityEvent(android.view.accessibility.AccessibilityEvent)" target="_blank" rel="noreferrer">onAccessibilityEvent</a> 感知界面变化</p><p>但是某些基于 flutter/webview 开发的应用/页面在变化时并不会通知系统去触发 onAccessibilityEvent, 但是屏幕上的节点信息确实产生变化</p><p>唯一的办法是在开始匹配的一定时间内主动查询屏幕节点</p><h4 id="inherited-from-11" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-11" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#forcedtime"><code>forcedTime</code></a></p><hr><h3 id="prioritytime" tabindex="-1">priorityTime? <a class="header-anchor" href="#prioritytime" aria-label="Permalink to “priorityTime?”">​</a></h3><blockquote><p><code>optional</code> <strong>priorityTime</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>设置一个优先级时间, 在优先级时间内, 此规则为 优先级规则</p><p>如果规则参与匹配, 匹配顺序为 优先级规则(内部 order 排序) -&gt; 普通规则(内部 order 排序)</p><p>当新无障碍事件到来时, 如果当前匹配规则是普通规则, 则中断匹配操作重新匹配</p><p>优先时间过后, 规则将变为普通规则</p><p>使用场景: 某些应用开启很多规则, 导致开屏一类规则被其他规则阻塞, 可以设置优先级时间让开屏规则优先匹配</p><p>注意: 如果全部规则都是优先级规则或只有一个规则, 则不会发生中断行为</p><h4 id="inherited-from-12" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-12" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#prioritytime"><code>priorityTime</code></a></p><hr><h3 id="priorityactionmaximum" tabindex="-1">priorityActionMaximum? <a class="header-anchor" href="#priorityactionmaximum" aria-label="Permalink to “priorityActionMaximum?”">​</a></h3><blockquote><p><code>optional</code> <strong>priorityActionMaximum</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>优先级执行次数, 触发多少次后, 规则将变为普通规则</p><h4 id="default-5" tabindex="-1">Default <a class="header-anchor" href="#default-5" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span></span></code></pre></div><h4 id="inherited-from-13" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-13" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#priorityactionmaximum"><code>priorityActionMaximum</code></a></p><hr><h3 id="snapshoturls" tabindex="-1">snapshotUrls? <a class="header-anchor" href="#snapshoturls" aria-label="Permalink to “snapshotUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>snapshotUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的匹配界面快照链接, 增强订阅可维护性</p><h4 id="inherited-from-14" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-14" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#snapshoturls"><code>snapshotUrls</code></a></p><hr><h3 id="excludesnapshoturls" tabindex="-1">excludeSnapshotUrls? <a class="header-anchor" href="#excludesnapshoturls" aria-label="Permalink to “excludeSnapshotUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>excludeSnapshotUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的排除匹配界面的快照链接</p><h4 id="inherited-from-15" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-15" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#excludesnapshoturls"><code>excludeSnapshotUrls</code></a></p><hr><h3 id="exampleurls" tabindex="-1">exampleUrls? <a class="header-anchor" href="#exampleurls" aria-label="Permalink to “exampleUrls?”">​</a></h3><blockquote><p><code>optional</code> <strong>exampleUrls</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<code>string</code>&gt;</p></blockquote><p>当前 规则/规则组 的规则在手机上的运行示例, 支持 jpg/png/webp/gif</p><p>如果规则是多个规则组合起来的, 可以更好看懂规则到底在干啥, 比如 点击关闭按钮-选择关闭原因-确认关闭 这种广告用 gif 看着更清楚在干啥</p><h4 id="inherited-from-16" tabindex="-1">Inherited from <a class="header-anchor" href="#inherited-from-16" aria-label="Permalink to “Inherited from”">​</a></h4><p><a href="./RawCommonProps"><code>RawCommonProps</code></a>.<a href="./RawCommonProps#exampleurls"><code>exampleUrls</code></a></p><hr><h3 id="key" tabindex="-1">key <a class="header-anchor" href="#key" aria-label="Permalink to “key”">​</a></h3><blockquote><p><strong>key</strong>: <a href="./../type-aliases/Integer"><code>Integer</code></a></p></blockquote><p>当前规则组在列表中的唯一标识</p><p>也是客户端禁用/启用此规则组的依据</p><p>设置后不可更改, 否则造成客户端启用/禁用错乱</p><p>key 没有顺序大小之分, 可以是任意数字</p><hr><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to “name”">​</a></h3><blockquote><p><strong>name</strong>: <code>string</code></p></blockquote><p>规则组名称</p><hr><h3 id="desc" tabindex="-1">desc? <a class="header-anchor" href="#desc" aria-label="Permalink to “desc?”">​</a></h3><blockquote><p><code>optional</code> <strong>desc</strong>: <code>string</code></p></blockquote><p>规则组描述</p><hr><h3 id="enable" tabindex="-1">enable? <a class="header-anchor" href="#enable" aria-label="Permalink to “enable?”">​</a></h3><blockquote><p><code>optional</code> <strong>enable</strong>: <code>boolean</code></p></blockquote><p>控制规则默认情况下是启用还是禁用</p><h4 id="default-6" tabindex="-1">Default <a class="header-anchor" href="#default-6" aria-label="Permalink to “Default”">​</a></h4><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span></code></pre></div><hr><h3 id="scopekeys" tabindex="-1">scopeKeys? <a class="header-anchor" href="#scopekeys" aria-label="Permalink to “scopeKeys?”">​</a></h3><blockquote><p><code>optional</code> <strong>scopeKeys</strong>: <a href="./../type-aliases/IArray"><code>IArray</code></a>&lt;<a href="./../type-aliases/Integer"><code>Integer</code></a>&gt;</p></blockquote><p>其它 group 的 key, 允许将目标组的所有 rule 添加到当前组的作用域</p><p>假设 group1[key=1] 有一个 rule1[key=11], group2[key=2] 有 rule2[key=22], rule3[key=23]</p><p>如果 group1 的 scopeKeys=[2] 并且 group2 没有被禁用, 那么 rule1 的 preKeys/actionCdKey/actionMaximumKey 可以是 11/22/23</p><p>如果存在相同 key 的 rule, 优先使用本组的 rule, 其次按 scopeKeys 的顺序查找其它组的 rule</p>`,188)]))}const f=a(t,[["render",s]]);export{m as __pageData,f as default};
@@ -1 +0,0 @@
1
- import{_ as a,c as o,o as r,aq as i}from"./chunks/framework.C9O3MI31.js";const m=JSON.parse('{"title":"RawGroupProps","description":"","frontmatter":{},"headers":[],"relativePath":"api/interfaces/RawGroupProps.md","filePath":"api/interfaces/RawGroupProps.md","lastUpdated":null}'),t={name:"api/interfaces/RawGroupProps.md"};function s(n,e,l,h,d,c){return r(),o("div",null,e[0]||(e[0]=[i("",188)]))}const f=a(t,[["render",s]]);export{m as __pageData,f as default};