首页 > 其他分享 >谈iphone电话短信增强工具kuaidail软件的实现

谈iphone电话短信增强工具kuaidail软件的实现

时间:2024-07-26 19:27:42浏览次数:14  
标签:界面 实现 kuaidail 通话记录 系统 iphone 短信 归属

  首先声明,本人不是kuaidail软件的实现作者,是在做相关的项目过程中,想到了也实现了类似的功能,kuaidail软件本身并没有公布相关实现细节,所以在此分享一下。

  在这里,可以了解kuaidail软件的一些安装效果:http://bbs.app43.com/thread-15553-1-1.html

一、总述

  kuaidail运行于越狱平台的ios系统上,与其说它是一个软件,说其是插件更合适不过,因为用户看到的仅仅是它的设置界面

和优化了电话、短信等功能的一些形式。它很方便地把iphone用户对于联系人的归属地,联系人的图片,编辑通话记录,

截获短信,显示陌生人归属地,截获电话并可以列入黑名单白名单,在拨打电话界面快速搜索联系人等用户特别需要的功能

很好地和系统的电话、短信、通讯录软件结合在一起,效率很好,像是系统自带的,可谓精品。

二、软件实现总述

  kuaidail的实现应该并不是很复杂,对于平台来说,越狱是必要的前提。为了和系统的界面很好地集成,并修改系统界面信息,

依赖mobilesubstrate也是必要的前提。获取号码的归属地可以采用读取号码归属地数据库的方式实现。实现中最为复杂的地方,

应该就是如何hook恰当的方法或函数,实现正确地改变系统的一些行为,包括界面的显示,程序运行的步骤等。在这里面,最为

复杂的无非就是对于短信和电话的截取,系统界面附加功能对应于系统库的函数是什么,这个过程并非易事。

三、具体实现

   下面将此软件分数个模块,分别介绍各个模块的实现细节。

   1、设置程序:

       kuaidail在系统的设置界面有设置项,它的实现可以参考iphone应用程序设置项创建的方式,当然它依然需要一些其它的支持,

   那就是系统Preferences目录中配置文件的支持。

  2、程序主体:

      程序主体应该需要动态库来实现,也就是像输入法、SBSetting这种软件一样,在系统/Library/MobileSubstrate/DynamicLibraries

  目录里需要保存kuaidail主体实现程序,例如kuaidail.dylib, 同时会有kuaidail.plist,里面会有加载的配置项,例如com.apple.mobilephone,

  com.apple.sms等。

  3、通话记录可编辑

     在iphone的电话程序中,通话记录是以UITableView的控件来展示的,它是通过设定UITableView可编辑来完成通话记录可编辑的。

  电话程序左上角的"编辑"按钮,可以按照UIBarButtonItem的添加形式添加到UINavigationBar的左侧即可实现。删除通话记录可能需要

  更新系统通话记录数据库,它就是在/Library里面的通话记录里。通话记录数据库是sqlite数据库。

  4、联系人图片的展示

    联系人图片的获取不复杂,可以通过ABPersonCopyImageData函数实现,然后在UITableView的cell上根据大小设置下就行了。

  5、联系人归属地显示

    利用归属地数据库是个好办法,而且效率也能跟上;appstore上的软件 快速短信+ 就是一个例子。不过,最有效率的方式是自定义归属地

  数据格式,将归属地数据库中归属地信息采用顺序或逆序排序的方式生成bin文件,用fopen读取其中的信息,采用二分查找的方式获取号码

  的归属地信息,kuaidail就是采用这种方式。

  6、通话记录中归属地显示在不同位置

     kuaidail软件在电话程序的最近通话中,根据设置,归属地信息可以显示在号码或者联系人下面,也可以显示在通话时间的下面,

  显示 的位置,可以采用hook相关视图的setFrame方法来实现。相关view的获取可以通过递归获取view所有子view信息来得到。

  7、系统电话程序的拨号键盘界面#符号的改变以及右上角帮助的i图标的增加

       这个主要需要获取此界面对应的viewController和view是什么,可以在MobilePhone库中classdump获取头文件来寻找,比较容易找到;

  也可以hook如下方法来获取: UIViewController的viewWillAppear、viewDidAppear和viewDidLoad事件来得到具体viewController的字符串

  名称和界面中所有view的名称,然后将图标添加上面。#符号支持长按来改变图标,可以采用通用的UILongPressGestrureRecognizer来实现。

   i帮助图标按下产生数个帮助信息的小视图,可以采用UICalloutView或者UIMenuController来实现。

  8、系统电话程序拨号键盘界面上方显示多个号码,可以循环滚动显示

      可以使用UIScrollView来实现,为了达到可循环滚动,可以在UIScrollView的左侧和右侧各创建一个相同的UIScrollView.

   或者可以在滑动事件过程中,在左侧和右侧分别显示上一个和下一个视图,这样的话可以节省内存。

  9、截获系统短信事件

       系统未公开的类SMSCTServer包含关于SMS处理的方法,其中_ingestIncomingCTMessage方法是接收短信的方法,可以hook它来处理。

  10、截获系统电话事件

       系统电话事件有很多种方法,但是截获后同时避免系统的相关处理不是易事。ios4.0后,apple开放了获取电话来临消息的事件;

   但是此事件并很好地这样的需求,对于加入黑名单的号码,当此号码拨过来,系统没有任何界面展示是最好的效果。hook CTCallCenter类

   的handleNotificationFromConnection方法也不能很好地解决这个问题,用CTTelephonyCenterAddObserver方法貌似效果要好点,但是没能

   达到kuaidail实现的效果。


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

标签:界面,实现,kuaidail,通话记录,系统,iphone,短信,归属
From: https://blog.csdn.net/cxsjabcabc/article/details/7197340

相关文章

  • 基于 Session 实现短信登录
    短信验证 一、基于Session1、登录流程1)发送验证码用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机号如果手机号合法,后台此时生成对应的验证码,同时将验证码进行保存,然后再通过短信的方式将验证码发送给用户2)短信验证码登录、注册用户将验证码和......
  • 阿里云:用php开发短信接口
    一,准备工作:在阿里云控制台->短信服务中,需完成以下三项的配置,等官方审核通过后,则可以使用接口二,下载安装php的sdk1,官方文档地址https://help.aliyun.com/zh/sms/developer-reference/sdk-product-overview/?spm=a2c4g.11186623.0.0.1db061a5jSzBwS2,用composer下载安装liu......
  • 1323、基于51单片机按键发送GPS时间定位信息 GSM短信收LCD12864显示报警(程序+原理图+
    毕设帮助、开题指导、技术解答(有偿)见文未  目录方案选择单片机的选择一、设计功能二、实物图单片机模块设计三、原理图四、程序源码五、PCB图资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择单片机的......
  • 如何在 iPhone 主屏幕上添加 Google Gemini 快捷方式
    GoogleGemini可以在iPhone上使用,但是访问方式极其隐蔽,需要在GoogleApp中才能打开使用。不过,现在我发现一种非常简单的方法,可以让你在iPhone主屏幕上或使用操作按钮直接打开使用单独的GoogleGemini应用。安卓用户可以直接使用独立的Gemini应用,而iPhone用户......
  • 苹果手机越狱,iPhone绕ID越狱,苹果手机最简单的越狱方法
    CheckRa1n越狱支持设备:iPhone5S-iPhoneX,兼容系统:iOS12.3~iOS14.8,所以一些iPhone5S以前的老设备(可以通过往期教程老设备越狱)以及iPhoneX以后的新设备都是无法通过heckRa1n越狱,更别说绕ID的,其中iPhoneX以后的新设备目前无法破解ID,某宝、某多的破解ID更多的是硬解换主......
  • 第二节:一锁二判三更新、短信验证码完善方案、自动关单问题
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • 如何一键删除iPhone相册所有照片?教你快速删除
    iPhone的摄影素质是业内第一梯队的水准,用户会用它拍摄大把大把的照片。使用iPhone拍摄了大量照片后,有时可能会想要一次性将它们全部删除。无论是为了释放手机内存,还是为了整理相册、清除不再需要的照片,能够快速、便捷地完成删除操作都是非常重要的。可惜iPhone没有一键全选,如果......
  • 如何轻松地将 iTunes 备份中的联系人恢复到 iPhone?
    通讯录作为iPhone上最重要的数据类型之一,对我们的日常生活影响很大。如果您之前已经对联系人进行了iTunes备份,并且想要从iTunes备份中恢复联系人,您可以按照本文中的三种简单方法轻松从iPhone备份中获取联系人。第1部分。如何通过CoolmusteriPhoneDataRecovery......
  • 支持语音电话、短信、企业微信、钉钉、APP、第三方接口、音柱等多种告警通知方式的智
    AI视频监控平台简介AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实......
  • iphone如何删除重复照片
    iPhone以其出色的拍摄性能和用户体验深受全球用户欢迎。随着我们使用iPhone记录生活的点点滴滴,不可避免地会在相册中积累大量照片。这其中不乏重复拍摄的照片,这些重复的照片不仅占用宝贵的存储空间,也让我们在查找特定照片时变得更加困难。因此,iphone如何删除重复照片困扰着广大......