├── 0_基础配置_工具.json ├── 0_基础配置_开关.json ├── 0_基础配置_消息样式相关.json ├── 2_后置配置.json ├── 2_后置配置_只显示一条消息-白名单.json ├── 2_后置配置_堆叠同一会话的所有通知-白名单.json ├── 2_后置配置_将标题相同的通知视为同一会话-白名单.json ├── 2_后置配置_将标题相同的通知视为同一会话-黑名单.json ├── 2_后置配置_将透传消息作为通知显示-白名单.json ├── 2_后置配置_屏蔽运营消息-白名单.json ├── 2_后置配置_屏蔽运营消息-黑名单.json ├── 2_后置配置_收到消息后台唤醒应用-白名单.json ├── 2_后置配置_消息样式为每条消息添加起始标识.json ├── 2_后置配置_点击时清理会话通知组-白名单.json ├── 2_后置配置_直接打开意图-白名单.json ├── 2_后置配置_直接打开意图-黑名单.json ├── 2_后置配置_移除通知副标题.json ├── 2_后置配置_群聊消息按群分组-白名单.json ├── 2_后置配置_聊天消息按渠道分组-黑名单.json ├── 2_后置配置_聊天消息按类型分组-黑名单.json ├── 2_后置配置_聊天消息聚合成一组-白名单.json ├── 2_后置配置_自动提取意图.json ├── README.md ├── cmb.pb_招商银行.json ├── cmb.pb_招商银行_卡号替换.json ├── com.alibaba.android.rimet_钉钉.json ├── com.coolapk.market_酷安.json ├── com.jingyao.easybike_哈啰.json ├── com.ss.android.lark_飞书.json ├── com.ss.android.lark_飞书_MessagingStyle.json ├── com.ss.android.ugc.aweme_抖音.json ├── com.tencent.mobileqq_QQ.json ├── com.tencent.mobileqq_QQ_MessagingStyle.json ├── com.tencent.mobileqq_QQ_复用QA通知渠道.json ├── com.tencent.mobileqq_QQ_意图重整.json ├── com.tencent.mobileqq_QQ_群头像支持(不装则显示具体群友头像).json ├── com.tencent.mobileqq_QQ_群消息整形-群名标题前添加发送者.json ├── com.tencent.mobileqq_QQ_群消息整形-群名移动至 subtext.json ├── com.xunmeng.pinduoduo_拼多多.json ├── com.zhihu.android_知乎.json ├── com.zhihu.android_知乎_忽略盐选内容.json ├── dependencies.md └── gen_dependencies.ps1 /0_基础配置_工具.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "标记为群组消息": [ 5 | { 6 | "newMetaInfo": { 7 | "extra": { 8 | "__mipush_tag_char_type": "group" 9 | } 10 | }, 11 | "stop": false 12 | } 13 | ], 14 | "群组消息": [ 15 | { 16 | "metaInfo": { 17 | "extra": { 18 | "__mipush_tag_char_type": "group" 19 | } 20 | }, 21 | "stop": false 22 | } 23 | ], 24 | "标记为个人消息": [ 25 | { 26 | "newMetaInfo": { 27 | "extra": { 28 | "__mipush_tag_char_type": "personal" 29 | } 30 | }, 31 | "stop": false 32 | } 33 | ], 34 | "个人消息": [ 35 | { 36 | "metaInfo": { 37 | "extra": { 38 | "__mipush_tag_char_type": "personal" 39 | } 40 | }, 41 | "stop": false 42 | } 43 | ], 44 | "聊天消息": [ 45 | { 46 | "metaInfo": { 47 | "extra": { 48 | "__mipush_tag_char_type": "" 49 | } 50 | }, 51 | "stop": false 52 | } 53 | ], 54 | "trim-description": [ 55 | { 56 | "match": { 57 | "metaInfo": { 58 | "description": "(?[\\s\\S]+)" 59 | } 60 | }, 61 | "replace": { 62 | "metaInfo": { 63 | "description": [ 64 | "replace", 65 | [ 66 | "$", 67 | "v" 68 | ], 69 | "^\\s+|\\s$", 70 | "" 71 | ] 72 | } 73 | }, 74 | "stop": false 75 | } 76 | ] 77 | } 78 | } -------------------------------------------------------------------------------- /0_基础配置_开关.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "干掉运营消息": [ 5 | { 6 | "metaInfo": { 7 | "extra": { 8 | "channel_id": null, 9 | "__mipush_tag_notify": null 10 | } 11 | }, 12 | "operation": "ignore", 13 | "stop": false 14 | } 15 | ], 16 | "允许运营消息": [ 17 | { 18 | "metaInfo": { 19 | "extra": { 20 | "channel_id": null 21 | } 22 | }, 23 | "newMetaInfo": { 24 | "extra": { 25 | "__mipush_tag_notify": "" 26 | } 27 | }, 28 | "stop": false 29 | } 30 | ], 31 | "禁止通知成组": [ 32 | { 33 | "metaInfo": { 34 | "id": "(?.*)" 35 | }, 36 | "newMetaInfo": { 37 | "extra": { 38 | "notification_group": "${id}" 39 | } 40 | }, 41 | "stop": false 42 | } 43 | ], 44 | "按标题成组": [ 45 | { 46 | "metaInfo": { 47 | "title": "(?.*)" 48 | }, 49 | "newMetaInfo": { 50 | "extra": { 51 | "notification_group": "${title}" 52 | } 53 | }, 54 | "stop": false 55 | } 56 | ], 57 | "移除通知副标题": [ 58 | { 59 | "metaInfo": { 60 | "extra": { 61 | "__mi_push_sub_text": null, 62 | "__mipush_tag_sub": null 63 | } 64 | }, 65 | "newMetaInfo": { 66 | "extra": { 67 | "__mi_push_sub_text": "" 68 | } 69 | }, 70 | "stop": false 71 | } 72 | ], 73 | "允许通知副标题": [ 74 | { 75 | "metaInfo": { 76 | "extra": { 77 | "__mi_push_sub_text": null 78 | } 79 | }, 80 | "newMetaInfo": { 81 | "extra": { 82 | "__mipush_tag_sub": "" 83 | } 84 | }, 85 | "stop": false 86 | } 87 | ], 88 | "大图标显示成圆形": [ 89 | { 90 | "newMetaInfo": { 91 | "extra": { 92 | "__mi_push_round_large_icon": "" 93 | } 94 | }, 95 | "stop": false 96 | } 97 | ], 98 | "将标题相同的通知视为同一会话": [ 99 | { 100 | "metaInfo": { 101 | "title": "(?<title>[\\s\\S]*)" 102 | }, 103 | "newMetaInfo": { 104 | "notifyId": [ 105 | "hash", 106 | [ 107 | "$", 108 | "title" 109 | ] 110 | ] 111 | }, 112 | "stop": false 113 | } 114 | ], 115 | "直接打开意图": [ 116 | { 117 | "match": { 118 | "metaInfo": { 119 | "extra": { 120 | "__mipush_tag_open_directly": null 121 | } 122 | } 123 | }, 124 | "replace": { 125 | "metaInfo": { 126 | "extra": { 127 | "use_clicked_activity": "true" 128 | } 129 | } 130 | }, 131 | "stop": false 132 | } 133 | ], 134 | "禁止直接打开意图": [ 135 | { 136 | "replace": { 137 | "metaInfo": { 138 | "extra": { 139 | "use_clicked_activity": "false", 140 | "__mipush_tag_open_directly": "" 141 | } 142 | } 143 | }, 144 | "stop": false 145 | } 146 | ], 147 | "取 payload 作为 intent": [ 148 | { 149 | "match": { 150 | "pushAction": { 151 | "message": { 152 | "payload": "^(?<intent>\\w+://[\\s\\S]+)" 153 | } 154 | } 155 | }, 156 | "replace": { 157 | "metaInfo": { 158 | "extra": { 159 | "intent_uri": "${intent}", 160 | "notify_effect": "2" 161 | } 162 | } 163 | }, 164 | "stop": false 165 | } 166 | ] 167 | } 168 | } -------------------------------------------------------------------------------- /0_基础配置_消息样式相关.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "xmsfVersion": "0.3.8", 4 | "configs": { 5 | "通用消息内容解析": [ 6 | [ 7 | "cond", 8 | [ 9 | "群组消息", 10 | { 11 | "metaInfo": { 12 | "title": "(?<title>.*)", 13 | "description": "(?<name>.*?)[::]\\s*(?<content>[\\s\\S]*)", 14 | "extra": { 15 | "__mi_push_conversation_message": null 16 | } 17 | }, 18 | "newMetaInfo": { 19 | "extra": { 20 | "__mi_push_conversation_title": "${title}", 21 | "__mi_push_conversation_sender": "${name}", 22 | "__mi_push_conversation_message": "${content}" 23 | } 24 | }, 25 | "stop": false 26 | } 27 | ], 28 | [ 29 | "个人消息", 30 | { 31 | "metaInfo": { 32 | "title": "(?<title>.*)", 33 | "description": "(?<content>[\\s\\S]*)", 34 | "extra": { 35 | "__mi_push_conversation_message": null 36 | } 37 | }, 38 | "newMetaInfo": { 39 | "extra": { 40 | "__mi_push_conversation_sender": "${title}", 41 | "__mi_push_conversation_message": "${content}" 42 | } 43 | }, 44 | "stop": false 45 | } 46 | ] 47 | ] 48 | ], 49 | "使用 Messaging Style": [ 50 | "通用消息内容解析", 51 | { 52 | "metaInfo": { 53 | "extra": { 54 | "__mi_push_conversation_message": "" 55 | } 56 | }, 57 | "newMetaInfo": { 58 | "extra": { 59 | "__mi_push_use_messaging_style": "" 60 | } 61 | }, 62 | "stop": false 63 | } 64 | ], 65 | "[Messaging Style] 大图标作为个人头像": [ 66 | { 67 | "metaInfo": { 68 | "extra": { 69 | "__mi_push_conversation_message": "", 70 | "notification_large_icon_uri": "(?<icon>[\\s\\S]+)" 71 | } 72 | }, 73 | "newMetaInfo": { 74 | "extra": { 75 | "__mi_push_conversation_sender_icon": "${icon}", 76 | "notification_large_icon_uri": null 77 | } 78 | }, 79 | "stop": false 80 | } 81 | ], 82 | "[Messaging Style] 消息添加标识": [ 83 | { 84 | "metaInfo": { 85 | "extra": { 86 | "__mipush_conversation_message_indent": null, 87 | "__mi_push_conversation_message": "(?<content>[\\s\\S]+)" 88 | } 89 | }, 90 | "newMetaInfo": { 91 | "extra": { 92 | "__mi_push_conversation_message": "•${content}" 93 | } 94 | }, 95 | "stop": false 96 | }, 97 | { 98 | "metaInfo": { 99 | "extra": { 100 | "__mipush_conversation_message_indent": null, 101 | "__mi_push_conversation_message": "(?<content>[\\s\\S]+)" 102 | } 103 | }, 104 | "newMetaInfo": { 105 | "extra": { 106 | "__mi_push_conversation_message": [ 107 | "replace", 108 | [ 109 | "$", 110 | "content" 111 | ], 112 | "(?m)^(?<=\\s)", 113 | " " 114 | ] 115 | } 116 | }, 117 | "stop": false 118 | }, 119 | { 120 | "metaInfo": { 121 | "extra": { 122 | "__mi_push_conversation_message": "" 123 | } 124 | }, 125 | "newMetaInfo": { 126 | "extra": { 127 | "__mipush_conversation_message_indent": "" 128 | } 129 | }, 130 | "stop": false 131 | } 132 | ], 133 | "群名作为subtext展示": [ 134 | "通用消息内容解析", 135 | { 136 | "metaInfo": { 137 | "extra": { 138 | "__mi_push_conversation_title": "(?<title>[\\s\\S]*)", 139 | "__mi_push_conversation_sender": "(?<sender>[\\s\\S]*)", 140 | "__mi_push_conversation_message": "(?<content>[\\s\\S]*)" 141 | } 142 | }, 143 | "newMetaInfo": { 144 | "title": "${sender}", 145 | "description": "${content}", 146 | "extra": { 147 | "__mi_push_sub_text": "${title}" 148 | } 149 | }, 150 | "stop": false 151 | } 152 | ] 153 | } 154 | } -------------------------------------------------------------------------------- /2_后置配置.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$": [ 5 | "$-将透传消息作为通知显示", 6 | "$-移除通知副标题", 7 | "$-消息样式为每条消息添加起始标识", 8 | "$-将标题相同的通知视为同一会话", 9 | "$-堆叠同一会话的所有通知", 10 | "$-干掉运营消息", 11 | "$-收到消息后台唤醒应用", 12 | "$-只显示一条消息", 13 | "$-自动提取意图", 14 | "$-直接打开意图", 15 | "$-点击时清理会话通知组", 16 | "$-聊天消息聚合成一组", 17 | "$-聊天消息按渠道分组", 18 | "$-聊天消息按类型分组", 19 | "$-群聊消息按群分组" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2_后置配置_只显示一条消息-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-只显示一条消息": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "使用 | 来分隔不同的包名", 10 | "match": { 11 | "packageName": "^(包名写在这里)$" 12 | } 13 | }, 14 | { 15 | "match": { 16 | "packageName": "(?<package>.*)" 17 | }, 18 | "replace": { 19 | "metaInfo": { 20 | "notifyId": [ 21 | "hash", 22 | [ 23 | "$", 24 | "package" 25 | ] 26 | ] 27 | } 28 | }, 29 | "stop": false 30 | } 31 | ] 32 | ] 33 | ] 34 | } 35 | } -------------------------------------------------------------------------------- /2_后置配置_堆叠同一会话的所有通知-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "description": "同一会话的所有通知将会堆叠为一组,这会导致非会话通知无法堆叠", 4 | "configs": { 5 | "$-堆叠同一会话的所有通知": [ 6 | [ 7 | "cond", 8 | [ 9 | { 10 | "description": "使用 | 来分隔不同的包名", 11 | "match": { 12 | "packageName": "^(包名写在这里)$" 13 | } 14 | }, 15 | { 16 | "match": { 17 | "metaInfo": { 18 | "id": "(?<id>.*)", 19 | "notifyId": "(?<group>.*)" 20 | } 21 | }, 22 | "replace": { 23 | "metaInfo": { 24 | "notifyId": ["hash" , ["$", "id"]], 25 | "extra": { 26 | "notification_group": "${group}", 27 | "__mipush_group_same_notifyId": "true" 28 | } 29 | } 30 | }, 31 | "stop": false 32 | } 33 | ] 34 | ] 35 | ] 36 | } 37 | } -------------------------------------------------------------------------------- /2_后置配置_将标题相同的通知视为同一会话-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-将标题相同的通知视为同一会话": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "使用 | 来分隔不同的包名", 10 | "match": { 11 | "packageName": "^(包名写在这里)$" 12 | } 13 | }, 14 | "将标题相同的通知视为同一会话" 15 | ] 16 | ] 17 | ] 18 | } 19 | } -------------------------------------------------------------------------------- /2_后置配置_将标题相同的通知视为同一会话-黑名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-将标题相同的通知视为同一会话": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "使用 | 来分隔不同的包名", 10 | "match": { 11 | "packageName": "^(?!(包名写在这里)$)" 12 | } 13 | }, 14 | "将标题相同的通知视为同一会话" 15 | ] 16 | ] 17 | ] 18 | } 19 | } -------------------------------------------------------------------------------- /2_后置配置_将透传消息作为通知显示-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-将透传消息作为通知显示": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "使用 | 来分隔不同的包名", 10 | "match": { 11 | "packageName": "^(包名写在这里)$" 12 | } 13 | }, 14 | { 15 | "match": { 16 | "metaInfo": { 17 | "notifyId": "(?<id>.*)" 18 | } 19 | }, 20 | "replace": { 21 | "metaInfo": { 22 | "passThrough": "0" 23 | } 24 | }, 25 | "stop": false 26 | } 27 | ] 28 | ] 29 | ] 30 | } 31 | } -------------------------------------------------------------------------------- /2_后置配置_屏蔽运营消息-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-干掉运营消息": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "使用 | 来分隔不同的包名", 10 | "match": { 11 | "packageName": "^(包名写在这里)$" 12 | } 13 | }, 14 | "干掉运营消息" 15 | ] 16 | ] 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /2_后置配置_屏蔽运营消息-黑名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-干掉运营消息": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "使用 | 来分隔不同的包名", 10 | "match": { 11 | "packageName": "^(?!(包名写在这里)$)" 12 | } 13 | }, 14 | "干掉运营消息" 15 | ] 16 | ] 17 | ] 18 | } 19 | } -------------------------------------------------------------------------------- /2_后置配置_收到消息后台唤醒应用-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-收到消息后台唤醒应用": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "使用 | 来分隔不同的包名", 10 | "match": { 11 | "packageName": "^(包名写在这里)$" 12 | } 13 | }, 14 | { 15 | "replace": { 16 | "metaInfo": { 17 | "extra": { 18 | "__awake": "true" 19 | } 20 | } 21 | }, 22 | "stop": false 23 | } 24 | ] 25 | ] 26 | ] 27 | } 28 | } -------------------------------------------------------------------------------- /2_后置配置_消息样式为每条消息添加起始标识.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-消息样式为每条消息添加起始标识": [ 5 | "[Messaging Style] 消息添加标识" 6 | ] 7 | } 8 | } -------------------------------------------------------------------------------- /2_后置配置_点击时清理会话通知组-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-点击时清理会话通知组": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "使用 | 来分隔不同的包名", 10 | "match": { 11 | "packageName": "^(包名写在这里)$", 12 | "metaInfo": { 13 | "extra": { 14 | "__mipush_group_same_notifyId": "true" 15 | } 16 | } 17 | }, 18 | "replace": { 19 | "metaInfo": { 20 | "extra": { 21 | "__mi_push_clear_group": "true" 22 | } 23 | } 24 | }, 25 | "stop": false 26 | } 27 | ] 28 | ] 29 | ] 30 | } 31 | } -------------------------------------------------------------------------------- /2_后置配置_直接打开意图-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-直接打开意图": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "使用 | 来分隔不同的包名", 10 | "match": { 11 | "packageName": "^(包名写在这里|com.xingin.xhs)$" 12 | } 13 | }, 14 | "直接打开意图" 15 | ] 16 | ] 17 | ] 18 | } 19 | } -------------------------------------------------------------------------------- /2_后置配置_直接打开意图-黑名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-直接打开意图": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "description": "忽略阿里移动推送", 10 | "match": { 11 | "metaInfo": { 12 | "extra": { 13 | "callback": "agoo-ack.m.taobao.com" 14 | } 15 | } 16 | } 17 | }, 18 | "" 19 | ], 20 | [ 21 | { 22 | "description": "忽略友盟推送", 23 | "match": { 24 | "metaInfo": { 25 | "extra": { 26 | "callback": "ack.upush.umeng.com" 27 | } 28 | } 29 | } 30 | }, 31 | "" 32 | ], 33 | [ 34 | { 35 | "description": "使用 | 来分隔不同的包名", 36 | "match": { 37 | "packageName": "^(?!(包名写在这里)$)" 38 | } 39 | }, 40 | "直接打开意图" 41 | ] 42 | ] 43 | ] 44 | } 45 | } -------------------------------------------------------------------------------- /2_后置配置_移除通知副标题.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-移除通知副标题": [ 5 | "移除通知副标题" 6 | ] 7 | } 8 | } -------------------------------------------------------------------------------- /2_后置配置_群聊消息按群分组-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-群聊消息按群分组": [ 5 | [ 6 | "cond", 7 | [ 8 | "群组消息", 9 | { 10 | "description": "使用 | 来分隔不同的包名", 11 | "match": { 12 | "packageName": "^(包名写在这里)$", 13 | "metaInfo": { 14 | "notifyId": "(?<group>.*)" 15 | } 16 | }, 17 | "replace": { 18 | "metaInfo": { 19 | "extra": { 20 | "notification_group": "${group}" 21 | } 22 | } 23 | }, 24 | "stop": false 25 | } 26 | ] 27 | ] 28 | ] 29 | } 30 | } -------------------------------------------------------------------------------- /2_后置配置_聊天消息按渠道分组-黑名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "description": "将消息根据通知渠道分组", 4 | "configs": { 5 | "$-聊天消息按类型分组": [ 6 | { 7 | "description": "使用 | 来分隔不同的包名", 8 | "match": { 9 | "packageName": "^(?!(包名写在这里)$)", 10 | "metaInfo": { 11 | "extra": { 12 | "channel_id": "(?<type>.*)" 13 | } 14 | } 15 | }, 16 | "replace": { 17 | "metaInfo": { 18 | "extra": { 19 | "notification_group": "${type}" 20 | } 21 | } 22 | }, 23 | "stop": false 24 | } 25 | ] 26 | } 27 | } -------------------------------------------------------------------------------- /2_后置配置_聊天消息按类型分组-黑名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "description": "将消息根据群组、个人消息进行分组", 4 | "configs": { 5 | "$-聊天消息按类型分组": [ 6 | { 7 | "description": "使用 | 来分隔不同的包名", 8 | "match": { 9 | "packageName": "^(?!(包名写在这里)$)", 10 | "metaInfo": { 11 | "extra": { 12 | "__mipush_tag_char_type": "(?<type>.*)" 13 | } 14 | } 15 | }, 16 | "replace": { 17 | "metaInfo": { 18 | "extra": { 19 | "notification_group": "${type}" 20 | } 21 | } 22 | }, 23 | "stop": false 24 | } 25 | ] 26 | } 27 | } -------------------------------------------------------------------------------- /2_后置配置_聊天消息聚合成一组-白名单.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-聊天消息聚合成一组": [ 5 | [ 6 | "cond", 7 | [ 8 | "聊天消息", 9 | { 10 | "description": "使用 | 来分隔不同的包名", 11 | "match": { 12 | "packageName": "^(包名写在这里)$" 13 | }, 14 | "replace": { 15 | "metaInfo": { 16 | "extra": { 17 | "notification_group": "chat" 18 | } 19 | } 20 | }, 21 | "stop": false 22 | } 23 | ] 24 | ] 25 | ] 26 | } 27 | } -------------------------------------------------------------------------------- /2_后置配置_自动提取意图.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "$-自动提取意图": [ 5 | "取 payload 作为 intent" 6 | ] 7 | } 8 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 配置文件说明 2 | 配置文件可以做到以下事情: 3 | - 修改通知显示效果 4 | - 通知到来时唤醒屏幕 5 | - 通知到来时触发通知被点击效果(仅触发效果,未实际点击通知) 6 | 7 | ## 配置文件名 8 | 配置名根据以下格式命名,共分为四个部分: 9 | 10 | `${package}_${appname}_${optional_function}-${exclusive_description}.json` 11 | 12 | 不同部分的含义分别为: 13 | - 必填:`${package}`,应用包名 14 | - 使用包名来区分配置针对的是什么应用 15 | - 特殊包名: 16 | - `0`,基础配置,必需下载 17 | - `1`,全局前置配置 18 | - `2`,全局后置配置 19 | - 必填:`${appname}`,应用名 20 | - 用于快速识别配置针对的是什么应用 21 | - 可选:`${optional_function}`,功能名 22 | - 一个应用的配置可以由多份配置文件组成,使用不同的 `${optional_function}` 来标识不同的能力 23 | - 可选:`${exclusive_description}`,互斥能力描述 24 | - 配置中存在相同 `${optional_function}` 时,说明这一组配置文件为互斥配置,只有一个配置生效,此时应只保留其中一个配置文件 25 | - 互斥示例(`${optional_function}` = `群消息整形`): 26 | - `com.tencent.mobileqq_QQ_群消息整形-群名标题前添加发送者.json` 27 | - `com.tencent.mobileqq_QQ_群消息整形-群名移动至 subtext.json` 28 | 29 | ## 配置使用方式 30 | 1. 设置配置目录,入口位于:推送服务 - 设置 31 | 2. 下载所需配置放入该目录中 32 | 3. (可选)若需自定义通知图标,可以在配置目录下创建 `icon` 文件夹,将 [AndroidNotifyIconAdapt](https://github.com/fankes/AndroidNotifyIconAdapt) 仓库的 `json` 文件放入其中 33 | 34 | ## 配置推荐 35 | - QQ 36 | - 基础配置 `com.tencent.mobileqq_QQ.json` 37 | - 消息样式 `com.tencent.mobileqq_QQ_MessagingStyle.json` 38 | 39 | # 配置内容说明 40 | 41 | ## 配置类型 42 | 配置共分为两类: 43 | - 主配置,具有实际包名的配置项(`${package}_${appname}.json`) 44 | ``` json 45 | { 46 | "version": "0.1.0", 47 | "configs": { 48 | "com.coolapk.market": [ 49 | "大图标显示成圆形" 50 | ] 51 | } 52 | } 53 | 54 | ``` 55 | - 子配置,提供引用项被主配置引用(`${package}_${appname}_${optional_function}-${exclusive_description}.json`) 56 | ``` json 57 | { 58 | "version": "0.1.0", 59 | "configs": { 60 | "大图标显示成圆形": [ 61 | { 62 | "newMetaInfo": { 63 | "extra": { 64 | "__mi_push_round_large_icon": "" 65 | } 66 | }, 67 | "stop": false 68 | } 69 | ] 70 | } 71 | } 72 | 73 | ``` 74 | 75 | ## 配置执行流程 76 | 弹出通知时,通过会经过配置进行整行或忽略,执行流程如下: 77 | - 执行 `^` 配置(`1_${appname}.json`) 78 | - 执行应用配置,如 `com.coolapk.market`(`com.coolapk.market_酷安.json`) 79 | - 执行 `$` 配置(`2_${appname}.json`) 80 | 81 | 在配置执行过程中,若遇到一个匹配成功的配置,其配置中未定义 `"stop": false`,则整个流程结束 82 | -------------------------------------------------------------------------------- /cmb.pb_招商银行.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "交易标记初始化": [ 5 | { 6 | "newMetaInfo": { 7 | "extra": { 8 | "__mipush_transaction_type": "", 9 | "__mipush_transaction_location": "", 10 | "__mipush_transaction_account": "" 11 | } 12 | }, 13 | "stop": false 14 | } 15 | ], 16 | "交易符号标记": [ 17 | { 18 | "metaInfo": { 19 | "description": "扣款" 20 | }, 21 | "newMetaInfo": { 22 | "extra": { 23 | "__mipush_transaction_sign": "-" 24 | } 25 | }, 26 | "stop": false 27 | }, 28 | { 29 | "metaInfo": { 30 | "description": "退款|入账" 31 | }, 32 | "newMetaInfo": { 33 | "extra": { 34 | "__mipush_transaction_sign": "+" 35 | } 36 | }, 37 | "stop": false 38 | } 39 | ], 40 | "交易金额标记": [ 41 | { 42 | "metaInfo": { 43 | "description": "(?<amount>(?<=[币元])\\d+(?:.\\d+)?|\\d+(?:.\\d+)?(?=.{0,5}[币元]))" 44 | }, 45 | "newMetaInfo": { 46 | "extra": { 47 | "__mipush_transaction_amount": "${amount}" 48 | } 49 | }, 50 | "stop": false 51 | } 52 | ], 53 | "交易类型标记": [ 54 | { 55 | "metaInfo": { 56 | "description": "发生(?<type>.+?)扣款" 57 | }, 58 | "newMetaInfo": { 59 | "extra": { 60 | "__mipush_transaction_type": "${type}" 61 | } 62 | }, 63 | "stop": false 64 | }, 65 | { 66 | "metaInfo": { 67 | "description": "执行.*的(?<type>.+?)计划" 68 | }, 69 | "newMetaInfo": { 70 | "extra": { 71 | "__mipush_transaction_type": "${type}" 72 | } 73 | }, 74 | "stop": false 75 | } 76 | ], 77 | "交易地点标记": [ 78 | { 79 | "metaInfo": { 80 | "description": "[【「](?<location>.+?)[」】]" 81 | }, 82 | "newMetaInfo": { 83 | "extra": { 84 | "__mipush_transaction_location": "${location}" 85 | } 86 | }, 87 | "stop": false 88 | } 89 | ], 90 | "交易账号标记": [ 91 | { 92 | "metaInfo": { 93 | "description": "(?<account>[账尾][户号]\\d+)" 94 | }, 95 | "newMetaInfo": { 96 | "extra": { 97 | "__mipush_transaction_account": "${account}" 98 | } 99 | }, 100 | "stop": false 101 | } 102 | ], 103 | "cmb.pb": [ 104 | "交易标记初始化", 105 | "交易符号标记", 106 | "交易金额标记", 107 | "交易类型标记", 108 | "交易地点标记", 109 | "交易账号标记", 110 | { 111 | "metaInfo": { 112 | "extra": { 113 | "__mipush_transaction_sign": "(?<sign>.+)", 114 | "__mipush_transaction_amount": "(?<amount>.+)", 115 | "__mipush_transaction_type": "(?<type>.*)", 116 | "__mipush_transaction_location": "(?<location>.*)", 117 | "__mipush_transaction_account": "(?<account>.*)" 118 | } 119 | }, 120 | "newMetaInfo": { 121 | "title": "${account}•${sign}${amount}", 122 | "description": "${location}\n${type}" 123 | }, 124 | "stop": false 125 | }, 126 | "trim-description", 127 | "招商银行-卡号替换" 128 | ] 129 | } 130 | } -------------------------------------------------------------------------------- /cmb.pb_招商银行_卡号替换.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "招商银行-卡号替换": [ 5 | { 6 | "match": { 7 | "metaInfo": { 8 | "title": "(?<v>[\\s\\S]+)" 9 | } 10 | }, 11 | "replace": { 12 | "metaInfo": { 13 | "title": [ 14 | "replace", 15 | [ 16 | "replace", 17 | [ 18 | "$", 19 | "v" 20 | ], 21 | "(账户|尾号)1234", 22 | "工资卡" 23 | ], 24 | "(账户|尾号)1234", 25 | "医保卡" 26 | ] 27 | } 28 | }, 29 | "stop": false 30 | } 31 | ] 32 | } 33 | } -------------------------------------------------------------------------------- /com.alibaba.android.rimet_钉钉.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "钉钉-URL提取": [ 5 | { 6 | "metaInfo": { 7 | "extra": { 8 | "intent_uri": "S\\.targetUrl=(?<data>[^;]+)" 9 | } 10 | }, 11 | "newMetaInfo": { 12 | "extra": { 13 | "__mipush_custom_url": [ 14 | "decode-uri", 15 | [ 16 | "$", 17 | "data" 18 | ] 19 | ] 20 | } 21 | }, 22 | "stop": false 23 | } 24 | ], 25 | "钉钉-会话概念修复": [ 26 | { 27 | "metaInfo": { 28 | "extra": { 29 | "__mipush_custom_url": "\\bcid=(?<id1>[^&]+)" 30 | } 31 | }, 32 | "newMetaInfo": { 33 | "notifyId": [ 34 | "hash", 35 | [ 36 | "$", 37 | "id1" 38 | ] 39 | ] 40 | }, 41 | "stop": false 42 | } 43 | ], 44 | "钉钉-消息类型标记": [ 45 | [ 46 | "cond", 47 | [ 48 | { 49 | "metaInfo": { 50 | "extra": { 51 | "__mipush_custom_url": "\\bcid=(?<id1>[^&:]+):(?<id2>[^&:]+)" 52 | } 53 | } 54 | }, 55 | "标记为个人消息" 56 | ], 57 | [ 58 | { 59 | "metaInfo": { 60 | "extra": { 61 | "__mipush_custom_url": "\\bcid=(?<id1>[^&:]+)" 62 | } 63 | } 64 | }, 65 | "标记为群组消息" 66 | ] 67 | ] 68 | ], 69 | "钉钉-MessagingStyle": [ 70 | [ 71 | "cond", 72 | [ 73 | "群组消息", 74 | { 75 | "metaInfo": { 76 | "description": "(?<name>.*?): \\s*(?<content>[\\s\\S]*)" 77 | }, 78 | "newMetaInfo": { 79 | "extra": { 80 | "__mi_push_conversation_sender": "${name}" 81 | } 82 | }, 83 | "stop": false 84 | } 85 | ] 86 | ], 87 | "使用 Messaging Style" 88 | ], 89 | "com.alibaba.android.rimet": [ 90 | "钉钉-URL提取", 91 | "钉钉-消息类型标记", 92 | "钉钉-会话概念修复", 93 | "钉钉-MessagingStyle", 94 | "允许运营消息", 95 | { 96 | "name": "钉钉来电时自动唤醒和打开", 97 | "metaInfo": { 98 | "description": "邀请你进行语音通话" 99 | }, 100 | "operation": "wake|open", 101 | "stop": false 102 | } 103 | ] 104 | } 105 | } -------------------------------------------------------------------------------- /com.coolapk.market_酷安.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "com.coolapk.market": [ 5 | { 6 | "name": "头像支持", 7 | "metaInfo": { 8 | "extra": { 9 | "intent_uri": "customContent=(?<encodedURI>[^&]+)", 10 | "notification_large_icon_uri": null 11 | } 12 | }, 13 | "newMetaInfo": { 14 | "extra": { 15 | "notification_large_icon_uri": [ 16 | "property", 17 | "fromUserAvatar", 18 | [ 19 | "parse-json", 20 | [ 21 | "decode-uri", 22 | [ 23 | "$", 24 | "encodedURI" 25 | ] 26 | ] 27 | ] 28 | ] 29 | } 30 | }, 31 | "stop": false 32 | }, 33 | "大图标显示成圆形" 34 | ] 35 | } 36 | } -------------------------------------------------------------------------------- /com.jingyao.easybike_哈啰.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "哈啰-根据关键词保留通知": [ 5 | { 6 | "name": "哈啰_特定消息通知", 7 | "metaInfo": { 8 | "title": "^(?!.*(车主|哈啰打车|语音|通话))", 9 | "description": "^(?!.*(车主|行程|语音|通话))", 10 | "extra": { 11 | "channel_id": null 12 | } 13 | }, 14 | "operation": "ignore", 15 | "stop": false 16 | } 17 | ], 18 | "哈啰-URL提取": [ 19 | { 20 | "metaInfo": { 21 | "extra": { 22 | "intent_uri": "S\\.JMessageExtra=(?<data>[^;]+)" 23 | } 24 | }, 25 | "newMetaInfo": { 26 | "extra": { 27 | "__mipush_custom_url": [ 28 | "property", 29 | "url", 30 | [ 31 | "property", 32 | "n_extras", 33 | [ 34 | "parse-json", 35 | [ 36 | "decode-uri", 37 | [ 38 | "$", 39 | "data" 40 | ] 41 | ] 42 | ] 43 | ] 44 | ] 45 | } 46 | }, 47 | "stop": false 48 | } 49 | ], 50 | "哈啰-根据跳转 URL 过滤广告": [ 51 | { 52 | "metaInfo": { 53 | "extra": { 54 | "__mipush_custom_url": "^https://" 55 | } 56 | }, 57 | "operation": "ignore", 58 | "stop": false 59 | } 60 | ], 61 | "哈啰-会话概念修复": [ 62 | { 63 | "metaInfo": { 64 | "extra": { 65 | "channel_id": "high_custom_1", 66 | "__mipush_custom_url": "userId=(?<id>\\d+)" 67 | } 68 | }, 69 | "newMetaInfo": { 70 | "notifyId": "${id}" 71 | }, 72 | "stop": false 73 | } 74 | ], 75 | "哈啰-MessagingStyle": [ 76 | { 77 | "metaInfo": { 78 | "description": "(?<name>.*?)[::]\\s*(?<content>[\\s\\S]*)", 79 | "extra": { 80 | "channel_id": "high_custom_1" 81 | } 82 | }, 83 | "newMetaInfo": { 84 | "extra": { 85 | "__mi_push_conversation_sender": "${name}", 86 | "__mi_push_conversation_message": "${content}" 87 | } 88 | }, 89 | "stop": false 90 | }, 91 | "使用 Messaging Style" 92 | ], 93 | "com.jingyao.easybike": [ 94 | "哈啰-URL提取", 95 | "哈啰-会话概念修复", 96 | "哈啰-根据跳转 URL 过滤广告", 97 | "哈啰-MessagingStyle", 98 | { 99 | "metaInfo": { 100 | "title": "通话" 101 | }, 102 | "operation": "wake|open", 103 | "stop": false 104 | }, 105 | "允许运营消息" 106 | ] 107 | } 108 | } -------------------------------------------------------------------------------- /com.ss.android.lark_飞书.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "飞书-提取 payload": [ 5 | { 6 | "match": { 7 | "pushAction": { 8 | "message": { 9 | "payload": "(?<payload>\\{.*\\})" 10 | } 11 | } 12 | }, 13 | "replace": { 14 | "metaInfo": { 15 | "extra": { 16 | "__lark_payload": "${payload}", 17 | "__lark_open_url": [ 18 | "replace", 19 | [ 20 | "property", 21 | "open_url", 22 | [ 23 | "parse-json", 24 | [ 25 | "$", 26 | "payload" 27 | ] 28 | ] 29 | ], 30 | "^http://", 31 | "" 32 | ], 33 | "__lark_title": [ 34 | "property", 35 | "title", 36 | [ 37 | "parse-json", 38 | [ 39 | "$", 40 | "payload" 41 | ] 42 | ] 43 | ] 44 | } 45 | } 46 | }, 47 | "stop": false 48 | }, 49 | { 50 | "match": { 51 | "metaInfo": { 52 | "extra": { 53 | "__lark_open_url": "(?<info>\\{.*\\})" 54 | } 55 | } 56 | }, 57 | "replace": { 58 | "metaInfo": { 59 | "extra": { 60 | "__lark_chat_id": [ 61 | "property", 62 | "chat_id", 63 | [ 64 | "parse-json", 65 | [ 66 | "$", 67 | "info" 68 | ] 69 | ] 70 | ], 71 | "__lark_channel_name": [ 72 | "property", 73 | "channel_name", 74 | [ 75 | "parse-json", 76 | [ 77 | "$", 78 | "info" 79 | ] 80 | ] 81 | ], 82 | "__lark_sender_name": [ 83 | "property", 84 | "sender_name", 85 | [ 86 | "parse-json", 87 | [ 88 | "$", 89 | "info" 90 | ] 91 | ] 92 | ], 93 | "__lark_image_url": [ 94 | "decode-base64", 95 | [ 96 | "property", 97 | "image_url", 98 | [ 99 | "parse-json", 100 | [ 101 | "$", 102 | "info" 103 | ] 104 | ] 105 | ] 106 | ] 107 | } 108 | } 109 | }, 110 | "stop": false 111 | } 112 | ], 113 | "飞书-消息类型标记": [ 114 | [ 115 | "cond", 116 | [ 117 | { 118 | "match": { 119 | "metaInfo": { 120 | "extra": { 121 | "__lark_channel_name": "" 122 | } 123 | } 124 | } 125 | }, 126 | "标记为群组消息" 127 | ], 128 | [ 129 | { 130 | "match": { 131 | "metaInfo": { 132 | "extra": { 133 | "__lark_channel_name": null 134 | } 135 | } 136 | } 137 | }, 138 | "标记为个人消息" 139 | ] 140 | ] 141 | ], 142 | "飞书-头像支持": [ 143 | { 144 | "name": "头像支持", 145 | "metaInfo": { 146 | "extra": { 147 | "__lark_image_url": "(?<image>[\\s\\S]+)" 148 | } 149 | }, 150 | "newMetaInfo": { 151 | "extra": { 152 | "notification_large_icon_uri": "${image}" 153 | } 154 | }, 155 | "stop": false 156 | }, 157 | "大图标显示成圆形" 158 | ], 159 | "飞书-消息分类": [ 160 | [ 161 | "cond", 162 | [ 163 | "群组消息", 164 | { 165 | "replace": { 166 | "metaInfo": { 167 | "extra": { 168 | "channel_name": "群聊消息", 169 | "channel_description": null, 170 | "channel_id": "group_chat" 171 | } 172 | } 173 | }, 174 | "stop": false 175 | } 176 | ] 177 | ] 178 | ], 179 | "飞书-会话概念修复": [ 180 | { 181 | "metaInfo": { 182 | "extra": { 183 | "__lark_chat_id": "(?<id>\\d+)" 184 | } 185 | }, 186 | "newMetaInfo": { 187 | "notifyId": [ 188 | "hash", 189 | [ 190 | "$", 191 | "id" 192 | ] 193 | ] 194 | }, 195 | "stop": false 196 | }, 197 | { 198 | "metaInfo": { 199 | "description": ": (?<content>[\\s\\S]+)", 200 | "extra": { 201 | "__lark_sender_name": "(?<name>[\\s\\S]+)", 202 | "__lark_channel_name": null 203 | } 204 | }, 205 | "newMetaInfo": { 206 | "title": "${name}", 207 | "description": "${content}" 208 | }, 209 | "stop": false 210 | } 211 | ], 212 | "飞书": [ 213 | "飞书-提取 payload", 214 | "飞书-消息类型标记", 215 | "飞书-头像支持", 216 | "飞书-消息分类", 217 | "飞书-会话概念修复", 218 | "飞书-MessagingStyle" 219 | ], 220 | "com.ss.android.lark.salhdz": [ 221 | "飞书" 222 | ], 223 | "com.ss.android.lark": [ 224 | "飞书" 225 | ] 226 | } 227 | } -------------------------------------------------------------------------------- /com.ss.android.lark_飞书_MessagingStyle.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "飞书-MessagingStyle": [ 5 | { 6 | "metaInfo": { 7 | "extra": { 8 | "__lark_image_url": "(?<image>[\\s\\S]+)", 9 | "__lark_chat_id": "(?<id>\\d+)", 10 | "__lark_sender_name": "(?<name>[\\s\\S]+)" 11 | } 12 | }, 13 | "newMetaInfo": { 14 | "extra": { 15 | "__mi_push_conversation_sender_id": [ 16 | "hash", 17 | [ 18 | "$", 19 | "name" 20 | ] 21 | ], 22 | "__mi_push_conversation_icon": "${image}", 23 | "__mi_push_conversation_id": "${id}" 24 | } 25 | }, 26 | "stop": false 27 | }, 28 | { 29 | "metaInfo": { 30 | "extra": { 31 | "__lark_image_url": "(?<image>[\\s\\S]+)", 32 | "__lark_channel_name": null 33 | } 34 | }, 35 | "newMetaInfo": { 36 | "extra": { 37 | "__mi_push_conversation_sender_icon": "${image}" 38 | } 39 | }, 40 | "stop": false 41 | }, 42 | "通用消息内容解析", 43 | "使用 Messaging Style" 44 | ] 45 | } 46 | } -------------------------------------------------------------------------------- /com.ss.android.ugc.aweme_抖音.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "抖音-会话概念修复": [ 5 | [ 6 | "cond", 7 | [ 8 | { 9 | "metaInfo": { 10 | "extra": { 11 | "origin_channel_id": "pre213" 12 | } 13 | } 14 | }, 15 | "标记为群组消息" 16 | ], 17 | [ 18 | { 19 | "metaInfo": { 20 | "extra": { 21 | "channel_id": "100681" 22 | } 23 | } 24 | }, 25 | "标记为个人消息" 26 | ] 27 | ], 28 | [ 29 | "cond", 30 | [ 31 | "聊天消息", 32 | "将标题相同的通知视为同一会话" 33 | ] 34 | ], 35 | [ 36 | "cond", 37 | [ 38 | "聊天消息", 39 | { 40 | "newMetaInfo": { 41 | "extra": { 42 | "notification_group": null 43 | } 44 | }, 45 | "stop": false 46 | } 47 | ] 48 | ] 49 | ], 50 | "抖音-Messaging Style": [ 51 | "抖音-会话概念修复", 52 | { 53 | "metaInfo": { 54 | "extra": { 55 | "origin_channel_id": "^pre213$" 56 | } 57 | }, 58 | "newMetaInfo": { 59 | "extra": { 60 | "channel_id": "pre213", 61 | "channel_name": "群聊消息" 62 | } 63 | }, 64 | "stop": false 65 | }, 66 | [ 67 | "cond", 68 | [ 69 | "个人消息", 70 | { 71 | "metaInfo": { 72 | "description": "^私信了你: (?<content>[\\s\\S]+)" 73 | }, 74 | "newMetaInfo": { 75 | "description": "${content}" 76 | }, 77 | "stop": false 78 | } 79 | ] 80 | ], 81 | [ 82 | "cond", 83 | [ 84 | "聊天消息", 85 | "大图标显示成圆形" 86 | ] 87 | ], 88 | "使用 Messaging Style", 89 | "[Messaging Style] 大图标作为个人头像" 90 | ], 91 | "com.ss.android.ugc.aweme": [ 92 | "抖音-会话概念修复", 93 | "抖音-Messaging Style", 94 | "允许运营消息" 95 | ] 96 | } 97 | } -------------------------------------------------------------------------------- /com.tencent.mobileqq_QQ.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "QQ-消息分类": [ 5 | { 6 | "name": "电话通知设新通知渠道", 7 | "metaInfo": { 8 | "description": "正在呼叫你..." 9 | }, 10 | "newMetaInfo": { 11 | "extra": { 12 | "channel_name": "电话消息", 13 | "channel_description": null, 14 | "channel_id": "voice_chat" 15 | } 16 | }, 17 | "stop": false 18 | }, 19 | { 20 | "name": "qq好友消息设新通知渠道", 21 | "metaInfo": { 22 | "extra": { 23 | "intent_uri": "S.jumptype=57618" 24 | } 25 | }, 26 | "newMetaInfo": { 27 | "extra": { 28 | "channel_name": "好友消息", 29 | "channel_description": null, 30 | "channel_id": "contact_chat" 31 | } 32 | }, 33 | "stop": false 34 | }, 35 | { 36 | "name": "qq群聊消息设新通知渠道", 37 | "metaInfo": { 38 | "extra": { 39 | "intent_uri": "S.jumptype=57619", 40 | "__mipush_tag_icon": null 41 | } 42 | }, 43 | "newMetaInfo": { 44 | "extra": { 45 | "channel_name": "群聊消息", 46 | "channel_description": null, 47 | "channel_id": "group_chat", 48 | "__mipush_tag_icon": "1" 49 | } 50 | }, 51 | "stop": false 52 | }, 53 | { 54 | "name": "qq临时会话消息设新通知渠道", 55 | "metaInfo": { 56 | "extra": { 57 | "intent_uri": "S.jumptype=57620" 58 | } 59 | }, 60 | "newMetaInfo": { 61 | "extra": { 62 | "channel_name": "临时会话", 63 | "channel_description": null, 64 | "channel_id": "temporary_chat" 65 | } 66 | }, 67 | "stop": false 68 | }, 69 | { 70 | "name": "qq原通知渠道改名", 71 | "metaInfo": { 72 | "extra": { 73 | "channel_id": "105584" 74 | } 75 | }, 76 | "newMetaInfo": { 77 | "extra": { 78 | "channel_name": "其他消息", 79 | "channel_description": null, 80 | "channel_id": "105584" 81 | } 82 | }, 83 | "stop": false 84 | }, 85 | { 86 | "name": "特别关心设新渠道,并通知时亮屏", 87 | "metaInfo": { 88 | "title": "^\\[特别关心\\]" 89 | }, 90 | "newMetaInfo": { 91 | "extra": { 92 | "channel_name": "特别关心", 93 | "channel_description": null, 94 | "channel_id": "speacial_follow" 95 | } 96 | }, 97 | "operation": "wake", 98 | "stop": false 99 | }, 100 | { 101 | "name": "文件、语音消息识别为好友消息", 102 | "metaInfo": { 103 | "description": "\\[文件\\]|\\[语音消息\\]", 104 | "title": "(?<title>[\\s\\S]*)" 105 | }, 106 | "newMetaInfo": { 107 | "extra": { 108 | "channel_name": "好友消息", 109 | "channel_description": null, 110 | "channel_id": "contact_chat" 111 | }, 112 | "notifyId": [ 113 | "hash", 114 | [ 115 | "$", 116 | "title" 117 | ] 118 | ] 119 | }, 120 | "stop": false 121 | } 122 | ], 123 | "QQ-消息类型标记": [ 124 | [ 125 | "cond", 126 | [ 127 | { 128 | "metaInfo": { 129 | "extra": { 130 | "channel_id": "^(?!.*(group_chat))" 131 | } 132 | } 133 | }, 134 | "标记为个人消息" 135 | ], 136 | [ 137 | { 138 | "metaInfo": { 139 | "extra": { 140 | "channel_id": "group_chat" 141 | } 142 | } 143 | }, 144 | "标记为群组消息" 145 | ] 146 | ] 147 | ], 148 | "QQ-头像支持": [ 149 | "qq群头像支持", 150 | { 151 | "name": "头像支持", 152 | "metaInfo": { 153 | "extra": { 154 | "intent_uri": "S\\.fromuin=(?<id>\\d+)", 155 | "notification_large_icon_uri": null 156 | } 157 | }, 158 | "newMetaInfo": { 159 | "extra": { 160 | "notification_large_icon_uri": "http://q.qlogo.cn/g?b=qq&s=100&nk=${id}" 161 | } 162 | }, 163 | "stop": false 164 | }, 165 | "大图标显示成圆形" 166 | ], 167 | "QQ-群消息整形": [ 168 | "群消息整形-小米经典样式", 169 | "群消息整形-原生通知样式" 170 | ], 171 | "QQ-我的设备消息整形": [ 172 | { 173 | "name": "我的设备消息整形", 174 | "metaInfo": { 175 | "title": "QQ", 176 | "description": "(?<device>^[^:]*):(?<content>[\\s\\S]*)" 177 | }, 178 | "newMetaInfo": { 179 | "title": "${device}", 180 | "description": "${content}" 181 | }, 182 | "stop": false 183 | } 184 | ], 185 | "QQ-会话概念修复": [ 186 | { 187 | "name": "个人消息会话概念修复", 188 | "metaInfo": { 189 | "extra": { 190 | "intent_uri": "S\\.fromuin=(?<id>\\d+)" 191 | } 192 | }, 193 | "newMetaInfo": { 194 | "notifyId": "${id}" 195 | }, 196 | "stop": false 197 | }, 198 | { 199 | "name": "群组消息会话概念修复", 200 | "metaInfo": { 201 | "extra": { 202 | "intent_uri": "^(?!.*S\\.groupuin=).*S\\.groupcode=(?<id>\\d+)" 203 | } 204 | }, 205 | "newMetaInfo": { 206 | "notifyId": "${id}" 207 | }, 208 | "stop": false 209 | } 210 | ], 211 | "com.tencent.mobileqq": [ 212 | "QQ-会话概念修复", 213 | "QQ-消息分类", 214 | "QQ-复用QA通知渠道", 215 | "QQ-消息类型标记", 216 | "QQ-头像支持", 217 | "QQ-MessagingStyle", 218 | { 219 | "name": "QQ 来电时自动唤醒和打开", 220 | "metaInfo": { 221 | "description": "(?<name>.*) (?<content>正在呼叫你.*)" 222 | }, 223 | "newMetaInfo": { 224 | "title": "${name}", 225 | "description": "${content}" 226 | }, 227 | "operation": "wake|open", 228 | "stop": false 229 | }, 230 | { 231 | "name": "qq特定消息时点亮屏幕", 232 | "metaInfo": { 233 | "description": "有急事|收到请回复" 234 | }, 235 | "operation": "wake", 236 | "stop": false 237 | }, 238 | { 239 | "name": "特定群聊消息通知", 240 | "metaInfo": { 241 | "title": "这里改成特定的群聊名称", 242 | "description": "^(?!.*(\\[有关注的内容\\]|这里改成@自己的群昵称|这里改成需要通知的关键词))", 243 | "extra": { 244 | "intent_uri": "S.jumptype=57619" 245 | } 246 | }, 247 | "operation": "ignore", 248 | "stop": false 249 | }, 250 | "QQ-我的设备消息整形", 251 | "QQ-群消息整形", 252 | "QQ-屏蔽全体消息", 253 | "QQ-意图重整" 254 | ] 255 | } 256 | } 257 | -------------------------------------------------------------------------------- /com.tencent.mobileqq_QQ_MessagingStyle.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "QQ-MessagingStyle": [ 5 | [ 6 | "cond", 7 | [ 8 | "个人消息", 9 | { 10 | "name": "移除特别关心", 11 | "metaInfo": { 12 | "title": "^\\[特别关心\\](?<name>[\\s\\S]*)" 13 | }, 14 | "newMetaInfo": { 15 | "title": "${name}", 16 | "extra": { 17 | "__mi_push_conversation_important": "" 18 | } 19 | }, 20 | "stop": false 21 | } 22 | ] 23 | ], 24 | { 25 | "metaInfo": { 26 | "extra": { 27 | "intent_uri": "S\\.fromuin=(?<id>\\d+)" 28 | } 29 | }, 30 | "newMetaInfo": { 31 | "extra": { 32 | "notification_large_icon_uri": "http://q.qlogo.cn/g?b=qq&s=100&nk=${id}", 33 | "__mi_push_conversation_sender_icon": "http://q.qlogo.cn/g?b=qq&s=100&nk=${id}", 34 | "__mi_push_conversation_sender_id": "${id}", 35 | "__mi_push_conversation_icon": "http://q.qlogo.cn/g?b=qq&s=100&nk=${id}", 36 | "__mi_push_conversation_id": "${id}" 37 | } 38 | }, 39 | "stop": false 40 | }, 41 | { 42 | "metaInfo": { 43 | "extra": { 44 | "intent_uri": "^(?!.*S\\.groupuin=).*S\\.groupcode=(?<id>\\d+)" 45 | } 46 | }, 47 | "newMetaInfo": { 48 | "extra": { 49 | "notification_large_icon_uri": "http://p.qlogo.cn/gh/${id}/${id}/100", 50 | "__mi_push_conversation_icon": "http://p.qlogo.cn/gh/${id}/${id}/100", 51 | "__mi_push_conversation_id": "${id}" 52 | } 53 | }, 54 | "stop": false 55 | }, 56 | "通用消息内容解析", 57 | "使用 Messaging Style", 58 | [ 59 | "cond", 60 | [ 61 | "群组消息", 62 | { 63 | "metaInfo": { 64 | "description": "(?<name>.*?): \\s*(?<content>[\\s\\S]*)" 65 | }, 66 | "newMetaInfo": { 67 | "extra": { 68 | "__mi_push_conversation_sender": "${name}", 69 | "__mi_push_conversation_message": "${content}" 70 | } 71 | }, 72 | "stop": false 73 | } 74 | ] 75 | ], 76 | { 77 | "name": "我的设备消息适配", 78 | "metaInfo": { 79 | "title": "QQ", 80 | "description": "(?<device>^[^:]*):(?<content>.*)" 81 | }, 82 | "newMetaInfo": { 83 | "extra": { 84 | "__mi_push_conversation_sender": "${device}", 85 | "__mi_push_conversation_message": "${content}" 86 | } 87 | }, 88 | "stop": false 89 | } 90 | ] 91 | } 92 | } -------------------------------------------------------------------------------- /com.tencent.mobileqq_QQ_复用QA通知渠道.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "QQ-复用QA通知渠道": [ 5 | { 6 | "metaInfo": { 7 | "extra": { 8 | "channel_id": "contact_chat" 9 | } 10 | }, 11 | "newMetaInfo": { 12 | "extra": { 13 | "__mi_push_borrow_channel_id": "QQ_Friend" 14 | } 15 | }, 16 | "stop": false 17 | }, 18 | { 19 | "metaInfo": { 20 | "extra": { 21 | "channel_id": "group_chat" 22 | } 23 | }, 24 | "newMetaInfo": { 25 | "extra": { 26 | "__mi_push_borrow_channel_id": "QQ_Group" 27 | } 28 | }, 29 | "stop": false 30 | }, 31 | { 32 | "metaInfo": { 33 | "extra": { 34 | "channel_id": "speacial_follow" 35 | } 36 | }, 37 | "newMetaInfo": { 38 | "extra": { 39 | "__mi_push_borrow_channel_id": "QQ_Friend_Special" 40 | } 41 | }, 42 | "stop": false 43 | } 44 | ] 45 | } 46 | } -------------------------------------------------------------------------------- /com.tencent.mobileqq_QQ_意图重整.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "QQ-意图重整": [ 5 | { 6 | "match": { 7 | "metaInfo": { 8 | "extra": { 9 | "intent_uri": "^(?!.*S\\.groupuin=).*S\\.groupcode=(?<id>\\d+)", 10 | "notify_effect": "2" 11 | } 12 | } 13 | }, 14 | "replace": { 15 | "metaInfo": { 16 | "extra": { 17 | "intent_uri": "mqqwpa://im/chat?chat_type=group&uin=${id}", 18 | "notify_effect": "2" 19 | } 20 | } 21 | }, 22 | "stop": false 23 | }, 24 | { 25 | "match": { 26 | "metaInfo": { 27 | "extra": { 28 | "intent_uri": "(?!.*S\\.groupuin=).*S\\.fromuin=(?<id>\\d+)", 29 | "notify_effect": "2" 30 | } 31 | } 32 | }, 33 | "replace": { 34 | "metaInfo": { 35 | "extra": { 36 | "intent_uri": "mqqwpa://im/chat?chat_type=c2c&open_type=chat&uin=${id}", 37 | "notify_effect": "2" 38 | } 39 | } 40 | }, 41 | "stop": false 42 | } 43 | ] 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /com.tencent.mobileqq_QQ_群头像支持(不装则显示具体群友头像).json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "qq群头像支持": [ 5 | { 6 | "metaInfo": { 7 | "extra": { 8 | "intent_uri": "^(?!.*S\\.groupuin=).*S\\.groupcode=(?<id>\\d+)" 9 | } 10 | }, 11 | "newMetaInfo": { 12 | "extra": { 13 | "notification_large_icon_uri": "http://p.qlogo.cn/gh/${id}/${id}/100" 14 | } 15 | }, 16 | "stop": false 17 | } 18 | ] 19 | } 20 | } -------------------------------------------------------------------------------- /com.tencent.mobileqq_QQ_群消息整形-群名标题前添加发送者.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "群消息整形-小米经典样式": [ 5 | { 6 | "metaInfo": { 7 | "title": "(?<title>.*)", 8 | "description": "(?<name>.*?)[::] \\s*(?<content>[\\s\\S]*)", 9 | "extra": { 10 | "intent_uri": "S.jumptype=57619" 11 | } 12 | }, 13 | "newMetaInfo": { 14 | "title": "${name}•[${title}]", 15 | "description": "${content}", 16 | "extra": { 17 | "__mipush_tag_adjust": "1" 18 | } 19 | }, 20 | "stop": false 21 | } 22 | ] 23 | } 24 | } -------------------------------------------------------------------------------- /com.tencent.mobileqq_QQ_群消息整形-群名移动至 subtext.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "群消息整形-原生通知样式": [ 5 | { 6 | "metaInfo": { 7 | "title": "(?<title>.*)", 8 | "description": "(?<name>.*?)[::] \\s*(?<content>[\\s\\S]*)", 9 | "extra": { 10 | "intent_uri": "S.jumptype=57619", 11 | "__mipush_tag_adjust": null 12 | } 13 | }, 14 | "newMetaInfo": { 15 | "title": "${name}", 16 | "description": "${content}", 17 | "extra": { 18 | "__mi_push_sub_text": "${title}" 19 | } 20 | }, 21 | "stop": false 22 | } 23 | ] 24 | } 25 | } -------------------------------------------------------------------------------- /com.xunmeng.pinduoduo_拼多多.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "com.xunmeng.pinduoduo": [ 5 | "允许运营消息", 6 | { 7 | "name": "拼多多_通知标题含有关键词则过滤", 8 | "metaInfo": { 9 | "title": "优惠券过期提醒|省钱账单" 10 | }, 11 | "operation": "ignore", 12 | "stop": false 13 | }, 14 | { 15 | "name": "通知带图", 16 | "metaInfo": { 17 | "extra": { 18 | "intent_uri": "thumb_url=(?<encodedURI>[^&]+)", 19 | "notification_large_icon_uri": null 20 | } 21 | }, 22 | "newMetaInfo": { 23 | "extra": { 24 | "notification_large_icon_uri": [ 25 | "decode-uri", 26 | [ 27 | "$", 28 | "encodedURI" 29 | ] 30 | ] 31 | } 32 | }, 33 | "stop": false 34 | } 35 | ] 36 | } 37 | } -------------------------------------------------------------------------------- /com.zhihu.android_知乎.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "com.zhihu.android": [ 5 | { 6 | "name": "意图提取", 7 | "match": { 8 | "pushAction": { 9 | "message": { 10 | "payload": "(?<payload>[\\s\\S]+)" 11 | } 12 | } 13 | }, 14 | "replace": { 15 | "metaInfo": { 16 | "extra": { 17 | "intent_uri": ["property", "url", ["parse-json", ["$", "payload"]]], 18 | "notify_effect": "2" 19 | } 20 | } 21 | }, 22 | "stop": false 23 | }, 24 | "知乎-忽略盐选内容" 25 | ] 26 | } 27 | } -------------------------------------------------------------------------------- /com.zhihu.android_知乎_忽略盐选内容.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configs": { 4 | "知乎-忽略盐选内容": [ 5 | { 6 | "match": { 7 | "pushAction": { 8 | "message": { 9 | "payload": "\"is_member_content\":true" 10 | } 11 | } 12 | }, 13 | "operation": "ignore", 14 | "stop": false 15 | } 16 | ] 17 | } 18 | } -------------------------------------------------------------------------------- /dependencies.md: -------------------------------------------------------------------------------- 1 | ``` mermaid 2 | graph RL 3 | subgraph 0_基础配置 4 | 479475383F0491508B3FC3001F85C8269165532DCD888EEE95ACAE0EFD0C9DEF["0_基础配置_工具.json"] 5 | 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 6 | 56F20600842C69DE11952BB308DDF2E234E46B866CCCE75155286E9A8C580A61["0_基础配置_消息样式相关.json"] --> 479475383F0491508B3FC3001F85C8269165532DCD888EEE95ACAE0EFD0C9DEF["0_基础配置_工具.json"] 7 | end 8 | subgraph 2_后置配置 9 | CF1FF94665A8D125D2423F56FDF7D38CF6CB80A9702194C9182052A8EDD9B84F["2_后置配置.json"] --> BC119D699D1C22724B679147E360075F7311DC921A8B780B9A20750AD2BF8CE3["2_后置配置_移除通知副标题.json"] & D527F45F15BDD196E8CBE990ADBAFA93E36B1B763DFCD135EBA614D466B7493E["2_后置配置_消息样式为每条消息添加起始标识.json"] & C8ADC7C1E6F0FFA5F5302AE8955063633F68984F3FB30B563B4EB1D6CE8C3D27["2_后置配置_将标题相同的通知视为同一会话-白名单.json"] & A37D25B272E10D3FFCA277CF5B0CCA75D61016C03F2ED04820C21D2FD5F1C437["2_后置配置_将标题相同的通知视为同一会话-黑名单.json"] & C447EE860734DF6AA6A564BB3239AF0CFAAFE020018E0EF5496501D114BB6D16["2_后置配置_屏蔽运营消息-白名单.json"] & FB016B66093520C498AF13FFB20BBE3E1BD48890111E28D2968DEB22C21AA22A["2_后置配置_屏蔽运营消息-黑名单.json"] & B02672C1C00A5C2E2591E4E558836163D378C452BFEA8A1945C5BAEC4ED859FE["2_后置配置_只显示一条消息-白名单.json"] & BE0DE28646BA00CEBF099751C6566F3AB5B08DD5DE0C2FC3C4C62AF08D4F4CAB["2_后置配置_自动提取意图.json"] & 0BB6031DECF356C7682C7E4DB8840825EC906C42091672812CDFD24E1A1CE877["2_后置配置_直接打开意图-白名单.json"] & FBEB52252E05CB53C3B59F41F43CF5C5F4BA89FD5D89ED91DF81F90026DD6C50["2_后置配置_直接打开意图-黑名单.json"] 10 | C8ADC7C1E6F0FFA5F5302AE8955063633F68984F3FB30B563B4EB1D6CE8C3D27["2_后置配置_将标题相同的通知视为同一会话-白名单.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 11 | A37D25B272E10D3FFCA277CF5B0CCA75D61016C03F2ED04820C21D2FD5F1C437["2_后置配置_将标题相同的通知视为同一会话-黑名单.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 12 | C447EE860734DF6AA6A564BB3239AF0CFAAFE020018E0EF5496501D114BB6D16["2_后置配置_屏蔽运营消息-白名单.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 13 | FB016B66093520C498AF13FFB20BBE3E1BD48890111E28D2968DEB22C21AA22A["2_后置配置_屏蔽运营消息-黑名单.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 14 | D527F45F15BDD196E8CBE990ADBAFA93E36B1B763DFCD135EBA614D466B7493E["2_后置配置_消息样式为每条消息添加起始标识.json"] --> 56F20600842C69DE11952BB308DDF2E234E46B866CCCE75155286E9A8C580A61["0_基础配置_消息样式相关.json"] 15 | BC119D699D1C22724B679147E360075F7311DC921A8B780B9A20750AD2BF8CE3["2_后置配置_移除通知副标题.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 16 | 0BB6031DECF356C7682C7E4DB8840825EC906C42091672812CDFD24E1A1CE877["2_后置配置_直接打开意图-白名单.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 17 | FBEB52252E05CB53C3B59F41F43CF5C5F4BA89FD5D89ED91DF81F90026DD6C50["2_后置配置_直接打开意图-黑名单.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 18 | B02672C1C00A5C2E2591E4E558836163D378C452BFEA8A1945C5BAEC4ED859FE["2_后置配置_只显示一条消息-白名单.json"] 19 | BE0DE28646BA00CEBF099751C6566F3AB5B08DD5DE0C2FC3C4C62AF08D4F4CAB["2_后置配置_自动提取意图.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 20 | end 21 | subgraph com.alibaba.android.rimet_钉钉 22 | 8A0FD2B314F8E0F6C28C483310BC44C467518347F45D447F0D8B5E608B4DB769["com.alibaba.android.rimet_钉钉.json"] --> 479475383F0491508B3FC3001F85C8269165532DCD888EEE95ACAE0EFD0C9DEF["0_基础配置_工具.json"] & 56F20600842C69DE11952BB308DDF2E234E46B866CCCE75155286E9A8C580A61["0_基础配置_消息样式相关.json"] & 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 23 | end 24 | subgraph com.coolapk.market_酷安 25 | D474A8B67EA765F9F136FE8FC195922AD2EB48B9CE87FC4E7F490DC6CD09AFA7["com.coolapk.market_酷安.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 26 | end 27 | subgraph com.jingyao.easybike_哈啰 28 | 9759AAE197B280E66663FD143F5A8FB0FF9F794CC65E47957068750616AFAC3E["com.jingyao.easybike_哈啰.json"] --> 56F20600842C69DE11952BB308DDF2E234E46B866CCCE75155286E9A8C580A61["0_基础配置_消息样式相关.json"] & 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 29 | end 30 | subgraph com.ss.android.lark_飞书 31 | 29C5F0BB754C6096CDDC17BBD35C8230F287EC3F7C940EED80DD46F1F3E70DBF["com.ss.android.lark_飞书.json"] --> 479475383F0491508B3FC3001F85C8269165532DCD888EEE95ACAE0EFD0C9DEF["0_基础配置_工具.json"] & 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] & 8C0BCC4176D958FF8A5A332B9F2C78966902FB11F7295232601C81E52FDBF681["com.ss.android.lark_飞书_MessagingStyle.json"] 32 | 8C0BCC4176D958FF8A5A332B9F2C78966902FB11F7295232601C81E52FDBF681["com.ss.android.lark_飞书_MessagingStyle.json"] --> 56F20600842C69DE11952BB308DDF2E234E46B866CCCE75155286E9A8C580A61["0_基础配置_消息样式相关.json"] 33 | end 34 | subgraph com.ss.android.ugc.aweme_抖音 35 | A38443AB7D8A27909BF68857A43B326D3FBCB95369DFB321793217ACE26DC899["com.ss.android.ugc.aweme_抖音.json"] --> 479475383F0491508B3FC3001F85C8269165532DCD888EEE95ACAE0EFD0C9DEF["0_基础配置_工具.json"] & 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] & 56F20600842C69DE11952BB308DDF2E234E46B866CCCE75155286E9A8C580A61["0_基础配置_消息样式相关.json"] 36 | end 37 | subgraph com.tencent.mobileqq_QQ 38 | C48DD58A69BE1EA93C8925D900F2E839A39E3CB2CEA54C1EBF825330B5C34A47["com.tencent.mobileqq_QQ.json"] --> 479475383F0491508B3FC3001F85C8269165532DCD888EEE95ACAE0EFD0C9DEF["0_基础配置_工具.json"] & C987691EF08D6734082BA098238AD2823A85601E00D99ACFC91A7993CA5AECE1["com.tencent.mobileqq_QQ_群头像支持(不装则显示具体群友头像).json"] & 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] & F712B0B81C54964F664BD3EE8626AFB5AABAC90C3E4D8124E74B13FA3957DB1B["com.tencent.mobileqq_QQ_群消息整形-群名标题前添加发送者.json"] & D4FBC62701D505CB943309575D315FF58A052495BCF6F7ABF64AA526ACDA4137["com.tencent.mobileqq_QQ_群消息整形-群名移动至 subtext.json"] & D12D87813F6268AD3A037397B929B953A341E73125516AB9C673695A15D21149["com.tencent.mobileqq_QQ_MessagingStyle.json"] 39 | D12D87813F6268AD3A037397B929B953A341E73125516AB9C673695A15D21149["com.tencent.mobileqq_QQ_MessagingStyle.json"] --> 479475383F0491508B3FC3001F85C8269165532DCD888EEE95ACAE0EFD0C9DEF["0_基础配置_工具.json"] & 56F20600842C69DE11952BB308DDF2E234E46B866CCCE75155286E9A8C580A61["0_基础配置_消息样式相关.json"] 40 | C987691EF08D6734082BA098238AD2823A85601E00D99ACFC91A7993CA5AECE1["com.tencent.mobileqq_QQ_群头像支持(不装则显示具体群友头像).json"] 41 | F712B0B81C54964F664BD3EE8626AFB5AABAC90C3E4D8124E74B13FA3957DB1B["com.tencent.mobileqq_QQ_群消息整形-群名标题前添加发送者.json"] 42 | D4FBC62701D505CB943309575D315FF58A052495BCF6F7ABF64AA526ACDA4137["com.tencent.mobileqq_QQ_群消息整形-群名移动至 subtext.json"] 43 | end 44 | subgraph com.xunmeng.pinduoduo_拼多多 45 | 3EE966FD60FD83B89D68BCB9A9F81B95F52DC9EA2A1FC8A3E0A1B3F01A2A30EE["com.xunmeng.pinduoduo_拼多多.json"] --> 64CA1BAFD56122596A896ED9ACAC6301DAD3E47BC4E1F6650157CC8656332DB7["0_基础配置_开关.json"] 46 | end 47 | C8ADC7C1E6F0FFA5F5302AE8955063633F68984F3FB30B563B4EB1D6CE8C3D27["2_后置配置_将标题相同的通知视为同一会话-白名单.json"] <-- exclusive --> A37D25B272E10D3FFCA277CF5B0CCA75D61016C03F2ED04820C21D2FD5F1C437["2_后置配置_将标题相同的通知视为同一会话-黑名单.json"] 48 | 0BB6031DECF356C7682C7E4DB8840825EC906C42091672812CDFD24E1A1CE877["2_后置配置_直接打开意图-白名单.json"] <-- exclusive --> FBEB52252E05CB53C3B59F41F43CF5C5F4BA89FD5D89ED91DF81F90026DD6C50["2_后置配置_直接打开意图-黑名单.json"] 49 | C447EE860734DF6AA6A564BB3239AF0CFAAFE020018E0EF5496501D114BB6D16["2_后置配置_屏蔽运营消息-白名单.json"] <-- exclusive --> FB016B66093520C498AF13FFB20BBE3E1BD48890111E28D2968DEB22C21AA22A["2_后置配置_屏蔽运营消息-黑名单.json"] 50 | ``` -------------------------------------------------------------------------------- /gen_dependencies.ps1: -------------------------------------------------------------------------------- 1 | $Global:configList = Get-ChildItem *.json 2 | $Global:configLocation = @{} 3 | $Global:configDependencies = @{} 4 | $Global:configDependenciesItem = @{} 5 | 6 | if (Get-Command git -errorAction Ignore) { 7 | $prevEncoding = [Console]::OutputEncoding 8 | try { 9 | [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new() 10 | $repoFiles = git ls-files . 11 | } finally { 12 | [Console]::OutputEncoding = $prevEncoding 13 | } 14 | $configList = $configList | Where-Object { $repoFiles -contains $_.Name } 15 | } 16 | 17 | foreach ($file in $configList) { 18 | $content = Get-Content $file -Encoding UTF8 -Raw 19 | $json = ConvertFrom-Json $content 20 | 21 | $keys = $json.configs | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty Name 22 | foreach ($key in $keys) { 23 | $configLocation[$key] += @($file.Name) 24 | } 25 | 26 | $dependencies = $content | Select-String '"([^"\r\n]+)"' -AllMatches 27 | $dependencies = $dependencies.Matches | ForEach-Object { $_.Groups[1].Value } 28 | $dependencies = $dependencies | Where-Object { ($keys -notcontains $_) -and ($_ -ne '^') -and ($_ -ne '$') } 29 | $configDependenciesItem[$file.Name] = $dependencies 30 | } 31 | 32 | foreach ($pair in $configDependenciesItem.GetEnumerator()) { 33 | $configDependencies[$pair.Name] = $pair.Value | ForEach-Object { $configLocation[$_] } | Where-Object { $_ } | Select-Object -Unique 34 | } 35 | 36 | function hash { 37 | param($s) 38 | $stringAsStream = [System.IO.MemoryStream]::new() 39 | $writer = [System.IO.StreamWriter]::new($stringAsStream) 40 | $writer.write($s) 41 | $writer.Flush() 42 | $stringAsStream.Position = 0 43 | Get-FileHash -InputStream $stringAsStream | Select-Object -ExpandProperty Hash 44 | } 45 | 46 | function formatToMermaid { 47 | param($name) 48 | return (hash $name) + '["' + $name + '"]' 49 | } 50 | 51 | $prevGraph = $null 52 | $mermaid = @( 53 | '``` mermaid' 54 | 'graph RL' 55 | ) 56 | $configDependencies = $configDependencies.GetEnumerator() | Sort-Object -Property Name 57 | foreach ($pair in $configDependencies) { 58 | $value = $pair.Value | ForEach-Object { formatToMermaid($_) } 59 | $null = $pair.Name -match '^[^_]+_[^_]+(?=[._])' 60 | $graph = $Matches[0] 61 | if ($graph -ne $prevGraph) { 62 | if ($null -ne $prevGraph) { 63 | $mermaid += "`tend" 64 | } 65 | $mermaid += "`tsubgraph $($Matches[0])" 66 | $prevGraph = $graph 67 | } 68 | if ($null -eq $value) { 69 | $mermaid += "`t`t$(formatToMermaid $pair.Name)" 70 | } else { 71 | $mermaid += "`t`t$(formatToMermaid $pair.Name) --> $($value -join ' & ')" 72 | } 73 | } 74 | if ($null -ne $prevGraph) { 75 | $mermaid += "`tend" 76 | } 77 | foreach ($pair in $configLocation.GetEnumerator()) { 78 | if ($pair.Value.Length -ge 2) { 79 | $value = $pair.Value | ForEach-Object { formatToMermaid($_) } 80 | $mermaid += "`t$($value -join ' <-- exclusive --> ')" 81 | } 82 | } 83 | $mermaid += '```' 84 | $mermaid -join "`n" | Set-Content dependencies.md -Encoding UTF8 -NoNewline 85 | --------------------------------------------------------------------------------