手机最近老是收到各种垃圾短信,于是想要自己写一个app来过滤垃圾短信,找到了Message Filtter Extension

1.首先创建一个空的工程,然后创建好了之后添加一个target。

1
选中工程->Editor->Add Target->选择iOS->添加Message Filtter Extension

2.添加好了之后选择设置,项目工程和target都要开启AppGroup,点击左下角的加号添加一个AppGroup的标示

图片

注意:项目工程和自己添加的target必须要一致,这个标示是用来共享数据的

3.工程这边做一个简单的列表用来添加屏蔽关键词,然后关键词的本地化用之前添加的group.com.message.fliter标示用userdefault来存储

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
let KEY_ARRAY = "group.com.message.fliter"
var dataSource: [String] = ["百家乐","电子游艺","捕鱼游艺","游艺","竞技比赛","顶级平台","现金礼券","千万","千万秒提","24小时娱乐","真人"]{
didSet {
let standard = UserDefaults(suiteName: KEY_ARRAY)
standard?.setValue(self.dataSource, forKey: KEY_ARRAY)
standard?.synchronize()
self.tableView.reloadData()
}
}
@IBOutlet weak var tableView: UITableView!
@IBAction func addAction(_ sender: UIBarButtonItem) {
AlertTool.createInputText("输入关键词", detail: "") { [weak self] (res) in
self?.dataSource.append(res)
}
}
override func viewDidLoad() {
super.viewDidLoad()

self.tableView.delegate = self
self.tableView.dataSource = self

self.tableView.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: "cell")
let temp = UserDefaults.standard.value(forKey: KEY_ARRAY) as? [String]
self.dataSource.append(contentsOf: temp ?? [])
self.tableView.reloadData()
}

4.在Message Filtter Extension实现关键词过滤,而这个关键词的数据是从项目工程里拿的。这就实现了短信的过滤,不过遗憾的是没有办法可以删除垃圾短信。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

var words: [String] {
get {
let standard = UserDefaults(suiteName: "group.com.message.fliter")
let temp = standard?.value(forKey: "group.com.message.fliter") as? [String]
return temp ?? []
}
}

private func offlineAction(for queryRequest: ILMessageFilterQueryRequest) -> ILMessageFilterAction {
// Replace with logic to perform offline check whether to filter first (if possible).
guard let msg = queryRequest.messageBody else { return .none }
for word in self.words {
if msg.contains(word) {
return .filter
}
}
return .allow
}

这边添加了一个简书的关键词.

效果图

效果图

相关文章
评论
分享
  • 删除视频背景音乐、添加视频背景音乐

    删除视频背景音乐删除视频的背景音乐其实很简单,把视频数据导入进来,然后我们的视频数据其实是有两条轨道一条是音频,另外一条是视频。由于数据的tracks(轨道包含多条音视频)是只读的,所以在这里重新创建一个混合器,然后把数据源的视频轨道...

    删除视频背景音乐、添加视频背景音乐
  • AAC音频转WAV

    将aac编码格式的音频转为lpcm编码的音频,转出来的音频会比原来大个10倍左右.1234567891011121314151617181920212223242526272829303132333435363738394041424...

    AAC音频转WAV
  • Shell删除所有苹果证书

    123456789101112131415161718#!/bin/bashexpired=$(security find-identity)if [ -z "$expired" ] #-z判断字符串长度是否为0 为0返回tru...

    Shell删除所有苹果证书
  • Swift语言国际化

    第一步在工程设置里面添加对应国际化的语言 第二步添加Localizble.strings 第三步选择Localizble.strings文件,然后选择Localize…选择需要的语言,选择完了之后你就会看见刚才创建的Localizbl...

    Swift语言国际化
  • Docker Nginx 静态资源部署

    1. 查看docker仓库中的nginx命令1docker search nginx 2.为选定需要pull到系统重的官方Nginx镜像1docker pull nginx 这个过程需要时间,需要耐心等待一下。看到这个图就是成功了。 ...

    Docker Nginx 静态资源部署
  • Nginx vue打包部署

    最近在弄vue的项目,完了需要打包部署到服务器,然后之前也没有弄过自己在这边一边查资料一边琢磨怎么弄。幸运的是花了一天半的时间还搞定了。 1.在conf.d文件下添加一个新的配置文件,12345678910111213141516...

    Nginx vue打包部署
  • SCP文件上传下载

    从服务器获取文件1scp -p 8080 root@192.168.1.1:/usr/temp/file.txt /Desktop/ 上传文件到服务器1scp -p 8080 /Desktop/uploadfile root@192....

    SCP文件上传下载
  • 音频剪切、合成、淡入淡出

    音频剪切1.音频剪切比较简单传入音频文件和剪切的时间段就可以了12345678910111213141516171819202122232425/** 初始化输出文件路径 */ NSString *url = "音频源文件路径"...

    音频剪切、合成、淡入淡出
  • swift 做一个答题的功能

    实现的效果是:1.点击答案,判断正确,如果选择的答案错误显示出正确的答案。然后可以浏览上一题的信息。2.可以查看上一题的答题情况。看下效果图吧 思路:1.看看题的模型吧,我这里是用一个数组来装的一个类,然后点击下一题的时候数组索引+...

    swift 做一个答题的功能
  • iOS原生调用ReatNative

    有一个RN的项目其中一个即时通讯的模块需要用原生来写所以这里面就涉及到iOS原生和RN的交互。 iOS调用RN1.创建一个交互通信的类。1234#import <React/RCTEventEmitter.h>#imp...

    iOS原生调用ReatNative