切换屏幕
4361阅读 | 26回复

【年轻人第一次自己屏蔽垃圾短信(二)】使用学习模型开发垃圾短信屏蔽App

  [复制链接]
5主题27帖子159人气

级别: 实习版主

帖子
27
经验
61
精华
2
人气
159
发表于 2018-12-12 16:02:52 |浏览量 | 显示全部楼层 |阅读模式
本帖最后由 永远跟党走_ 于 2018-12-12 16:51 编辑

       开始第二节你需要准备一台苹果电脑并已经安装了最新版的操作系统与Xcode(若有更新,请保持最新),准备一台iOS12以上操作系统的苹果手机,我们将使用Xcode来编写一款可以运行在iOS设备上面的应用程序,并使用系统接口获取内容识别并返回识别结果。

1、创建项目
选择 Create a new Xcode project 这一项
1.png
选择 iOS -> Application -> Single View App
2.png
输入项目名称,设置一个组织名称(这个是唯一的,我们为了保证唯一性,通常使用域名来作为前缀)
3.png
选择合适的路径并创建
4.png
此时我们就成功的创建了一个基础应用程序项目
5.png

2、引入信息过滤扩展。
由于苹果对用户隐私信息保护比较严格,我们在对用户的短信进行甄别的整个过程都是在一个叫做 Message Filter Extension 中完成的,不能进行联网操作。
6.png
我们选择这个扩展,并为它设置一个名称,点击Finish就可以完成扩展的引入。
7.png
此时我们便可以看到Xcode帮我们自动创建了这个扩展所需要的基础代码
8.png

3、引入模型并增加过滤代码。
点开扩展所在文件夹,我们可以看到一个名字为MessageFilterExtension.swift的文件,这个文件就是我们信息过滤器的核心代码了。
9.png
我们注意到在handle函数中,第一行代码中就有一个叫做offlineAction的函数,这个函数有一个叫做queryRequest的参数,当有新的短信收到时,短信的具体信息就会被赋值给一个叫做queryRequest的ILMessageFilterQueryRequest类,这个类中包含了两个参数:sender(发送人)和messageBody(消息内容),然后这两个内容被传递给offlineAction函数中做处理,并将处理结果返回出来进行下一步操作。

我们在下面可以看到这个offlineAction函数:
10.png
在这个函数中,我们将引入模型,并把短信内容交给模型处理,并根据模型所打标签来返回处理意见:
11.png
我们从桌面直接将模型拖入到项目中即可,注意要将模型放在信息过滤器所在的文件目录下,为了确保项目树的清晰,我们新建了一个叫做MLModel的文件夹,并把文件放入其中。
12.png
然后我们再在信息过滤器所在的文件目录下创建一个Models的文件夹,并在它里面新建一个swift文件
13.png

右键目录,并点击New File…
选择iOS -> Swift File 并单击Next设置名称为FilterModel(或者你希望的任何名字)
14.png
这样我们就得到了一个可以用来处理垃圾信息的类 FilterModel
在这个文件中,我们需要定义类名,然后定义一个方法:
15.png
在这个类中,我们定义了一个get方法,它有一个string类型的参数message,用来获得文本,处理后再将结果使用string类型的形式返回(你也可以定义枚举等各类方法来返回结果)
之后我们在这个方法中,引入机器学习模型,并使用它的 prediction() 方法来对内容进行识别,由于它有可能会报错,我们用guard方法来进行错误处理⬇️
16.png

若没有报错,那么output中将会包含机器学习模型对内容的判定结果,它的参数label包含了结果,我们返回这个参数即可。
然后我们回到MessageFilterExtension.swift文件中,找到offlineAction函数,并在其中使用我们的FilterModel,根据判定结果,返回相应的动作即可:
17.png
它的返回有三种动作:
    .none 当无法判断时返回
    .allow 判断为允许
    .filter 判断为应该过滤
此时我们就基本完成了扩展的开发,接下来就是把运行于真机中进行测试
18.png
将iOS设备连接到电脑上,并点击Xcode左上角的设备选择中选择真机,并单击Run按钮,等待进度条走完即可在手机端看到我们写的App:
19.PNG
然后我们需要进入设置->信息->未知与过滤信息,在面板中选中我们新开发的App:
20.PNG
这样我们就成功的开启了我们自己App的过滤功能,使用另一个手机号发送广告短信与正常短信进行测试即可(注:受制于苹果策略,目前只能屏蔽短信,iMessage是无法屏蔽与过滤的,已加入通讯录,或者回复过的手机号也是无法被屏蔽的)

当号码被过滤过后,它之后发送的所有短信都会被过滤,取消过滤的方式是
1、回复短信或彩信3次
2、该号码添加到通讯录
3、删除来自该号码的全部短信
同上,若满足上述的任何一个条件,短信也不会经过过滤。

过滤的成功率是取决于模型的准确性的,一开始我们可能训练的数据只有几十条,通过不断的学习更多的数据,来不断完善它的识别能力,这是一个长期的过程。

这样我们就完成了自己第一个垃圾短信屏蔽软件的开发,希望大家能够从中获得一些帮助。






评分19

评分次数19

we券+20 经验+20 人气+112

收起
joardy + 1 2019-1-11 18:09技术分
anniyer + 1 2019-1-11 16:41技术贴。虽然看不懂,但也要顶~~
weiling999 + 1 2019-1-10 14:56感谢分享^_^
叹明月照沟渠 + 1 2019-1-9 10:26威锋有你更精彩:)
落雪飞花 + 10 2019-1-8 08:02威锋有你更精彩:)
luyiran + 3 2019-1-8 01:50威锋有你更精彩:)
jerry7chen + 5 2018-12-27 15:47威锋有你更精彩:)
gnod512 + 5 2018-12-27 14:00精品文章^_^
灰色假面 + 5 2018-12-23 12:43精品文章^_^,厉害,这才是威锋
老矣丶梦犹在 + 10 2018-12-21 23:03威锋有你更精彩:)
漂流萍 + 1 2018-12-21 18:23威锋有你更精彩:)
lanhigh + 16 2018-12-21 18:05技术贴居然没人顶
用户名05 + 7 2018-12-17 11:41助人为乐^_^
rolser + 5 2018-12-12 22:44精品文章^_^
糖醋丶炒排骨 + 20 + 20 + 20 2018-12-12 19:27威锋有你更精彩:)
苹果ios + 5 2018-12-12 19:04技术贴,不能沉
小鄵 + 1 2018-12-12 18:55威锋有你更精彩
maikaoyu + 3 2018-12-12 17:47精品文章^_^
台湾 + 12 2018-12-12 17:02威锋有你更精彩:)最多了
92主题6961帖子866人气

级别: 红钻苹果

我是中国人     

帖子
6961
经验
6529
精华
人气
866
发表于 2018-12-12 17:02:55 | 显示全部楼层
沙发。
40主题593帖子64人气

级别: 白苹果

帖子
593
经验
687
精华
人气
64
发表于 2018-12-12 18:54:07 |威锋客户端 | 显示全部楼层
买不起不过笔记本咋办?
178主题2430帖子2446人气

级别: 白金苹果

积分   -999999

帖子
2430
经验
4366
精华
人气
2446
发表于 2018-12-12 19:04:19 |威锋客户端 | 显示全部楼层
对永远跟党走_于2018-12-12 16:02:52在楼主发表的人气:+5;
开始第二节你需要准备一台苹果电脑并已经安装了最新版的操作系统与Xcode(若有更新,请保持最新),准备一台iOS12以上操作系统的苹果手 ...
技术贴,不能沉
10主题719帖子22人气

级别: 白苹果

帖子
719
经验
715
精华
人气
22
发表于 2018-12-12 22:44:14 | 显示全部楼层
对永远跟党走_于2018-12-12 16:02:52在楼主发表的内容评分:人气:+5;
本帖最后由 永远跟党走_ 于 2018-12-12 16:51 编辑

       开始第二节你需要准备一台苹果电脑并已经安装了最新版的操作系统与Xcode(若有更新,请保持最新),准备一台iOS12以上操作系统的苹果手机,我们将使用Xcode来编写……
精品文章^_^
31主题1030帖子17人气

级别: 白苹果

帖子
1030
经验
926
精华
人气
17
发表于 2018-12-12 23:19:58 |威锋客户端 | 显示全部楼层
没电脑又看不懂怎么办
5主题27帖子159人气

级别: 实习版主

帖子
27
经验
61
精华
2
人气
159
 楼主| 发表于 2018-12-17 09:45:35 | 显示全部楼层
梦见梦不见的 发表于 2018-12-12 23:19
没电脑又看不懂怎么办

技术投资是永远不晚且永远保值的
7主题163帖子0人气

级别: 青苹果

帖子
163
经验
134
精华
人气
0
发表于 2018-12-17 11:15:18 |威锋客户端 | 显示全部楼层
支持一下
19主题1098帖子71人气

级别: 白苹果

帖子
1098
经验
1160
精华
人气
71
发表于 2018-12-17 15:35:45 |威锋客户端 | 显示全部楼层
厉害了我的哥
557主题9640帖子2163人气

级别: 蓝钻苹果

帖子
9640
经验
10111
精华
1
人气
2163
发表于 2018-12-21 18:05:42 | 显示全部楼层
对永远跟党走_于2018-12-12 16:02:52在楼主发表的内容评分:人气:+16;
本帖最后由 永远跟党走_ 于 2018-12-12 16:51 编辑

       开始第二节你需要准备一台苹果电脑并已经安装了最新版的操作系统与Xcode(若有更新,请保持最新),准备一台iOS12以上操作系统的苹果手机,我们将使用Xcode来编写……
技术贴居然没人顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则