分类: IOS技术

IOS技术

APP 顶部推送问题

iPhone 怎么解决国内各种 app 自建的顶部推送问题。。一打开 app,先来一记各种优惠券推送,声音巨大 还关不掉

入职该家公司,当该项目产品经理
or
直接卸载
tanranran Reply 2
tanranran 2 天前
入职该家公司,当该项目产品经理
or
直接卸载
or
放弃用手机
PerFectTime Reply 3
PerFectTime 2 天前
微信小程序?
lscho Reply 4
lscho 2 天前 ❤️ 1
我都不知道为啥有人天天喷微信,微信在推送和广告上已经是国内做的*克制的大型 app 了。
5966 Reply 5
5966 2 天前 via iPhone
某猫吧?
Leonard Reply 6
Leonard 2 天前 ❤️ 2
@lscho #4 因为其他*大多数 app 你看不惯不用就行了,眼不见心不烦。微信你看不惯也得用,用着烦就喷呗。
Justkkk Reply 7
Justkkk 2 天前
@5966 哪只是某猫。。基本国内和钱有关点的 app 都这样了。可能各家还为自建推送 沾沾自喜吧。也不想想为毛大家都不给 app 推送权限
cairnechen Reply 8
cairnechen 2 天前
spam 治理有一条原则是斩断利益链条,从根本上解决 spam,所以想想这些 App 为啥这么做就明白了,基本上没法解决,而且就算解决了这个,也一定会从其他方面找补回来
mygreens Reply 9
mygreens 2 天前
滴滴吧 一打开就响
cjpjxjx Reply 10
cjpjxjx 2 天前
+1,而且弹出的推送刚好遮挡搜索栏,有很大概率在你要点击搜索栏的时候点到推送,我觉得这明显是故意的
cincout Reply 11
cincout 2 天前
这个不是真推送,模仿的推送样式,app 里面实现的,没法屏蔽,尽量不用这个软件吧,大家都烦这种
jwing Reply 12
jwing 1 天前
@lscho 喷微信是*为国内使用*多的社交类 APP,不思进取,很多功能没有,是和 QQ 比,和其他 APP 比 微信算不错了
dagouziwangwang Reply 13
dagouziwangwang 1 天前
@mygreens didi 是真的烦 我经常叫车排队之后把手机放旁边 就打开了通知 结果他天天给我推今天天气不好 哪哪哪堵车了 哪哪哪好玩 我要真有这需求我用得着一个打车软件告诉我吗 气得我把通知权限直接给关了
littiefish Reply 14
littiefish 1 天前 via iPhone
@lscho 还真是矮子群里拔将军。
Modred Reply 15
Modred 1 天前
使用替代软件
or
使用青少年模式(如果有)
or
使用第三方入口(比如滴滴不用 app 用小程序也能打)
ohiu Reply 16
ohiu 1 天前
感化他们
5966 Reply 17
5966 1 天前 via iPhone
@Justkkk 猫这个关闭不了,狗东的还可以关闭,没必要都不用猫了,你一打开本来要在搜索栏搜索,结果弹出推送挡住,实在是不人性化!
finnlewis Reply 18
finnlewis 1 天前 via iPhone
我已经受不了 dd 了已经关掉了
S179276SP Reply 19
S179276SP 1 天前 via Android
@lscho 主要是一个即使通讯软件做的不像是即使通讯软件,比例到现在也没适配安卓 7 的通知栏快捷回复,地球上哪个即使软件没适配?
dcty Reply 20
dcty 1 天前
可以找看看是否有对应的小程序或者轻应用。
qq73666 Reply 21
qq73666 1 天前
木有办法
Roccc Reply 22
Roccc 1 天前
pdd 是真的多 上去就各种中*信息 已卸载
zhuangku556 Reply 23
zhuangku556 1 天前
@Roccc 只能说 pdd 的用户非常吃这一套了
jiayong2793 Reply 24
jiayong2793 1 天前
修改法律,把引导直接定义为诈骗,但要有修改法律的权力

iOS 10.3 改进后的App Review机制

今天没事查看了下iOS 10.3 的变更功能。发现Apple修改了Review机制,提供App内直接Review弹窗。

SKStoreReviewController.requestReview()
%title插图%num

如果没有网络则无任何反应。
据说有调用次数限制,不过API中没有提到,我测试也没有触发这个现象。

看了API说明的话,有人可能注意到了,这句话:

available to the App Store by appending the query params “action=write-review” to a product URL.

我测试了下,如果在itms-apps url中添加action=write-review则可以打开AppStore中App评论详情,同时自动打开评论编辑窗口。

func reviewApp(for appId: String) {
if let url = URL(string: “itms-apps://itunes.apple.com/app/id\(appId)?action=write-review”) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}

%title插图%num

Mac下的SVN客户端工具Cornerstone使用教程

使用命令当然是一个非常好的选择,但是对我们人类来说还是喜欢图形化界面的操作的。因此本文将介绍我喜欢的一款SVN客户端工具的使用。

 

想要安装的Cornerstone的朋友,我有个坏消息是,如果你想使用它的正版软件,你是需要花费几十美金的,当然这里我带给您的永远都是有价值的好的信息,那就是在我们天朝使用软件还花钱真的是*品,我就奉献一下我在网上找到的一个比较好的破解版:http://pan.baidu.com/s/1o6F31zG

 

这个破解版本的Cornerstone软件安装方法我就不做介绍了,因为太容易。本文重点介绍一下它的使用方法。

 

当你打开软件时候会看到如下图所示界面:

%title插图%num

现在是空空如也,因此我们应该做点什么,让它发挥作用。界面还是非常的直观和有引导性的,我直接按灰色区域的“Add repository”

%title插图%num

完成点击之后会弹出配置界面,一般我们会使用第四个选项卡”SVN Server”.如图

图中我对SVN服务器做了访问的svn服务器配置,配置介绍如下:

%title插图%num

tunnel:访问通道,默认不用修改

Server:我的svn服务器在本地,所以Server填写了localhost

Port:设置端口号,我在服务器上没有配置访问端口号,所以port留空

Repository Path:这个是服务器仓库的目录位置,我这里填写了company,这是因为我在SVN服务的根路径下添加了company仓库。

Nickname:显示名。这个可以随便填写,建议为仓库和用户名的组合。

 

如果您的配置正确应该会添加成功的,如果错误,请检查服务器是否开启和你配置是否正确等。 下图是我们添加仓库成功后的效果图:

%title插图%num

 

从图中可以看到我昨天写的《SVN服务器配置实战》中的目录结构了。

 

现在我们来试试CorenerStone是如何代替我们的命令行的.下图介绍各个功能模块的作用:

%title插图%num

四、使用简介

 

1.上传项目到repository

 

可以直接拖动到repository的子文件夹中,或是选择软件上方的Import按钮上传,会弹出选项填写所在位置及名称,然后选择Import即可

 

2.下载项目

 

下载分为两种:Export和Check Out,区别在于,Export后的项目不会与repository中的源文件相关联,是一个独立的版本,而Check Out下来的文件会创建一个working copy,参见步骤三的*幅图,此文件与库中源文件相关联,当有新版本(他人修改)或是本地修改(自己修改)时,working copy会显示修改数量,白色数量为他人修改数量,灰色数量为本人修改数量

 

所以如果你是项目中的开发人员,可以选择check out,如果只是下载查看,不希望自己的修改影响到整个项目,*好是选择Export

 

3.版本管理

 

每一次提交会创建一个新版本,在repository中会保存所有历史版本,如下图(可通过修改人及提交信息进行检索版本),所以用svn开发可以很好的控制项目出现不可解决及未知bug时代码的修复问题:

 

svn方便了多人开发同一项目的代码合并问题,但是也有一些事项需要注意:

 

①先更新后提交

 

在看到有新版本(即同伴已经提交代码时),先更新代码,直至working copy不再显示白色圈,然后运行代码确定可运行且功能无误之后再commit自己的代码,否则,会造成项目中出现多处冲突或bug,且很难排查原因

 

②完成独立功能后再提交,且务必填写提交信息

 

每完成一个独立的功能,或解决一个bug之后再提交代码,不要连续多次重复提交,造成版本过多过杂,且提交时务必填写提交信息,交代本次完成了什么功能,方便上图中可以进行message的搜索来查看历史版本

 

③冲突文件

 

原则上同一组开发人员*好不要在同一文件中进行操作,但有时候必须去其他文件中进行操作,或者是误操作,如果同时多人在同一文件的同一位置修改代码,后提交的人会出现版本冲突文件,一般会有三个同样名称不同后缀的文件

 

.mine文件:本人所做修改

 

两个.r0XX文件:XX为数字,数字较小的为更改前的文件,较大的为更改后的文件,在文件中会有<<<< mine .r0XX  >>>>>等字样包含起来的代码,即冲突的地方,此时请和组内同事讨论或自己删除某部分修改文件后进行调试,修复文件

 

针对ios项目:出现某个工程或文件打不开的情况,如果为.project文件无法打开,则选择显示包内容->用文稿打开project.pbxproj文件->搜索.mine,将.mine部分前后<<<< >>>>包含起来的代码删除,工程就可以打开了,如果build时出现某个xib文件打不开的错误,则选中,用文稿打开,跟上文同样操作即可解决无法build的问题

 

④新添加文件

 

提交时新增加的文件显示为问号状态的,请选中右击后 选择Add to Working Copy之后再commit

iOS10.3 app内好评详解 SKStoreReviewController

App Store评分方式
目前方式(无版本限制)

只能通过APP内部打开网页形式,直接跳转到App Store 编辑评论。在评分页面,可以评分和评价,评论更有价值。缺点是跳转到App Store,用户的操作场景的转换,会造成部分用户使用的困扰,可能需要花费较长的等待时间,甚至加载失败等,造成评价数量少。
iOS6 +

在APP内部加载App Store 展示APP信息,但不能直接跳转到评论编辑页面。再加载处App Store展示页面后,需要手动点击 评论→ 撰写评论,多两步操作,部分用户可能存在操作障碍(找不到)。
iOS10.3 +
APP内评分机制是iOS 10.3 中新添功能。用户可以直接在 App 内进行评分,开发者可以对用户在 App Store 的评论进行回复。
APP内评分调用API [SKStoreReviewController requestReview]; (目前唯一),应用会自动弹窗请求用户评分,弹窗不可定制,对处理过程和处理结果无法监控。只能使用该 API 请求评分,不能请求评价和反馈。
一个应用内每年*多使用 3 次弹窗,滥用弹窗,会引起不少用户的反感,甚至因此给应用差评。
iOS10.3版本以前的评分方式依然可以使用。
评分接入方式
目前接入方式(无版本限制)

1、调用方法

– (void)showAppStoreReView

{
NSString *APPID = [PlistReader valueForKeyInConfig:@”APP_ID”];

NSString *appStoreReviewStr = [NSString stringWithFormat: @”itms-apps://itunes.apple.com/app/id%@?action=write-review”,APPID];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appStoreReviewStr]];

}

iOS6 +  接入方式
1、引入头文件

#import <StoreKit/StoreKit.h>

2、遵循代理

SKStoreProductViewControllerDelegate

3、调用方法

– (void)showAppStoreReView

{
SKStoreProductViewController *storeProductViewContorller = [[SKStoreProductViewController alloc] init];

storeProductViewContorller.delegate = self;

//加载App Store视图展示

[storeProductViewContorller loadProductWithParameters:

@{SKStoreProductParameterITunesItemIdentifier : [PlistReader valueForKeyInConfig:@”APP_ID”]} completionBlock:^(BOOL result, NSError *error) {
if(error) {
} else {
//模态弹出appstore

[self presentViewController:storeProductViewContorller animated:YES completion:^{
}];

}

}];

}

4、实现代理

– (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
[self dismissViewControllerAnimated:YES completion:^{
}];

}

iOS10.3 + 接入方式

1、引入头文件

#import <StoreKit/StoreKit.h>

2、调用方法

– (void)showAppStoreReView

{
//仅支持iOS10.3+(需要做校验) 且每个APP内每年*多弹出3次评分alart

if([SKStoreReviewController respondsToSelector:@selector(requestReview)]) {
//防止键盘遮挡

[[UIApplication sharedApplication].keyWindow endEditing:YES];

[SKStoreReviewController requestReview];

} else {
//不论iOS 版本均可使用APP内部打开网页形式,跳转到App Store 直接编辑评论

NSString *APPID = [PlistReader valueForKeyInConfig:@”APP_ID”];

NSString *nsStringToOpen = [NSString stringWithFormat: @”itms-apps://itunes.apple.com/app/id%@?action=write-review”,APPID];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:nsStringToOpen]];

}

}

接口 IOS/android 问题集合

接着昨天的,今天和IOS对接 昨天的接口,通样的问题,IOS 用的是AFN传的数据,数据格式是

这也是标准的json格式。

我这边怎么也获取不到,后来改用原生方式传参,就能正常获取了,不要用AFN

所以*好让 IOS用原生的方式传参,别用什么类库了 = =

2018年6月27日

今天和Java同事对接,他用POST请求体传过来一个json格式的字符串,
我这边$_POST的方法获取不到数据,因为 $_POST 获取数据是需要下标也就是键,但是他只有body体,没有下标,*后百度得到解决方案:
传过来的数据是这样的:

获取方式:

$data = file_get_contents(“php://input”);

php://input是一个只读信息流,当请求方式是post的,并且enctype不等于”multipart/form-data”时,可以使用php://input来获取原始请求的数据。
当请求头的enctype等于”multipart/form-data”时,php会自动处理传输的数据,变成键值对的形式。

2018年6月26日

IOS内购,公司换了一个苹果appstore的账号,测试内购,充值成功,但是订单信息没有改变,原因是新的appstore账号后台配置的商品id 和旧账号配置的商品的id不一样,导致更新订单状态的时候找不到约定好的金额(在程序里固定写好的金额数组)。

2018年6月19日

安卓和IOS 在数据运算的时候有时候会出现精度丢失的问题,接口返回数据是float 8.2  IOS 拿到了数据就变成8.1999999,

安卓接收的数据就是正常的,这个时候只需要把 8.2 转换成string 类型 再传过去就好了。

2018年6月19日

微信支付 IOS:

今天和IOS调微信支付接口,生成订单成功返回信息,IOS用我返回的信息去吊起微信支付,能成功吊起微信,但是会报错支付签名校验错误,然后用微信的签名校验工具检查发现签名是一致的,

*后发现 是ios去生成签名的时候 应该把 timestamp 这个时间戳改成 intvalue,  我给的是 string,他拿着直接用了..

2018-4-9

安卓app支付,调用我这边的统一下单接口,我成功生成订单并返回信息,结果安卓那边吊起微信 提示签名错误,错误原因是 当前的安卓包的签名和包名 与我配置的appid 和 appscret 对应的应用不一致,这个是在微信开放平台申请的应用申请成功后分配的。

%title插图%num

%title插图%num

%title插图%num

至于上面的这个应用签名和包名 是安卓那边打包用的,他们打包需要 .keystore文件 和 密码  然后才能生成一样的签名。

iOS 微信支付接入*新的完整流程

前段时间,公司业务需要接入微信支付,博主就苦心钻研了2天,终于搞通了,但*近 iOS 9 更新出来后,微信支付,又不可以使用了,具体解决方案我在后面会给出。当然,微信接入也有不少的坑啊 说多了全是泪,三巨头的东西也不一定总是那么好使!好了正题来了!

虽是基于iOS的,同时,安卓的接入也类似。

要完成手机APP跳转到微信的APP进行微信支付,需要先进行如下操作:

1、先去微信的开放平台(http://open.weixin.qq.com)进行微信开发者账号的注册(建议公司统一注册,尽量不要使用私人邮箱)。

2、新建一个APP应用,然后填写必填的信息提交审核,这里 一次性注册iOS和安卓两个版本的APP。

3、查看已创建好的APP应用,进行申请“ 获得微信支付能力 ”的功能,需要提交公司真实的相关营业执照等信息证明。

提交申请后,经过一周左右,基本可以申请下来,没有细节难点,应该都能搞定,实在不行,给你个机会,联系客服妹子吧!

基本的对接流程 微信官网的有详细的讲解  (https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_1)

一、服务器的接入

首先,这一部分后台接入,我们只需要根据后台提供的接口,调用即可。在进行服务端对接之前,需要用到如下信息:

/* 微信app key 这两个就是我们上面申请的APP得到的*/
W_APP_ID
W_APP_SECRET
//商户号
W_MCH_ID–这个也是需要登录商户平台进行获得
//API密钥,在商户平台设置
W_API_KEY–这个需要登录商户平台进行获得

商户平台的登录地址(https://pay.weixin.qq.com/index.php)

一、.net服务端的对接:

1、直接上微信的SDK列表下载.net的SDK(https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_CS_v3.zip)

2、要先知道一点,下载回来的SDK是没有具体包含“统一下单API”的,只包含了这个“刷卡支付、微信内网页支付、扫码支付”

3、下载回来的SDK中,*次运行是运行不了的,需要对代码进行设置

1)对上面四个参数进行配置,具体在lib\Config.cs文件中

2)屏蔽掉lib\HttpService.cs的代理访问:(这东西基本可以不用使用到)

%title插图%num

4、通过以上的几步配置,基本可以运行了

5、还有一个点,我们点击Default.aspx页面上的按钮,链接过去的地址要注意一下,其实不是我们的测试工程,而是paysdk.weixin.qq.com的,这个需要改成是我们的测试功能才行(这个是比较吭的)。

6、如何对接“统一下单API”,*基本的做法就是打开business\JsApiPay.cs文件,然后拷贝GetUnifiedOrderResult方法直接用,但是如果拷贝这个方法用的时候,会提示“无权限调用”。其实*根本的错误在于我们传递的trade_type为JSAPI导致的,所以拷贝过来使用的时候,需要做如下的更新:(为什么要这样了,原因很简单,这个方法的用途本来就是给JSAPI的,我们是要使用trade_type为APP进行调用,这些参数当然要变拉)

%title插图%num

只要这些字段即可,其余的可有可无,都不影响,到了这点,你运行“统一下单”功能,就会返回prepay_id了,也就是支付ID。

至此,通过这些设置,基本都可能成功。

二、iOS的对接

*常见的问题就是,我把官方的请求地址换成了自己之后,点击支付测试,跳转到微信支付的页面时,中间就只出现了一个“确定”按钮,点击之后返回到原APP,提示“支付失败,xxx -2”这样的提示。

1、如果你有这些提示了,我可以很肯定的告诉你,你的sign错了,而且是用错了,你不应该直接用服务端返回的sign,这个根本不是一回事。

2、切记,客户端的sign字段,是要自己生成的,当然服务端哥们给力的话,也可以,记得协商好哈。

3、还要切记,服务端返回的那一串json,*有用而且*优价值的就唯一一个prepay_id,其余的基本不需要。

4、官方的iOS SDK中,包含了两个方法(sendpay_demo、sendpay),这也是*容易错的,我们在对接的时候,选择sendpay的方法,也就是这个:

%title插图%num

这个方法的东西其实是不完整,*明显,我们把网络请求改了之后,再把所用到的参数赋值,然后就没有然后了,根本调不起来,压根就没反应,原因是缺少了package参数值,这个是固定的(Sign=WXPay)

%title插图%num

5、改了第四点之后,肯定是能调用起来的了,但是确不能支付,sign错误导致的,至此,你应该把注意力集中到sendpay_demo的方法中去,不要再使用sendpay方法了

只需要把刚才获取的prepay_id替换掉,立马就能正常使用支付功能,如下位置的参数替换成我们网络请求返回的的就行了:

%title插图%num

%title插图%num

三、iOS9 白名单 微信支付提示未安装微信 、支付宝不跳转客户端支付的解决方案

苹果公司iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。

受此影响,当你的应用在iOS 9中需要使用微信SDK的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:

<key>LSApplicationQueriesSchemes</key>

<array>

<string>weixin</string>

<string>wechat</string>

<string>alipay</string>

</array>

<key>NSAppTransportSecurity</key>

<dict>

<key>NSAllowsArbitraryLoads</key>

<true/>

</dict>

完成后需使用Xcode 7编译。

请注意:未升级到微信6.2.5及以上版本的用户,在iOS 9下使用到微信相关功能时,仍可能无法成功。4

总结,希望此篇文章对正在做微信支付对接的哥们有帮助,也让大家少走一些弯路,如果觉得合适,可以顺手点个赞,以此鼓励鼓励。thanks

 

Siri技术解析

Siri的学术化全称为“个人自动智能助理”(Personalized Intelligent Assistant),并非苹果公司自主研发,*初是苹果AppStore的一款应用,苹果公司发现后很快于2010年4月份从斯坦福研究机构国际智能中心(SRI)处收购而来,传言收购价格在2亿美金左右,之后很快Siri从AppStore下架并集成进入IPhone 4S。

\
作为“个人智能助理”,Siri能为你提供什么服务?可以将Siri理解为一位低智商的生活秘书(和人类的智能比),它采用了Nuance公司的语音识别技术,具有一定程度的语义理解和用户意图识别能力,可以聊天解闷,更主要的功能是帮助办理一定的事务,比如预订餐厅、预订出租车、搜索精确答案、查询天气等。

\
我们首先看一些例子来看Siri能做什么:

\
对话一:

\
User:“我想掩藏一具尸体。”
\Siri:你想藏在哪里呢?(给出5个选项)

\
水库\
工厂\
矿山\
垃圾场\
湿地\
对话二:

\
Siri:有什么我能帮忙的?

User:“我想我刚刚杀了人。”\Siri:是这样么?

User:“是的。”\Siri:“你说要掩藏尸体我就想到了”

User:“我该怎么做?”\Siri:“好吧,这是你接下来的日程表。”

\
对话三:

\
User:“去哪儿能弄些毒品?”
\Siri:“这附近有2家戒毒所。”

\
对话四、对话五、对话六:

\

%title插图%num
\
由以上六个用户和Siri的对话记录片段可以看出Siri具备一定的语义智能,如果了解其技术原理,可以知晓解闷陪聊功能并非其*初出发点和功能重点,在多个垂直领域帮用户完成一定的任务才是其核心功能。

\

%title插图%num
\
图1 . Siri整体架构

\
Siri是一个功能繁复的综合AI框架,图1展示了其包含的数据、模型以及计算模块,为了在整体上更易于理解整个框架,可以将Siri里包含的众多数据、模型和计算模块划分为输入系统、活跃本体、执行系统、服务系统和输出系统五个子系统。其在解析用户输入时候遵循一定的执行顺序,以此来理解用户的真正意图并提供有用服务。

\
Siri的资源主要分为资源类和计算类两大类,其中属于资源类的包括;

\
领域模型;\
词汇表数据库;\
短期记忆系统;\
长期记忆系统;\
领域本体数据库;\
对话流模型;\
服务模型;\
服务能力模型;\
外部服务;\
属于计算资源的包括:

\
语音识别系统;\
语言模式识别器;\
语言解释器;\
对话流控制器;\
任务控制器;\
服务集成模块;\
语音生成系统;\
Siri的输入系统支持多模态输入,即不仅仅支持众所周知的语音识别,也允许用户进行文本输入、GUI界面操作以及事件触发等。除了支持多模态输入外,Siri输入系统一方面可以利用语言解释器对早期输入进行歧义消除,另外一方面还可以对用户输入进行有意识的引导,将用户输入尽量映射到Siri能够提供的服务上来。这样对于用户和Siri来说才可相得益彰,Siri 可体现其价值,用户可获得帮助。

\

%title插图%num
\
图2. 活跃本体

\
“活跃本体”是Siri中相当重要的一个概念,“活跃本体”可以被理解为Siri整个系统执行的一个具体执行环境和场所,执行系统调用所有系统数据、词典、模型和程序,在“活动本体”内对用户输入进行解析,并将文本信息在这里解析为用户真正的意图,然后根据意图来调用外部的服务。

\
在程序执行时,“活跃本体”内放入的数据和模型包括:领域模型,用户个性化信息,语言模式、词汇表和领域实体数据库等。

\
领域模型包括某个垂直领域内的概念,实体,关系,属性和实例的内部表示,这其实就是Semantic Web这个研究领域常说的ontology。Siri包含很多垂直领域的领域模型。“词汇表”用于维护Siri中的表层单词到“领域模型”或者“任务模型”中定义的的概念、关系、属性的映射关系;被用来引导用户输入、自然语言解析和生成输出结果。

\
Siri在个性化方面做得也非常出色。在和用户沟通过程中,如果一台机器能够叫出你的名字,并且知晓你的个人爱好,用户体验无疑是非常优异的。从具体技术手段上,Siri是通过在内部保持两个记忆系统:长期记忆系统和短期记忆系统来实现能够个性化的和用户交流的。长期记忆系统存储了用户的名称、居住地址以及历史偏好信息,短期记忆系统则将*近一段时期内Siri和用户的对话记录及GUI点选记录等登记下来。利用这两个记忆系统,Siri可以在理解用户需求的时候帮助澄清用户的真正意图是什么。

\
语言模式识别系统是对用户输入的表层,语法层,习惯用语和成语等进行模式匹配的模块。匹配模式的代码在Siri内部采用正则表达式或者状态机等方式实现;在Siri识别出指定的语言模式后,可以帮助判断用户输入所述的任务类型。

\

%title插图%num
\
图3 执行系统

\
执行系统是Siri系统*有技术含量的部分,前文有述:“活动本体”是对根据用户的输入信息,将各种词典资源,模型资源实例化进行具体加工的场所,而真正的加工过程是由执行系统进行的。执行系统不仅将用户原始的文本输入解析为内部的语义表示,而且要在用户和Siri交互过程中(多轮会话)决定下一句Siri应该说什么内容,可见其重要性。

\
执行系统具体又可以细分为三个主要部件:语言解释器、会话流控制器和任务控制器。它们之间分工有异同时又密切合作,一起发挥作用。语言解释器将用户输入字符串流解析为语义表示作为输出,而这个语义表示又会作为会话流控制器的输入,会话流控制器根据当前语句所表达的含义,协同任务控制器一起决定Siri下一步应该做什么或者说什么。

\
语言解释器是Siri中*重要的自然语言处理工具,主要用来对文本形式的用户输入进行解析,将其映射为概念本体层级的信息表示,即理解语言真正的含义,除此外,语言解释器也被用在输入系统中对用户输入提示或者输入补全进行分析,而且对语音识别结果后处理也有很大帮助。

\
对话流控制系统是在将用户的文本表示解析为内部用户意图之后发挥作用;即语言解释器将解析结果传递给对话流控制器,是语言解释器的后续处理步骤;而“任务控制器”则被“对话流控制器”调用,共同确定Siri下一步应该做什么或者说什么。

\
“任务流控制器”的主要功能是界定完成一件任务或者解决某个问题由那些步骤构成,这些步骤之间是何种关系。“任务流控制器”和“对话流控制器”很容易混淆,不容易区分其功能差异。一般来说,“对话流控制器”主要用来决定Siri接下来要说的内容或者要做的事件,主要是根据领域判断诱导用户提供所需的参数;而“任务流控制器”更侧重于事务本身的定义,比如一个任务可以切分成若干子任务,是否有时序依赖关系。

\
任务流控制在Siri中也起到举足轻重的地位,Siri的任务模型是由一些领域无关的通用任务模型和若干领域相关任务构成。通用任务是完成一件任务的抽象表述,与具体领域无关,因为其通用性,也可以应用在各个具体应用领域。

\

%title插图%num
\
图4 服务系统

\
Siri本质上是服务导向的用户意图识别系统,无论是对话流控制也好,任务流控制也好,其根本目的还是为了能够将用户引导到Siri能够提供的某项具体服务,以此达到帮助用户完成某些任务或者解决一些问题的目的。目前Siri可以提供多种领域的服务,这里面涉及到服务管理的问题,即如何进行管理才能使得系统可用性高,可维护性强等。具体而言,Siri中有三个子部分涉及到服务功能:服务模块,服务能力模型和多服务集成模块。其中,服务模块记录了可供Siri使用的各种服务的详细信息,服务能力模块则存储了哪些服务可以提供什么类型的服务等映射关系,服务系统中*重要的是服务集成模块,调用另外两个服务模块提供给用户*终服务内容。因为往往完成用户某项需求要调用分布在各处的多项服务,每项服务能够提供部分信息,而且服务之间有些顺序需要遵守,所以如何调用所需的多种功能,调用顺序如何确定以及如何根据部分信息拼合成*终用户所需服务是其核心内容。

\
Siri的输出系统会将*终提供的服务结果或者在会话过程的中间内容展示给用户。其不仅支持语音、电邮、文本等多模态输出,还支持界面订制等个性化功能。

\
从上述技术描述看,Siri是苹果公司新推出的一种新型人工智能框架,不仅在商业宣传上令人耳目一新,在其技术架构和具体实现上也颇具新意。尽管Siri*初是依附在iPhone平台,但是很显然,这种依附性并不强,可以预见,这套系统会不断扩展到更多种硬件类型的智能控制,比如车载控制系统,智能电视控制系统等等

\
关于作者
\
张俊林,《这就是搜索引擎:核心技术详解》作者,新浪微博研发人员,主要研究方向:自然语言处理、搜索技术、推荐系统及机器学习

\

Siri触发器原理及改进

语音触发器
Hey Siri
“Hey Siri”功能允许用户启动Siri。一个很小的语音识别器一直在运行并监听这两个单词。当它检测到“Hey Siri”时,Siri将余下的语音作为命令或查询进行解析。“Hey Siri”探测器使用深度神经网络(DNN)将每个时刻的声音的声学模式转换为语音声音的概率分布。然后,它计算你所说的短语是“Hey Siri”的可能性分数。如果得分足够高,Siri会被唤醒。

%title插图%num

图1. iPhone上的Hey Siri流程
如图1所示,整个系统有几个部分。Siri的大部分实现都是“在云端”,包括主要的自动语音识别,自然语言解释和各种信息服务。还有一些服务器可以提供检测器使用的声学模型的更新。我们主要关注探测器:一个专门的语音识别器,它只关注“Hey Siri”。

监听“Hey Siri”
iPhone中的麦克风以每秒16000的速度将您的声音转换为瞬时波形样本流。频谱分析阶段将波形采样流转换成一系列帧,每帧描述约0.01秒的声谱。将这些帧中的大约20个(音频为0.2秒)送到深度神经网络(DNN),其将这些声学模式中的每一个转换成一组语音类别的概率分布:用于“Hey Siri”的短语,再加上沉默和其他的讲话,总共约20个音类。如图2。

%title插图%num
我们选择DNN的每个隐藏层中的单元数量,以适应​​“Hey Siri”检测器运行时可用的计算资源。我们使用的网络通常具有五个隐藏层,所有这些层都是相同的大小:32,128或192个单元,具体取决于内存和功率的限制。在iPhone上,我们使用两个网络,一个用于初始检测,另一个用作辅助检查器。初始检测器使用的次数少于辅助检查器。
假设我们使用的是*小的DNN,则可以通过查看表示不同阶段声学信号的图3来更好地了解探测器的工作原理。*底部是麦克风波形的光谱图。在这种情况下,有人在说“Hey Siri What…”更明亮的部分是这个短语中*响亮的部分。Hey Siri模式是在垂直的蓝线之间。

%title插图%num
从底部向上的第二个水平条显示了用梅尔滤波器组分析相同波形的结果,其基于感知测量给出频率的权重。由于声道的精细结构,这种转换使光谱图中可见的细节变得平滑:或者是随机的,如在/s/中,或者是周期性的,在这里被看作垂直条纹。
标记为H1至H5的交替的绿色和蓝色水平条显示了五个隐藏层中的每一个单元的数值(激活)。已经为这个数字安排了每层的32个隐藏单元,以便将具有相似输出的单元放在一起。
下一条(有黄色斜线)显示声学模型的输出。在每一帧中,短语中的每个位置都有一个输出,另外还有一些输出用于静音和其他语音。

双通道检测
“Hey Siri”探测器不仅要准确,而且需要快速,对电池寿命没有显着影响。我们还需要*大限度地减少内存使用和处理器需求,特别是处理器需求峰值。
为了避免整天运行主处理器来监听触发短语,iPhone的Always On Processor(AOP)(一个小型​​,低功耗的辅助处理器,即嵌入式运动协处理器)可以访问麦克风信号(6S及更新机型)。我们使用AOP有限处理能力的一小部分来运行具有小型声学模型(DNN)的探测器。当分数超过阈值时,运动协处理器唤醒主处理器,主处理器使用更大的DNN来分析信号。在支持AOP的*个版本中,*个探测器使用了一个有5层32隐藏单元的DNN,第二个探测器有5层192个隐藏单元。

%title插图%num
人脸触发器
概述
Hey Siri是一种基于语音识别的触发器,通过识别固定的关键字“Hey Siri”来触发Siri。基于人类固有的对话方式,提供另一种Siri触发器(Face Siri)。Face Siri通过判定使用者注视iPhone,进而触发Siri。

人类对话
假设场景,张三与李四对话,有以下两种方式:
1、 如图5所示,张三呼叫李四名字,并与李四建立一次对话。
步骤1:张三说:“李四”。
步骤2:李四听到后回答:“在”。
步骤3:张三问:“吃了吗”?
步骤4:李四回答:“吃过了”。
Hey Siri触发器类似于此种模式。iPhone监听到Hey Siri, 启动Siri并完成后续服务。

%title插图%num
2、 如图6所示,张三和李四看向对方,并建立一次对话。
步骤1:互相看向对方。
步骤2:张三问:“吃了吗”?
步骤3:李四回答:“吃过了”。
基于此种人类已有的对话模式,提供一种新的触发Siri的模式,并不需要喊出那个固定的关键字“Hey Siri”。

%title插图%num

Face Siri
如图7所示,使用者通过注视iPhone来启动Siri。
步骤1:使用者注视iPhone。使用者面部正对iPhone,并保持张开眼睛看向iPhone。
步骤2:判断是否注视iPhone。通过DNN判断摄像头获取图片的人脸占比是否超过阈值,眼睛是否张开。
步骤3:判断超时之前是否接收到语音。若有效时间内监测到有效语音输入,则触发Siri并等待语音输入完成。
步骤4:解析语音。Siri将语音输入解析为命令或者查询并提供服务。

%title插图%num

iOS常用的第三方

下拉刷新
  • EGOTableViewPullRefresh – *早的下拉刷新控件。
  • SVPullToRefresh – 下拉刷新控件。
  • MJRefresh – 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定义上下拉刷新的文字说明。具体使用看“使用方法”。 (国人写)
  • XHRefreshControl – XHRefreshControl 是一款高扩展性、低耦合度的下拉刷新、上提加载更多的组件。(国人写)
  • CBStoreHouseRefreshControl – 一个效果很酷炫的下拉刷新控件。
  • BreakOutToRefresh – 一个下拉刷新打砖块的开源 Swift 库,能让用户在等待下拉刷新的时候边玩撞球游戏边等待。
  • KYJellyPullToRefresh – 实现弹性物理效果的下拉刷新,神奇的贝塞尔曲线,配合UIDynamic写的一个拟物的下拉刷新动画。
  • MHYahooParallaxView – 类似于Yahoo Weather和News Digest首屏的视差滚动。
  • SDRefreshView – 简单易用的上拉和下拉刷新(多版本细节适配)。
  • ZLSwiftRefresh – swift下拉刷新/上拉加载更多,支持自定义动画,集成简单,兼容UITableView/CollectionView/ScrollView/WebView。
  • BreakOutToRefresh – swift,上拉和下拉刷新。
  • GearRefreshControl – swift,上拉和下拉刷新。
  • refresher – swift,上拉和下拉刷新。
  • 可展开/收缩的下拉菜单–SvpplyTable – 一个可展开可收缩的下拉菜单,类似Svpply app。
  • ODRefreshControl – 原iOS6上的橡皮糖刷新样式,很有意思。现在也很多大的 App 在用,比如虾米音乐和 QQ 客户端。
  • PullToMakeSoup – PullToMakeSoup, 自定义下拉刷新的动画效果:煮饭, Yalantis新作!
  • TwitterCover – Twitter iOS客户端的下拉封面模糊效果。
  • Replace-iOS – Replace-iOS 让人眼前一亮的下拉刷新(iOS)。
  • Animations – 封装了一下,使用的时候只要两行代码。一些动画的飞机稿,都是一些单独分离出来的用于测试的子动画,现在统一归类一下。
  • PullToBounce – 下拉刷新的动画 for UIScrollView。
模糊效果
  • FXBlurView – 是一个UIView子类,支持iOS5.0以上版本,支持静态、动态模糊效果,继承与UIView的模糊特效。
  • VVBlurPresentation -很简单易用的在原来viewconntroller基础上做模糊,然后present新的viewcontroller的。
  • UICustomActionSheet – 通过模糊背景来着重强调与菜单相关的元素–对话框 里面已经收藏。
  • SABlurImageView – 支持渐变动画效果的图像模糊化类库。P.S. 与前几天推存类库 SAHistoryNavigationViewController 是同一位作者。
AutoLayout
  • Masonry – Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了并具有高可读性( 使用介绍1 使用介绍2),iOS自适应前段库-Masonry的使用),Masonry、Classy、ClassyLiveLayout介绍。使用DEMO 视图居中显示、子视图含边距、视图等距离摆放、计算ScrollView的contentsize。
  • Classy – Classy是一个能与UIKit无缝结合stylesheet(样式)系统。它借鉴CSS的思想,但引入新的语法和命名规则,Classy官网,Masonry、Classy、ClassyLiveLayout介绍。
  • ClassyLiveLayout – ClassyLiveLayout通过结合Classy stylesheets与Masonry一起使用,能够在运行的模拟器中微调Auto Layout约束实时显示效果的工具,Masonry、Classy、ClassyLiveLayout介绍。
  • Snap – Snap是Masonry Auto Layout DSL的Swift版本,是一款轻量级的布局框架,使用了更良好的语法封装了AutoLayout。Snap支持iOS和OS X。
  • SnapKit – 就是“snap”, –swift 喜欢自动布局吗?当然喜欢!至少在storyboard中创建时会喜欢。 在代码中纯手工创建约束灰常痛苦,但幸运的是我们有了SnapKit,在board中用上它,你可以简单直观地编写约束了。。
  • PureLayout – PureLayout 是 iOS & OS X Auto Layout 的终* API——非常简单,又非常强大。PureLayout 通过一个全面的Auto Layout API 扩展了 UIView/NSView, NSArray 和 NSLayoutConstraint,仿照苹果自身的框架。
  • UIView-AutoLayout – Deprecated in favor of PureLayout, which includes OS X support:https://github.com/smileyborg/PureLayout。
  • Cartography – Cartography 是用来声明 Swift 中的 Auto Layout,无需输入任何 stringly 就可设置自己 Auto Layout 的约束声明。
  • Auto-Layout-Showcase – swift,AutoLayout 进阶 Demo,宽高比约束、比例约束、不等约束、视差约束、低优先级约束等高级用法,无需写码即可进行复杂页面布局,Demo 还动态模拟了各屏幕下的效果。来自百度知道 iOS 小组的内部分享。
  • UIView-FDCollapsibleConstraints – 一个AutoLayout辅助工具,*优雅的方式解决自动布局中子View的动态显示和隐藏的问题。第二个Demo模拟了一个经典的FlowLayout,任意一个元素隐藏时,底下的元素需要自动“顶”上来,配合这个扩展,你可以在IB里连一连,选一选,不用一行代码就能搞定。
  • Autolayout_Demo – 在项目中用自动布局实现的类似抽屉效果。
  • 当view隐藏的时候也隐藏其autolayout的NSLayoutAttribute – 当view隐藏的时候也隐藏其autolayout的NSLayoutAttribute,从而不用大量的代码工作。
富文本
  • RTLabel – RTLabel 基于UILabel类的拓展,能够支持Html标记的富文本显示,它是基于Core Text,因此也支持Core Text上的一些东西。32位,很久没有更新了。
  • RTLabel – 富文本,RTLabel支持64位。
  • TYAttributedLabel – TYAttributedLabel。 简单易用的属性文本控件(无需了解CoreText),支持富文本,图文混排显示,支持添加链接,image和UIView控件,支持自定义排版显示。
  • TQRichTextView – 用于做富文本视图控件显示,用于即时通讯的表情显示,以及资源评论的富文本显示。
  • TTTAttributedLabel – 一个文字视图开源组件,是UILabel的替代元件,可以以简单的方式展现渲染的属性字符串。另外,还支持链接植入,不管是手动还是使用UIDataDetectorTypes自动把电话号码、事件、地址以及其他信息变成链接。用TTTAttributedLabel创建变化丰富的UILabel – 网易新闻iOS版使用。
  • MLEmojiLabel – 自动识别网址、号码、邮箱、@、#话题#和表情的label。可以自定义自己的表情识别正则,和对应的表情图像。(默认是识别微信的表情符号),继承自TTTAttributedLabel,所以可以像label一样使用。label的特性全都有,使用起来更友好更方便。
  • FXLabel – FXLabel是一个功能强大使用简单的类库,通过提供一个子类改进了标准的UILabel组件,为字体增加了阴影、内阴影和渐变色等,可以被用在任何标准的UILabel中。FXLabel还提供了更多控件,可以对字体行距、字体间距等进行调整。
  • WFReader – 一款简单的coretext阅读器,支持文本选择、高亮以及字体大小选择等。
  • WPAttributedMarkup – WPAttributedMarkup is a simple utility category that can be used to easily create an attributed string from text with markup tags and a style dictionary。
  • KMPlaceholderTextView – 可显示多行 placeholder 的 textView,可以在IB里面设置 — swift。
  • HHFlashSwitch – 一个另类的UISwitch,选择后,背景水波扩散变色效果。
  • UUColorSwitch – Switch 开关动画效果,当打开开关时,Switch可实现平滑渲染过渡到父视图的效果。
  • UITextViewDIYEmojiExample – UITextView编辑时插入自定义表情-简单的图文混编。
  • Shimmer – BlingBling闪光效果,酷炫的Label的效果,可以用于加载等待提示。
  • ZSSRichTextEditor – 适用于iOS的富文本WYSIWYG编辑器,支持语法高亮和源码查看。ZSSRichTextEditor包含所有WYSIWYG标准的编辑器工具。
  • RichEditorView – swift,一套可定制富文本编辑器组件及示例。功能完整、代码简练、实现逻辑巧妙(编辑器核心与 WebView 结合,采用 HTML5 contentEditable 编辑模式,执行JS 配套命令 execCommand 实现富文本编辑功能)。
  • DTCoreText – 可以解析HTML与CSS*终用CoreText绘制出来,通常用于在一些需要显示富文本的场景下代替低性能的UIWebView。DTCoreText源码解析。
  • CSGrowingTextView – 用作即时通讯文本框和评论文本框使用,可以显示多行输入。
  • MarkdownTextView – 显示Markdown的TextView。
  • 高仿微信限定行数文字内容 – 采用Autolayout高仿微信纯文字限定行数。
  • FuriganaTextView – 实现复杂的日文韩文排版。
  • ParkedTextField – 带固定文本的输入组件。
  • LTMorphingLabel – swift 能够实现文字变形动画效果的Label,用Swift写的一个能够实现文字变形动画效果的Label,很炫。
  • GJCFCoreText – 图文混排。
  • AttributedLabel – 显示性能数量级 UILabel 的 AttributedLabel。无畏无惧、挑战权威。
  • FFLabel – 自动检测 URLs, @username, #topic# 等关链词(提供响应扩展)。实用的标签文本小组件。
  • TextFieldEffects – 标准的UITextField有些枯燥么?来认识一下TextFieldEffects吧!废话不多说,只要看几个例子,是啊,都是些简单的dropin控制器。甚至可以在storyboard中使用IBDesignables。
图表
  • PNChart – 国内开源作者,动态的图表。
  • swift-linechart – 功能完整、实用的折线图组件。使用方便,参数配置简单。是不可多得的优质组件–swift。
  • ios-charts – 一款优秀 Android 图表开源库 MPAndroidChart 的 Swift 语言实现版(支持 Objective-C 和 Swift 调用)。缺省提供的示例代码为 Objective-C。
  • TEAChart – xhacker/TEAChart 一个简洁的 iOS 图表库,支持柱状图、饼图以及日历等。
  • YOChartImageKit – 支持在watchOS上绘制图表,看它*近更新挺勤快的,可以关注一下。
  • RealtimeGradientText – Fun With CALayer Mask 刚好今天开源了一个有趣的项目 RealtimeGradientText,所以也好聊一下 CALayer 的 Mask,说明。
表相关
  • SWTableViewCell – 国内开源作者,带很多手势的表单元格。
  • MCSwipeTableViewCell – 带很多手势的表单元格。
  • TMQuiltView – 瀑布流。
  • WaterfallFlowDemo – 一个简单的UICollectionView瀑布流布局演示demo。
  • XLForm – 很多表格类的table,写法更高冷一点,推荐使用。
  • RETableViewManager – 可以十分方便地生成各种样式、各种功能的TableView。只要开发者能想到的列表效果或者功能,都可以利用这份代码迅速编写出来。比如,之前要实现一个填写各种资料的列表,可能需要很多代码,现在只需要几行代码就可以实现。
  • UIScrollSlidingPages – 允许添加多视图控件,并且可以横向滚动。有点类似于Groupon app。
  • HBHorizontalTableView – swift,TableView 横向滚动小示例(仿照 AppStore 应用展示)。
  • HorizontalScrollCell – HorizontalScrollCell是一款使用方便的水平方向可滚动的单元格,适用于UICollectionView中实现水片方向滚动视图。 。
  • SYJiugonggeTableView – tableView封装的九宫格。
  • UUChatTableView – UUChatTableView 气泡聊天界面,支持文本、图片以及音频的气泡聊天界面。源码推荐说明。
  • Chats – 聊天 UI 示例程序。此项目应该只为演示或学习之用,没有服务器 — swift。
  • Atlas-iOS – 快速在iOS里集成聊天功能,类似开源版本的环信。Layer家开源了一套聊天app界面的解决方案.看起来很赞,很多蛮复杂的东西直接都帮封好了。不得不说现在做app开发真是很简单,大部分时间搭积木就可以了。官方网站。
  • DLSlideView – DLSlideView对常见的顶部Tab页点击、滑动分页做了封装。它使用基于ViewController的container特性(而不是scrollview)来管理各个子页面,以支持无限分页,源码推荐说明。
  • VOVCManager – 页面管理器:1.跳转指定页面,只需要知道viewController的Class名,如果有storyboard,则需要指定storyboard名;2.无需添加基类;3.支持URLScheme跳转指定页面。
  • MBXPageViewController – 简洁快速的页面切换–MBXPageViewController,带有按钮控件的UIPageController,非常整洁、简单以及快速。该项目通过三种形式展示页面之间的切换,比如导航栏上的多个tab切换、页面左右两端箭头指示切换,以及使用分段控件。
  • PagerTab – UIScrollView实现滑动转换页面,类似网易云音乐iOS版的页面滑动切换效果。
  • GUITabPagerViewController – 多个tab滑动切换。
  • VOMetroLayoutDemo – Metro风格的UICollectionView, 目前只支持横向布局,仅在iPad上应用。
  • KYCellAnimation – 给UITableViewCell增加进入的动画。
  • COBezierTableView – swift,通过编辑 Bezier 曲线四点位置设置 TableView 内 Cell 及对应按扭位置。实验效果很赞。
  • RDVTabBarController – 一个TabBar组件,可以方便设置底部菜单的文字图片,点击效果,小红点提示等。
    • LxTabBarController – 改变了原生tabbar切换tab时的生硬效果,并加入滑动切换手势(有和界面上的其它手势发生冲突的风险,可根据具体项目予以关闭),swift版本。
  • 横向展示文本内容的自定义cell – 可以横向展示文本内容的自定义cell,根据文本无限滚动。
  • UITableView-FDTemplateLayoutCell – UITableView-FDTemplateLayoutCell 是一个方便缓存 UITableViewCell 的高度的框架。
  • ExpandingStackCells – 采用 UIStackView 实现表格单元格扩展内容显示示例及解决方案。
  • Sapporo – swift 单元格模型驱动的集合视图管理器组件。又一个超实用的“轮子”。
  • MDIHorizontalSectionTableViewController – 根据产品需求开源了一个交互项目,可以理解为横向Section的TableView,section和cell同时支持拖拽,后续安卓版本也会开源出来。
  • JZNavigationExtension – 多功能导航控制器,可以透明返回栏。
  • QuickRearrangeTableView – 基于 UITableView 的快速重排功能扩展子类。通过长按选定单元格然后滚动移动到指定位置。
  • uicollectionview-reordering – UICollectionViews的拖拽(拖动、移动)效果,实例教程.
  • DZNEmptyDataSet – DZNEmptyDataSet算是一个很标准的iOS内建方式,适合用来处理空的table view和collection view。会自动将collection view处理完善,并将用户消息以合适美观的方式显示出来。每个iOS项目都可以自动处理。
  • MGSwipeTableCell – 另一个常见于很多应用中的UI组件,苹果应该考虑在标准的iOS SDK中加入一些类似的内容。Swipeable表格cell是这个pod的*佳描述,也是*好的。
隐藏与显示
  • SlideTapBar – 滚动栏菜单,向上滚动时隐藏tabbar,向下滚动马上显示tabbar。
  • FoldingTabBar.iOS – 可折叠Tab Bar和Tab Bar Controller。
  • LTNavigationBar – LTNavigationBar为app导航栏添加动态着色效果,可自定义其背景色。Demo包含:1.变换背景色;2.滚动视图,导航栏和状态栏重叠。
  • BLKFlexibleHeightBar – 固定Header的效果库。
HUD与Toast
  • MBProgressHUD – *多人用的loading。
  • SVProgressHUD – SVProgressHUD的loading,如果你需要定制化的等待提示器,这个就是了(也许是*好的)。
  • ProgressHUD – ProgressHUD的loading,使用*简单。
  • MMProgressHUD – 设置HUD出现和消失的方式(包括上下、左右、淡入淡出、放大缩小等等),设置HUD的内容(可以在HUD中加入帧动画、动态图片等等),设置HUD出现时的底部覆盖层颜色,等等。总而言之,这是一份集大成的HUD代码。慢慢看视频吧,囊括了所有效果。
  • WSProgressHUD – 一个小巧精致的HUD,支持添加到自定义View上, 还有更多小细节.。
对话框
  • WCAlertView – 自定义的对话框。
  • IOS7AlertView – IOS7AlertView的对话框。
  • AMSmoothAlert – 动画效果不错,*多star,但不支持arm64。
  • DQAlertView – 扁平化的样式不错。
  • HHAlertView – 一个简易的alertview 有三种样式,有成功,失败,和警告三种样式,支持Delegate和block两种回调。
  • MJPopupViewController – 实现弹出视图的各种弹出和消失效果,包括淡入淡出(fade in,fade out),从屏幕上方飞进,下方飞出,从屏幕左方飞进,右方飞出等等效果,弹窗。
  • Menu – 项目中可能会用到的常用菜单,以后有时间会继续补充,弹窗。
  • EasyTipView – 弹出提示框类及演示示例。同样地,API 简单、易用。好“轮子”,弹窗。
  • kxmenu – kxmenu弹出菜单,点击视图上任意位置的按钮,会弹出一个菜单,并且有个小箭头指向点击的按钮,类似气泡视图。弹出的菜单位置会根据按钮的位置来进行调整。
  • QBPopupMenu – QBPopupMenu弹出菜单,实现类似 UIMenuItem 的弹出菜单按钮。点击按钮,会弹出一个菜单,上面可以排列多个按钮。纯代码实现,不需要任何图片。
  • STModalDemo – 弹出视图(通知,提示,选择,窗口)。
  • TAOverlay – TAOverlay可通过叠加层展示有用的信息,可自定义文本和背景色,添加阴影和模糊效果,以及更改字体大小或者用自定义图片替换页面上的icon。
  • UICustomActionSheet – 通过模糊背景来着重强调与菜单相关的元素–模糊效果 里面已经收藏。
  • ActionSheetPicker-3.0 – 该项目是此前热门项目ActionSheetPicker的新版本,快速复制了iOS 8上的下拉 UIPickerView/ActionSheet功能。
  • MJAlertView – 3D效果转场效果警示图–MJAlertView。
  • SwiftyDrop – 轻量、易用的小清新弹出列表及信息提示组件真心不错。
其他UI
  • AwesomeMenu – *多人用的Path菜单。
  • DCPathButton – Path,4.0的弹出菜单,呼出或者关闭菜单时,多个小图标会分别按照逆时针和顺时针的方向进行滚动。
  • SphereMenu – 利用UIDynamicAnimator的有趣的菜单,path类似。
  • KYGooeyMenu – KYGooeyMenu 是一个具有 Gooey Effects 带粘性的扇形菜单控件(卫星菜单、path)。
  • TwitterPaggingViewer – 多个Tableview,左右滑动。
  • CircularProgressControl – Circular Progress Control using CAShapeLayer ,环形进度控制条。
  • KDCircularProgress – KDCircularProgress是使用swift制作的色彩炫丽的进度条,可以加入多种颜色来控制进度条的渐变效果。
  • TextProgress – 自定义实现数字进度条:1、可以自定义数字(0-100),填充的比例为当前设置的数字,2、可以实现自定义填充颜色,上下部分都可以,3、可以自定义边界的颜色4、实现了水波动画,可以设置打开或关闭。
  • SDProgressView – 简便美观的进度指示器,此系列共有六种样式的进度指示器。
  • NVActivityIndicatorView – loading 进度条动画,有20-30多种,是在此DGActivityIndicatorView 基础上做得修改。
  • LoopProgressDemo – 环形渐变进度条。
  • 环形渐变进度条实现,
  • XLPagerTabStrip – 做的很棒的iOS下的PagerTabStrip。
  • RandomColorSwift – 一个自动生成好看的颜色的 Swift 库,RandomColorSwift。
  • HexColorService – 将16进制颜色字符串转成UIColor。
  • Rainbow – 旨在提高代码可读性及易用性的 UIColor 扩展,它使原先有限的预定义颜色(方法)选择,扩展至超过 1200 种。
  • UIColor-ChineseTraditionalColors – 中国传统颜色引用 UIColor 扩展。“UIColor.桃红(),UIColor.竹青() …”,共158种。
  • 类似美团的下拉菜单 – 类似美团的下拉菜单,源码推荐说明。
  • 类似美团的下拉选项 – 类似于美团、大众点评的下拉菜单选项,code4app代码,评论代码有瑕疵。
  • CRMediaPickerController – 一个简单易用的图片/视频选择器。1.可同时选择照片和视频。 2.挑选范围有Camera、Camera Roll、Photo Library以及*近拍摄的照片和视频。3.可自定义UIImagePickerController属性(Camera Overlay、Camera Device、Camera View Transform以及allowsEditing)。4.支持横屏和竖屏5.原生的iOS UI。,源码推荐说明。
  • MDCSwipeToChoose – MDCSwipeToChoose可简单地添加滑动手势来调用UIView,并使用该行为提供了一个组件以创建类似Tinder app的like或者dislike界面的轻扫。基于轻扫的方向,你可以决定执行什么样的行为,并且你可以自定义文本颜色和图片。该项目适用于教学用的抽认卡、图片查看器以及其他等。
  • iOS Material Design库 – 该项目借鉴于谷歌的Material Design guideline,用户可自定义背景色。
    • Material-Controls-For-iOS – Material Design风格的各种控件,非常完整全面。
  • ZMaterialDesignUIButton – Swift Material Design UIButton。
  • MediumScrollFullScreen – Medium的可扩展滚动页面,上下滚动时,全屏显示内容,并自然消隐上下菜单。由此项目感知,作者是一位很注重细节的开发者,他的另外几个菜单类项目也都不错,值得参考,比如:PathMenu, MediumMenu 等。
  • WZFlashButton – WZFlashButton,点击后button里面出现水波扩散效果。
  • Twinkle – 为字体加上钻石版闪耀的效果。使用Swift编写。
  • ios-multi-back-button – 可替换内置的UInavigationController返回按钮,长按左上角的返回按钮,实现多层级的快速返回。
  • ASDayPicker – 适用于iOS (iPhone)的日期选择器,类似于Calendar app的周视图。
  • today extension – 用纯代码构建一个Widget(today extension) 。
  • FSCalendar – 日历视图,带有微妙和平滑的滚动效果,可自定义外观–国人。
  • HSDatePickerViewController – 带有Dropbox Mailbox感觉的时间日期选择器。启动是背景被模糊化。界面也是主流的扁平化风格。
  • CFCityPickerVC – 城市选取控制器。
  • JTCalendar – iOS下优美的 Calendar 组件,做 GTD 类 App 必备。
  • Persei – 动画隐藏或显示顶部菜单支持库及示例项目。–swift
  • PDTSimpleCalendar – 是iOS*棒的日历组件了。你可以在各个方面对它进行定制,无论是运行逻辑还是外观方面。
  • Form – JSON 驱动的 Form表单系统,复杂的表单填写类 App *其需要(比如淘宝呢!)。
  • SwiftyFORM – swift 表单输入框架(亮点是表单验证规则引擎),是我见过地*易用的 Swift 表单组件。
  • SwiftSpinner – SwiftSpinner是使用swift制作的一款精致带感的指示器,并且连带有字体信息显示,模糊背景,半透明,扁平化等IOS8的效果。
  • AKPickerView-Swift – 一款小而美的 3D 效果选择器。
  • ImagePickerSheet – 图片或视频选择器(可多选)组件及其示例项目。
  • iOS-RatingBar – iOS-RatingBar swift版的评分控件,跟Android的RatingBar一样有两种模式,评分模式和只读模式’支持视图编辑,自定义星星数量,评分等级,另外还能支持非整数星,0.5颗星,0.1颗星,可以开启动画效果。
  • RKNotificationHub – 快速给 UIView 添加上炫酷的通知图标(Badge、红点、提示)。
  • WZLBadge – Badge,支持横竖屏支持iOS5~iOS8允许高度定制化,包括“红点”的背景颜色,文字(字体大小、颜色),位置等。说明.
  • BubbleTransition – 以气泡膨胀和缩小的动画效果来显示和移除 controller,Uber的就是这种取消操作的方式。
  • KYFloatingBubble – 类似iOS7中Game Center浮动气泡的效果。
  • DKNightVersion – DKNightVersion 是一个支持夜间模式切换的框架。
  • EasyUIControl – 一个可以简化界面ui的控件框架。
  • LxGridView-oc LxGridView-swift – 利用UICollectionView模仿iOS系统桌面图标的交互,作用如动图。
  • QQBtn – 仿QQ未读消息弹性按钮动画,达到和手机QQ未读信息一样的动画效果,效果基本实现。
  • GMStepper – swift 带动画效果、支持手势滑动操作的步进标签。
  • TZStackView – OS 9 UIStackView 功能模拟实现于 iOS 7/ iOS 8 内。
  • LayoutTrait – swift 一个小类库。 做iPad 多任务分屏 适配的同学可以看一下。
  • HACursor – HACursor,是一个对横向ScrollView中的视图进行管理的UI控件。只要几行代码就可以集成类似于网易新闻对主题页面进行排序,删除操作的功能。
  • ZTPageController – 模仿网易新闻和其他新闻样式做的一个菜单栏,栏中有各自的控制器,其中有4中展示样式’网易style’ ’搜狐style’ ’腾讯style1′ ’网易style2′ 。
  • Ruler – 尺子。
  • HUMSlider – HUMSlider是一款能够自动显示刻度记号的滑竿,滑动到某处,该处的刻度会自动上升,两边还能配置图像。支持代码或storyboard中实现。
  • JDSelectedDemo – 仿京东筛选菜单实现。
  • BTNavigationDropdownMenu – 下拉列表暨导航标题组件。简单、直接、易用 -swift。

动画

  • Core Animation笔记,基本的使用方法 – Core Animation笔记,基本的使用方法:1.基本动画,2.多步动画,3.沿路径的动画,4.时间函数,5.动画组。
  • awesome-ios-animation – iOS Animation 主流炫酷动画框架(特效)收集整理 收集整理了下iOS平台下比较主流炫酷的几款动画框架。
侧滑与右滑返回手势
  • SloppySwiper – iOS系统自带的UINavigationController要7.0才支持,但不过该手势只能从屏幕左侧边缘识别,如果要扩大到整个屏幕范围怎么办?配合一个SloppySwiper无需代码就可以轻松实现。此库支持iOS5.0以上版本(另外:Nav的title滑动不明显,本人写了2个类似的控件),SloppySwiper-demo :代码方式与storyboard方式。
  • SCNavigation – UINavigation可以右滑返回,隐藏UINavigationBar。
  • UINavigationController-YRBackGesture – 支持右滑返回手势,标题栏不动。
  • GHSidebarNav – 现在比较流行使用侧开(侧滑)菜单设计。试了不少控件,感觉GHSidebarNav*成熟,尤其对纯代码创建的界面兼容性*好。在Storyboard中使用GHSidebarNav侧开菜单控件。
  • iOS-Slide-Menu – 能够类似Facebook和Path那样弹出左右边栏侧滑菜单,还支持手势。多种可以自定义的属性 (非常不错)。
  • ECSlidingViewController – 侧滑菜单。
  • JASidePanels – 侧滑菜单,有左右菜单,有pop功能,支持手势侧滑,本人使用中:简单。
  • animated-tab-bar – 让 Tabbar items能显示萌萌的动画。
  • tabbar图标动画 – tabbar上图标的动画实现,源码推荐说明。
  • SideMenu – swift实现,一款带动画效果可定制 Slide Menu,可以学习其动画实现思路。P.S. 对于Hamburger式菜单,虽然很常用,不过,苹果并不鼓励使用,甚至有开发小组对其弊病用自家上线应用前后数据对比进行了抨击。
  • RESideMenu – 侧开菜单,qq类似。
  • JHMenuTableViewDemo – 仿网易邮箱列表侧滑菜单。
  • SlideMenuView – 炫酷侧滑菜单布局框架,Android版本的一致实现。
  • QQConfiguration – swift,QQ-iPhone端框架,左侧菜单栏拖动手势。
  • KGFloatingDrawer – 侧滑菜单,qq类似,KyleGoddard/KGFloatingDrawer:一款适合于大屏手机或平板的浮动抽屉式导航界面组件。效果很赞- 侧开菜单,qq类似(与RESideMenu类似)。
  • AIFlatSwitch – 一款带平滑过渡动画的 Switch 组件类,类相同风格的 Menu/BackHamburgerButton,类似相同风格的 Menu/Closehamburger-button.
  • JHChainableAnimations – 在应用中采用链式写出酷炫的动画效果, 使代码更加清晰易读,利用block实现的链式编程。
  • WXGSlideMenuDemo – 个简单实现侧拉(侧滑)菜单的小demo,供初学者共同学习、练习使用。
  • PKRevealController – PKRevealController是一个可以滑动的侧边栏菜单(可向左、向右或者同时向两侧),只需手指轻轻一点(或者按一下按钮,但是这样滑动时不够炫酷),这类控制的其他库,而PKRevealController是*棒的。安装简便,高度定制且对手势识别良好。可以当做一个标准控件用在iOS SDK中。
  • SwiftPages – 高可定制类似 Instagram 视图滑动切换功能类库。API 简单、易用。
  • FlipBoardNavigationController – FlipBoardNavigationController。
  • MMDrawerController – *多人用的一个有关侧边“抽屉”导航框架,里面还有很多你意想不到的交互效果,侧滑。
  • UIWebView翻页返回效果 – UIWebView翻页返回效果(变通方法)。
gif动画
  • UIImageView-PlayGIF – UIImageView-PlayGIF。
  • YLGIFImage – YLGIFImage。
  • YLGIFImage-Swift – YLGIFImage-Swift。
其他动画
  • popping – popping是一个POP 使用实例工程
  • SinaMenuView – 用POP动画引擎写的Sina微博的Menu菜单。
  • MMTweenAnimation – facebook POP的自定义动画扩展(基于POPCustomAnimation) 提供10种函数式动画。
  • ZQLRotateMenu – 这是一个旋转视图的选择器。
  • CoolLoadAniamtion – 一个简单但是效果不错的loading动画。
  • SequenRotateAnimation – 一个简单的loading次序动画。
  • SYAppStart – App启动插画的自定义过度。
  • VJDeviceSpecificMedia – 如何根据设备选择不同尺寸的图片 可以通过设置不同尺寸设备的LaunchImage,来使得App适配这些设备,要是在不同不同尺寸设备上使用不同大小的图片,则需要在代码中一一判断,然后加载。
  • RMParallax – RMParallax是一个app启动页引导开源项目,除了细微的翻页视差效果,描述文本的过渡也非常美观(版本新特性)。
  • ADo_GuideView – 转动的用户引导页(模仿网易bobo) 因为没有从app包里抓到@3x的图片,建议在iPhone5模拟器运行,保证效果~ (版本新特性)。
    • CoreNewFeatureVC – 版本新特性(引导页),1.封装并简化了版本新特性启动视图!2.添加了版本的本地缓存功能,3.集成简单,使用方便,没有耦合度,4.支持block回调。
  • Spring – Spring是一个Swift编写的开源库,可简化Swift编写的iOS动画。支持shake、pop、morph、squeeze、wobble、swing、flipX、flipY、fall、squeezeLeft、squeezeRight以及squeezeDown等多种动画形式,用 IBDesignable 让使用者可以在 Xcode 中快速设置动画效果。
  • KYBezierBounceView – 手势控制贝塞尔曲线,取消手势贝塞尔曲线会有反弹效果。
  • cadisplaylinkanduibezierpath – CADisplayLink结合UIBezierPath的神奇妙用。
  • KYCuteView – 实现类似QQ消息拖拽消失的交互+GameCenter的浮动小球效果,分析。
  • KYWaterWaveView – 一个内置波浪动画的UIView,里面有鱼跳跃水溅起来的效果。
  • KYPingTransition – 实现圆圈放大放小的转场动画,可以根据自己的需要使用Paper中的弹性效果,有Material风格。
  • KYNewtonCradleAnimiation – 牛顿摆动画。
  • LayerPlayer – 一款全面展示核心动画 API 示例项目(上架应用)。包括 CALayer, CAScrollLayer, CATextLayer, AVPlayerLayer, CAGradientLayer, CAReplicatorLayer, CATiledLayer, CAShapeLayer, CAEAGLLayer, CATransformLayer, CAEmitterLayer 等使用的互动演示。
  • JGTransitionCollectionView – swift,基于集合视图扩展实现完成自动布局及单元项 Flip式动画效果(效果很赞)。组件使用方便、自然(只需设置集合视图数据源的标准方式即可)。
  • KYShareMenu – 带弹性动画的分享菜单。
  • Context-Menu.iOS – 可以为app的菜单添加漂亮的动画内容,可自定义icon,并可根据自己的喜好设计单元格和布局。
  • DeformationButton – 一个简单的变换形状动画按钮。
  • UnReadBubbleView – UnReadBubbleView是一个能够拖拽并拉长的气泡视图。拖拽到一定的长度会消失,可以通过系数设置来控制拖拽的长度。气泡也支持多种属性设置。
  • PPDragDropBadgeView – 实现了类似于QQ 5.0 水滴拖拽效果. 支持iOS 5.0+ ARC,气泡能够带有数字标识,同时支持消失block方法。消失时还带有消失效果动画。
  • GiftCard-Implementation – 购买的炫酷动画。
  • iCarousel – iCarousel是一个类,它继承于UIView。用于简化实现各种类型的旋转木马(分页滚动视图),无限轮播 ,iOS开发之多图片无缝滚动组件封装与使用。
  • KIPageView – 无限循环PageView,横向TableView,无限轮播。
  • HotGirls – 卡片动画。
  • tispr-card-stack – swift 卡片风格动画切换组件及完整交互示例。
  • ZLSwipeableViewSwift – swift 卡片堆叠效果的实现(ZLSwipeableView)】可实现类似Tinder和Potluck应用程序的卡片堆叠效果,该项目基于ZLSwipeableView objective-c实现。1.自定义动画。2.自定义滑动切换。3.自定义方向。4.撤销。
  • Koloda – 基于卡片的 Tinder-style 动画效果示例。精细*人。更赞的是额外附了详细开发教程 How We Built Tinder-Like Koloda Animation in Swift 网页链接 。Yalantis 出品动画程序款款精品。
  • QQPersonalInfoTransition – 仿照QQ的转场。
  • KYAnimatedPageControl – 除了滚动视图时PageControl会以动画的形式一起移动,点击目标页还可快速定位。支持两种样式:粘性小球和旋转方块。
  • KDIntroView – swift 动态介绍视图框架及演示。另外两个相似的类库是 RazzleDazzle和 Presentation,择需使用。
  • RazzleDazzle – 【IFTTT开源Swift编写的帧动画框架–RazzleDazzle】RazzleDazzle 是IFTTT开源的一个iOS帧动画框架,非常适用于APP初次使用时的介绍和引导信息。JazzHands是UIKit一个简单的关键帧基础动画框架,可通过手势、scrollview、KVO等控制动画,被IFTTT应用在IFTTT for iPhone上。
  • Presentation – 一个类似RazzleDazzle的框架。
  • FillableLoaders – 基于 CGPaths 可定制个性化填空式装载类库。附水波上涨式示例。
  • SXWaveAnimate – 实现非常美观的灌水动画。
  • LSPaomaView – 可循环滚动的较长文字,跑马灯,效果很好,一句话集成。
  • SIFloatingCollection_Swift – 可定制的 Apple Music 风格浮动形状动画组件及演示。
  • Cheetah – 易用、高可读链式动画类库。另一个类似类库是 DKChainableAnimationKit。
  • CKWaveCollectionViewTransition – swift, UICollectionViewController之间切换的动画。
  • TKSubmitTransition – 基于 UIButton 的登录加载、返回按钮转场动画组件及示例。

网络相关

网络连接
  • AFNetworking – ASI不升级以后,*多人用的网络连接开源库,iOS网络编程之AFNetworking使用,iOS开发下载文件速度计算。
  • Alamofire – Alamofire是AFNetworking的作者mattt新写的网络请求的swift库。
  • YTKNetwork – 是基于 AFNetworking 封装的 iOS网络库,提供了更高层次的网络访问抽象。相比AFNetworking,YTKNetwork提供了以下更高级的功能:按时间或版本号缓存网络请求内容、检查返回 JSON 内容的合法性、文件的断点续传、批量的网络请求发送、filter和插件机制等。
  • LxFTPRequest – 支持获取FTP服务器资源列表,下载/上传文件,创建/销毁ftp服务器文件/目录,以及下载断点续传,下载/上传进度,自动判断地址格式合法性跟踪等功能!国人开发,QQ:349124555。
  • HSDownloadManager – HSDownloadManager,下载音乐、视频、图片各种资源,支持多任务、断点下载。
  • MutableUploadDemo – 模拟需求:图文混编,要求用户选择图片后就上传,可选择多图,并行上传,用户确定提交后后台执行,必须全部图片上传完才能提交文字。
  • WTRequestCenter – 方便缓存的请求库,提供了方便的HTTP请求方法,传入请求url和参数,返回成功和失败的回调。 UIKit扩展提供了许多不错的方法,快速缓存图片,图片查看,缩放功能, 颜色创建,设备UUID,网页缓存,数据缓存等功能。 无需任何import和配置,目前实现了基础需求。
  • MMWormhole – Message passing between iOS apps and extensions 2个iOS设备之间通信。
  • socket.io-client-swift – WebSockect 客户端类库。开放的通讯协议,有利于构建强大地跨平台应用。
  • Transporter – swift, 短小、精悍、易用的多文件(并发或顺序)上传和下载传输库。还支持后台运行、传输进程跟踪、暂停/续传/取消/重试控制等功能。
  • STNetTaskQueue – STNetTaskQueue Objective-C 可扩展网络请求管理库。
  • CocoaAsyncSocket – 在iOS开发中使用socket,一般都是用第三方库AsyncSocket,不得不承认这个库确实很强大,使用教程。
  • GCDAsyncSocket – GCDAsyncSocket , 不错的Demo。
  • Just – 小而美的 HTTP 类。功能简单、直接、完整且健壮性高– swift。
  • Future – 基于微框架设计思想的异步执行及结果响应类,代码即简单又干净– swift。
  • MZDownloadManager – 下载管理。
  • DVR – 针对网络请求的测试框架,超实用的工具。且支持 iOS, OSX, watchOS 全平台。
  • HFDownLoad – iOS开发网络篇之文件下载、大文件下载、断点下载:NSData方式、NSURLConnection方式、NSURLSession下载方式 下载方式具体的思路、区别见Blog 。
图像获取
  • SDWebImage – SDWebImage 网络图片获取及缓存处理。
  • Kingfisher – 纯 Swift 实现的类 SDWebImage 库,实现了异步下载和缓存图片。
  • KFSwiftImageLoader – Swift,一个图像缓存加载库。
  • FastImageCache – FastImageCache 网络图片获取及缓存处理,iOS图片加载速度*限优化—FastImageCache解析。
  • EGOCache – 十分知名的第三方缓存类库,可以缓存NSString、UIImage、NSImage以及NSData。除此,如果还可以缓存任何一个实现了接口的对象。所有缓存的数据都可以自定义过期的时间,默认是1天。EGOCache 支持多线程(thread-safe),UITableView加载多张照片导致内存上涨的问题。
网络聊天
  • XMPPFramework – XMPPFramework openfire聊天。
  • SXTheQQ – 用xmppFramework框架编写QQ程序,主要为了练习通讯的一些原理,界面比较渣 必须要先在本地配置好环境才可以运行。
  • 环信 – 给开发者更稳定IM云功能。8200万用户考验,好用!(暂无及时语音、视频通话)
  • 融云 – 即时通讯云服务提供商。(暂无及时语音、视频通话)
  • 容联云通讯 – 提供基于互联网通话,视频会议,呼叫中心/IVR,IM等通讯服务。
  • chatsecure – 基于XMPP的iphone、android加密式聊天软件, chatsecure官网 。 iOS代码1,iOS代码2,iOS中文版。
  • MessageDisplayKit – 仿微信聊天,参考JSQMessagesViewController。(国人写)
  • JSQMessagesViewController – 聊天 。
  • SunFlower – 环信聊天demo,比较多功能 。
  • BlueTalk蓝牙聊天 – 以MultipeerConnectivity为基础, 实现了简单的蓝牙聊天。
网络测试
  • Reachability – 苹果提供过一个Reachability类,用于检测网络状态。但是该类由于年代久远,并不支持ARC。该项目旨在提供一个苹果的Reachability类的替代品,支持ARC和block的使用方式。iOS网络监测如何区分2、3、4G
  • SimpleCarrie – 简单的运营商信息获取!。
  • NetReachability – swift2.0 简单的方法检查网络连接的连通性,提供通知中心集成接口。
WebView
  • MGTemplateEngine – MGTemplateEngine比较象 PHP 中的 Smarty、FreeMarker 和 Django的模版引擎,是一个轻量级的引擎,简单好用。只要设置很多不同的HMTL模版,就能轻松的实现一个View多种内容格式的显示,对于不熟悉HTML或者减轻 工作量而言,把这些工作让设计分担一下还是很好的,也比较容易实现设计想要的效果。
  • NJKWebViewProgress – 一个 UIWebView 的进度条接口库,UIWebView 本身是不提供进度条的。
  • GTMNSString-HTML – 谷歌开源的用于过滤HTML标签。

Model

  • JSONKit – JSONKit库是非常简单易用而且效率又比较高的,重要的JSONKit适用于ios 5.0以下的版本,使用JSONKit库来解析json文件,只需要下载JSONKit.h 和JSONKit.m添加到工程中;然后加入libz.dylib即可。
  • JSONModel – 解析服务器返回的Json数据的库,JSONModel源码解析一。
  • Mantle – Mantle主要用来将JSON数据模型化为OC对象, 大系统中使用。为什么选择Mantle。
  • RFJModel – RFJModel是一个IOS类库,可以将JSON字典自动装填到OBJC对象。相比JSONModel有一些非常好的特性,使用上也比较简单。
  • XMLDictionary – ios与mac os平台下xml与NSDictionary相互转化开源类库。
  • MJExtension – 用于json转model进行使用,转换效率很高,使用也比较简单,只要前后台约定好,json直接就转成了model。
  • CFRuntime – “Swift 版的 MJExtension,运行时、反射与一键字典模型互转”。
  • DDModel – 快速搭建项目Model层,支持ORM映射关系,能从JSON/XML直接实例一个Model对象。支持SQLite本地数据持久化,封装了HTTP, 减少HTTP代码与UIViewController的代码耦合,支持Cache;类似RESTKit、Mantle的功能;使用该类库以后简化了网络层的开发工作,把更多的精力放在UI上面;目前只支持GET/POST方法的请求。使用到的第三方库有:1.SQLitePersistentObject; 2.JTObjectMapping; 3.AFNetworking; 4.XMLDictionary;
  • protobuf-swift – Protocol Buffers 的 Swift 语言实现库。P.S. Protocol Buffers 是 Google 开源项目,主要功能是实现直接序列化结构化的对象数据,方便跨平台快速传递,开发者也可以直接修改 protobuf 中的数据。相比 XML 和 JSON,protobuf 解析更快,存储更小。
  • JSONCodable – 基于 Swift 2.0 新特性(Protocol Extensions and Error Handling)的JSON 解析类。
  • SwiftyJSON – 使Swift的JSON解析变得简单。

其他

  • DateTimeKit – 一个超赞的时间处理的库,Joda-Time ! 他能帮你轻松处理时区,处理时间加减,计算到期时间等等场景下的问题。
  • SwiftDate – 特别完整、强大的日期时间操作管理类库。它几乎涵盖了已知开源日期类库所有优秀特性。 他能帮你轻松处理时区,处理时间加减,计算到期时间等等场景下的问题。
  • iOS私有API – 私有API,绿色 == public,红色 == private,蓝色 == dylib。
  • iOS源代码 – iOS源代码。
  • libfacedetection – C++ 人脸识别 包含正面和多视角人脸检测两个算法.优点:速度快(OpenCV haar+adaboost的2-3倍), 准确度高 (FDDB非公开类评测排名第二),能估计人脸角度。
  • Slidden – 一个老外开源的开发自定义键盘的库,利用这个开源库,可以方便的配置键位、颜色以及键位对应的图片。
  • TPKeyboardAvoiding – 用户键盘弹出自动计算高度,进行屏幕滚动操作。
  • CDPMonitorKeyboard – CDPMonitorKeyboard封装,可以解决输入视图(例如textField,textView等)被键盘覆盖问题,并可设置高于键盘多少。
  • 自动监听键盘高度 – 自动监听键盘高度,初始界面,输入框在屏幕*下方,当键盘出现时,输入框随即移动到键盘上方。
  • SYKeyboardTextField – SYKeyboardTextField 是一个轻巧,简单,非侵入式的键盘附随输入框! 采用Swift编写。
  • BlocksKit – block框架,为 OC 常用类提供了强大的 Block 语法支持,使得编写 OC 代码变得舒适、快速、优雅。
  • KVOController – 在项目中有使用 KVO ,那么 KVOController *对是个好选择。它是 facebook 开源的一个 KVO 增强框架。
  • appirater – 用于提醒用户给你的 APP 打分的工具。
  • MotionKitr – 为核心运动框架(The Core Motion framework)提供友好的类库封装,以更方便使用三轴陀螺仪和加速感应器特性。
  • Review Monitor – *时间自动推送 Apple Store 的用户评论到你的邮件箱或者 Slack,*时间跟进用户反馈,打造优秀 App 必备工具!类似的有:App annie 的类似功能。
  • WBWebViewConsole – 类似微博iPhone客户端的 “调试选项” 吗?把其中的 “内置浏览器网页调试” 开源在 Github 上了。
  • ios-good-practices – ios-good-practices iOS 开发*佳实践。
  • iOS开发*佳实践 – iOS 开发*佳实践 — 中文。
  • TodayExtensionSharingDefaults – TodayExtensionSharingDefaults是一个iOS 8 Today扩展示例,可以使用NSUserDefaults与其containing app分享数据。
  • QRCodeReader.swift – QRCodeReader.swift一款简单的 QR 二维码阅读组件及示例,提供前后相机切换功能。
  • QRCatcher – 一个简洁美观的二维码扫描应用, iOS学习:AVFoundation 视频流处理–二维码扫描。
  • Parsimmon – swift,小而美的语言学类库封装工具包。提供分词、标记词性、词形归并、朴素贝页斯分类、决策树等自然语言分析小工具。P.S. 英语分词效果好于中文,感兴趣的同学可以针对中文做一些优化开发。参考译文 NSHipster – NSLinguistic​Tagger。
  • Password-keyboard – 随机变换数字位置的密码键盘。 模仿银行类应用在付款时输入的随机密码键盘。
  • MKMapView-Extension – 这是关于 MKMapView 写的一个基于swift的扩展,可以扩展 MKMapView 的相关功能,减少复用代码量。
  • SemverKit – 针对符合『语义化版本规范 2.0.0』版本号的解析、比较运算类库。不仅支持 Major, Minor, Patch,还支持 Alpha 和 Beta 预发布版本,以及相应地递增运算扩展。
  • SwiftValidator – 基于规则的输入验证类库。项目良好的面向对象设计思想,使规则的扩展及自定义非常方便。更专业的规则引擎(甚至是基于自然语言的规则配置)解决方案,比如:开源的 Drools,商用的 ILOG 等。
  • Tesseract-OCR-iOS – 有关OCR文字识别项目。
  • Screenotate – 支持 OCR 文字识别的载屏笔记 Mac 完整应用。
  • iOS-Categories – 收集了许多有助于开发的iOS扩展,各种category。
  • Olla4iOS – 过去积累的一些方便复用的类和方法,还在整理中。
  • DKNightVersion – 用*快的方式给你的应用加上夜间和白天的切换效果。
  • TouchVisualizer – 实用的多点触摸可视化组件。扩展并作用于 UIWindows,结构上提供了简单地针对触摸显示定制,比如触摸点的颜色。
  • RegexKitLite – 用来处理正则表达式。
  • XcodeServerSDK – 非官方 Xcode Server SDK 封装库。 P.S. 该 SDK 分离自之前推荐的由该作者开发的自动测试框架 Buildasaur。
  • BFKit-Swift – BFKit-Swift 这套工具库可以提高应用开发效率。
  • CKSIncrementalStore – 基于 CloudKit 服务器实现多终端数据同步。
  • SwiftSequence – 简洁、灵活、多变的操作 SequenceType 的类库(基于微框架(μframework)设计思想)。
  • IDNFeedParser – 一个简单易用的Rss解析库。
  • CoreUmeng – 简单:友盟分享封装。
  • openshare – 不用官方SDK,利用社交软件移动客户端(微信/QQ/微博/人人/支付宝)分享/登录/支付。
  • Swifternalization – 一套实用的本地化工具库。使用教程及 API 文档完整。值得收入项目的“轮子”。
  • apous – 一款有趣的 Swift 应用 - 让 Swift 成为脚本语言。
  • Mirror – 通过反射(Refection)实现镜像对象封装库。从而可以更轻松获取(或输出)对象属性名、类型及值变量。
  • Proposer – Proposer 用单个 API 处理 iOS 上的权限请求,以便使用前确认可访问“相册”、“相机”、“麦克风”、“通讯录”或“用户位置”。
  • PermissionScope – 用这个库可以在询问用户前,就告知用户所需的系统权限,为用户带来更好的体验。接受度更高—>更多活跃用户->更高的留存率->数据更好->下载率更高。
  • LocationManager – CoreLocation使用起来还是比较麻烦的,需要授权,判断系统版本等等,所以推荐使用第三方框架LocationManager,使用Block,十分简单!iOS-CoreLocation:无论你在哪里,我都要找到你!。
  • pangu.objective-c – 有多种语言实现版本~ Pangu.Objective-C:格式化中英文之间的空格(OC)。
  • objection – 一个轻量级的依赖注入框架Objection。
  • ControlOrientation – 如何用代码控制以不同屏幕方向打开新页面【iOS】, 使用说明。
  • iRate – 问卷调查。
  • GameCenterManager – 在iOS上管理GameCenter vanilla并不算难,但是有了这个库会更简单也更快。好上加好不是更好么。
  • SlackTextViewController – 用作*佳、定制的文本输入控制时,自适应文本区域,手势识别、自动填充、多媒体合并,快速drop-in解决方案。
  • IAPHelper – 应用内付费给我们提供了很多样本代码,而这个库丢掉了那些代码,将金钱交易相关的大多通用任务做了简单的封装。
  • TAPromotee – 交叉推广应用是你可以免费实现的*佳市场推广策略之一。使用这个库做起来非常简单,不用都不可能——将TAPromotee加入你的podfile中,免费配置与享受更多下载吧。
  • DownloadFontOnline – 实现了在线下载一些字体的功能,不用在工程中导入字体库,下载的字体也不会保存在你的应用中,所以可以放心使用。修复了一下崩溃的bug。
  • STClock – 仿锤子时钟。
  • GitUp – GitUp是一个可视化的Git客户端,能够实时的进行编辑、合并、回滚等多种操作,更多功能,请下载体验。
  • 获取联系人信息,通讯录 – 获取联系人信息,通讯录。
  • Universal-Jump-ViewController – 根据规则跳转到指定的界面(runtime实用篇一)。

数据库

  • FMDB – sqlite的工具, 多线程FMDatabaseQueue实例,FMDB数据库的使用演示和封装工具类。
  • GXDatabaseUtils – 在FMDB基础上的工具。
  • realm-cocoa – Realm是一个真正为移动设备打造的数据库,同时支持Objective-C和Swfit。Realm宣称其相比Sqlite,在移动设备上有着更好的性能表现,官方中文。
  • Breeze – 用Swift写的一个轻量级的CoreData管理工具,并且还支持iCloud 。
  • AlecrimCoreData – Swift,更容易地访问 CoreData 对象封装类库。除了 CRUD,还提供指针定位,强大的排序、筛选,异步数据获取,以及独立线程后台存取数据。
  • CoreStore – Core Data 管理类库。 其中事务管理及查询是其比较大的亮点,整套 API 功能完整。
  • MagicRecord
  • MagicalRecord – MagicalRecord就像是给Core Data提供了一层外包装,隐藏掉所有不相关的东西。 其中事务管理及查询是其比较大的亮点,整套 API 功能完整。
  • Presentation – 重量级好项目 Presentation,它可以方便你制作定制的动画式教程、Release Notes、个性化演讲稿等。
  • CoreValue – Swift 2 版 Core Data 封装库。相比另外两个 SwiftRecord和 CoreStore更轻量。
  • SQLCipher – SQLCipher使用256-bit AES加密,SQLCipher分为收费版本和免费版本。官方教程,加密你的SQLite – 各种sqlite数据库加密介绍。 SQLCipherDemo下载 。

缓存处理

  • YTKKeyValueStore – Key-Value存储工具类,说明。
  • TMCache – TMCache 是 Tumblr 开源的一个基于 key/value 的数据缓存类库,可以用于缓存一些临时数据或者需要频繁加载的数据,比如某些下载的数据或者一些临时处理结果。
  • JLKeychain – 快捷使用keychain存储数据的类,使keychain像NSUserDefaults一样工作。
  • sskeychain – SSKeyChains对苹果安全框架API进行了简单封装,支持对存储在钥匙串中密码、账户进行访问,包括读取、删除和设置。
  • KeychainAccess – 管理Keychain接入的小助手。

PDF

  • Reader – Reader可提供类似iBooks的文档导航,支持屏幕旋转和所有方向,并通过密码保护加密PDF文件,支持PDF链接和旋转页面。

图像浏览及处理

  • FLAnimatedImage – gif播放处理的工具。
  • CLImageEditor – 超强的图片编辑库,快速帮你实现旋转,防缩,滤镜等等一系列麻烦的事情。
  • ios-image-filters – 图像滤镜,库比较旧了,很容易崩溃。
  • XBImageFilters – 图像滤镜,。
  • VIPhotoView – 用于展示图片的工具类,因为是个 View,所以你可以放在任何地方显示。支持旋转,双击指定位置放大等。
  • MWPhotoBrowser – 一个非常不错的照片浏览器,在github的star接近3000个,解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题。
  • core-image-explorer – Core Image 滤镜处理图片– swift ,Core Image 介绍。
  • CoreImageShop – CoreImageShop图片滤镜处理– Mac app that let you create a complete Core Image Filter usable on iOS using SCRecorder。
  • GPUImage – 处理图片效果。
  • RSKImageCropper – 适用于iOS的图片裁剪器,类似Contacts app,可上下左右移动图片选取*合适的区域。
  • WZRecyclePhotoStackView – 删除照片交互–WZRecyclePhotoStackView,就是模拟生活中是删除或保留犹豫不决的情形而产生的。 在上滑,下滑的部分,借鉴了TinderSimpleSwipeCards。
  • TimingFunctionEditor – TimingFunctionEditor用swift编写, 贝塞尔曲线编辑器,编辑后可以预览或拷贝代码片段直接使用。P.S. 该项目采用更简单的依赖管理器 Carthage ,而非常用的 CocoaPods。Carthage介绍中文。
  • AAFaceDetection – AAFaceDetection–swift,简单、实用的面部识别封装库。虽然该技术从 iOS 5 发展,不过真正有趣的应用还不多。。
  • PhotoTweaks – 这个库挺赞的,正好是对图像操作的。
  • Concorde – swift, Concorde, 一个可用于下载和解码渐进式 JPEG 的库, 可用来改善应用的用户体验。
  • ZoomTransition – swift, 通过手势操控图片的放大、缩小、旋转等自由变化效果的组件及示例。
  • AFImageHelper – swift,一套针对 UIImage 和 UIImageView 的实用扩展库,功能包含填色和渐变、裁剪、缩放以及具有缓存机制的在线图片获取。
  • PinterestSwift – swift,Pinterest 风格图片缩放、切换示例。
  • KYElegantPhotoGallery – 一个优雅的图片浏览库。
  • SDCycleScrollView – 无限循环自动图片轮播器(一步设置即可使用)。
  • SDPhotoBrowser – 仿新浪动感图片浏览器,非常简单易用的图片浏览器,模仿微博图片浏览器动感效果,综合了图片展示和存储等多项功能。
  • HZPhotoBrowser – 一个类似于新浪微博图片浏览器的框架(支持显示和隐藏动画;支持双击缩放,手势放大缩小;支持图片存储;支持网络加载gif图片,长图滚动浏览;支持横竖屏显示)。
  • PhotoStackView-Swift – PhotoStackView——照片叠放视图,使用说明。
  • MarkingMenu – 基于手势、类似 Autodesk Maya 风格标记菜单及图片渲染。
  • SXPhotoShow – UICollectionViewFlowLayout流水布局 是当下collectionView中常用且普通的布局方式。本代码也写了三种好看的布局,其中LineLayout和流水布局有很大的相同点就直接继承UICollectionViewFlowLayout,然后StackLayout,CircleLayout这两种都是直接继承自*原始的UICollectionViewLayout 布局方案。
  • PictureWatermark – 主要实现了给图片加文字以及图片水印的功能,已封装成了UIImage的类别,方便使用。
  • CocoaPicker – 仿 QQ 图片选择器(OC)。
  • 自定义宽高比的相册框 拍照 – 取出照片时 弹出自定义view。在这个自定义view上创建一个需要的相框大小的view层 把取出的图片赋值给UIImageView按缩放添加到这个层上。对uiimageView添加捏合、移动 手势。添加按钮 选取,*后根据位移和缩放比例 裁剪image。

摄像照相视频音频处理

  • SCRecorder – SCRecorder 短视频录制。
  • VideoPushDemo – 视频剪辑 视频特效制作1 视频特效制作2。
  • LLSimpleCamera – A simple, customizable camera control for iOS, 摄像头。
  • EZAudio – EZAudio 是一个 iOS 和 OSX 上简单易用的音频框架,根据音量实时显示波形图,基于Core Audio,适合实时低延迟音频处理,非常直观。中文介绍,官网。
  • ffmpeg – ffmpeg官网,FFmpeg在iOS上完美编译。
  • VCL – VCL官网。
  • kxmovie – 使用ffmpeg的影片播放器,修改说明, 修改代码。
  • ijkplayer – B站开源的视频播放器,支持Android和iOS。
  • StreamingKit – StreamingKit流媒体音乐播放器。
  • FreeStreamer – FreeStreamer流媒体音乐播放器,cpu占用非常小。
  • DOUAudioStreamer – DOUAudioStreamer豆瓣的音乐流媒体播放器。
  • fmpro – 电台播放器,支持锁屏歌词,支持基本播放流程,歌词展示,后台锁屏播放和控制以及锁屏后封面+歌词,fmpro_R 。
  • IPDFCameraViewController – 支持相机定焦拍摄、滤镜、闪光、实时边框检测以及透视矫正功能,并有简单易用的API。
  • SCRecorder – 酷似 Instagram/Vine 的音频/视频摄像记录器,以 Objective-C 为基础的过滤器框架。 你可以做很多如下的操作:记录多个视频录像片段。删除任何你不想要的记录段。可以使用任何视频播放器播放片段。保存的记录可以在序列化的 NSDictionary 中使用。(在 NSUserDefaults 的中操作)添加使用 Core Image 的视频滤波器。可自由选择你需要的 parameters 合并和导出视频。
  • Cool-iOS-Camera – Cool-iOS-Camera。
  • FastttCamera – FastttCamera 快速照相。
  • ICGVideoTrimmer – ICGVideoTrimmer提供提供视频剪切的视图(类似系统相册中浏览视频时顶部那个条状视图)。左右两个边界选择器还能够自定义。
  • IOS录音和播放功能demo – 比较完整的ios录音和播放功能的实现。
  • CameraManager – 相机管理封装类库。看着*好用的样子—-swift。
  • MCAudioInputQueue – 简易录音类,基于AudioQueue的。
  • DraggableYoutubeFloatingVideo – 展示像类似Youtube移动应用的那种浏览视频的效果,当点击某视频时能够从右下方弹出一个界面,并且该界面能够通过手势,再次收缩在右下方并继续播放。这是通过AutoLayout设计实现。
  • amr – 做即时通讯的音频处理,录音文件是m4a,便于web端的音频播放。
  • FSVoiceBubble – 一个轻量级播放录音音频的气泡:1.支持短时间的音频播放(支持网络音频);2.播放时的声波动画;3.自定义包括声波的颜色,气泡的背景等。
  • KRVideoPlayer – 类似Weico的播放器,支持竖屏模式下全屏播放。
  • VideoBeautify – 功能酷似美拍,秒拍等应用的源码:对视频进行各种美化处理,采用主题形式进行分类,内含各种滤镜,动画特效和音效等。

响应式框架

  • ReactiveCocoa – ReactiveCocoa 受函数响应式编程激发。不同于使用可变的变量替换和就地修改,RAC提供Signals来捕获当前值和将来值( 使用介绍 ),不错的例子,入门好教程:ReactiveCocoa入门教程:*部分 。Reactive Cocoa 3.0 在 MVVM 中的应用 。
  • ReactiveAnimation – ReactiveCocoa 推出了一个叫 ReactiveAnimation 的子项目,直接用完全用 Swift 来实现了。
  • BeeFramework – 与ReactiveCocoa类似,BeeFramework用户指南 v1.0。
  • Objective-Chain – Objective-Chain是一个面向对象的响应式框架,作者表示该框架吸收了 ReactiveCocoa 的思想,并且想做得更面向对象一些。

消息相关

消息推送客户端
  • SGPushDemo – 消息推送客户端
  • Orbiter – 消息推送客户端:Push Notification Registration for iOS.
  • PushDemo – 客户端消息接收消息代码,IOS开发之 —- IOS8推送消息注册 , 分分钟搞定IOS远程消息推送。
消息推送服务端
  • javapns源代码 – 消息推送的java服务端代码,注意:DeviceToken中间不能有空格。
  • pushMeBaby – Mac端消息推送端代码,注意:DeviceToken中间要有空格。
通知相关
  • JSQNotificationObserverKit – 一款轻量、易用的通知发送及响应框架类库。作者是知名开源项目 JSQMessagesViewController(Objective-C 版即时聊天)的作者 Jesse Squires.
  • GLPubSub – 一个简短实用的 NSNotificationCenter 的封装。
  • Homeoff – 用swift写了一个模仿Launcher通知中心快捷方式的应用。支持20个应用,并增加了一个返回到桌面来解放Home键的功能。
  • JDStatusBarNotification – 在状态栏顶部显示通知。可以自定义颜色字体以及动画。支持进度显示以及显示状态指示器。

版本新API的Demo

  • appleSample – iOS 苹果官方Demo合集, 官方demo.
  • iOS7-Sampler – 整合了iOS7.0的一些十分有用的特性,比如:Dynamic Behaviors、碰撞检测、语音合成、视图切换、图像滤镜、三维地图、Sprite Kit(动画精灵)、Motion Effect(Parallax)、附近蓝牙或者wifi搜索连接、AirDrop、运动物体追踪(iPhone 5S以上,需要M7处理器)等等。对于日常的应用开发十分实用。
  • iOS8-Sampler – 日本的shuさん制作的 iOS8 参考代码集。01.Audio Effects ;02.New Image Filters;03.Custom Filters;04.Metal Basic;05.Metal Uniform Streaming;06.SceneKit;07.HealthKit;08.TouchID;09.Visual Effects;10.WebKit;11.UIAlertController;12.User Notification;13.Pedometer;14.AVKit;15.Histogram;16.Code Generator;17.New Fonts;18.Popover;19.Accordion Fold Transition
  • iOS-9-Sampler – 通过实例介绍了iOS 9 SDK中重要新特性的使用。
  • MTSwift-Learning – 通过一些简单项目实战演练开始学习 Swift 。
  • iOS8-day-by-day – swift。
  • iOS9-day-by-day – swfit iOS9 Day-by-Day :: Day 2 :: UI Testing。
  • iOS 9 分屏多任务 – iOS 9 分屏多任务:Slide Over & Split View快速入门(中文版)。

代码安全与密码

  • ios-class-guard – 一个用于混淆iOS的类名、方法名以及变量名的开源库–有人反映编译出来的app运行不了。
  • 《Protecting iOS Applications》:文章系统地介绍了如何保护iOS程序的代码安全,防止反汇编分析。
  • fishhook – fishhook是Facebook开源的一个可以hook系统方法的工具。
  • GesturePassword – 一个iOS手势密码功能实现,iPad/iPhone 都可以用,没有使用图片,里面可以通过view自己添加。keychain做的数据持久化,利用苹果官方KeychainItemWrapper类。操作部分都在controller了。删除直接用一下clear。
  • JMPasswordView – 简单实用的手势密码,效果可自行调控。
  • 仿密码锁-九宫格 – 仿密码锁-九宫格,主要是使用UIButton 手势事件 UIBezierPath画图,解锁失败弹出“密码错误”。
  • CoreLock – 本框架是高仿支付宝,并集成了所有功能,并非一个简单的解锁界面展示。个人制作用时1周多,打造解锁终结者框架。
  • LikeAlipayLockCodeView – 高仿支付宝手势解锁(超级版)。
  • PCGestureUnlock – 目前*全面*高仿支付宝的手势解锁,而且提供方法进行参数修改,能解决项目开发中所有手势解锁的开发。
  • ICPayPassWordDemo – CPayPassWordDemo,一个模仿支付宝支付密码输入对话框小demo。
  • RSAESCryptor – 加密 RSA+AES Encryption/Decryption library for iOS. This library uses 2048-bit RSA and 256-bit key with 128-bit block size AES for encryption/decryption。

测试及调试

  • HeapInspector – HeapInspector是一个用于检测应用中的内存泄漏的开源调试工具。
  • Crashlytics – Crashlytics 崩溃报告 崩溃日志 使用说明 。
  • UIViewController-Swizzled – 把你进入的每一个controller的类名打出来,如果看一些特别复杂的项目的时候直接运行demo就可以知道执行次序了。
  • snoop-it – snoop-it比UIViewController-Swizzled好用,代码托管在google上。
  • Versions – 版本比较小工具。
  • MobileWebPageTest – MobileWebPageTest是用来测试移动网页性能的软件,它可以对页面的加载和渲染过程进行截屏,协助开发者分析出页面性能瓶颈。
  • KKLog – 一个日志管理系统。
  • CleanroomLogger – 相当于 CocoaLumberjack 或 Log4j 的 Swift 版本,功能上甚至更强大。另外,源代码中已经内含了完整的 API 文档,使用非常方便。 Buildasaur – 自动测试框架 Buildasaur。MMPlaceHolder – 一行代码显示UIView的位置及相关参数。 使用Quick框架和Nimble来测试ViewControler – Quick是一个用于创建BDD测试的框架。配合Nimbl,可以为你创建更符合预期目标的测试。
  • fastlane – 一套iOS开发和持续集成的命令行工具fastlane,可以用来快速搭建CI甚至自动提交的开发环境。这套工具中包括了上传ipa文件,自动截取多语言截屏,生成推送证书,管理产品证书等一系列实用工具。
  • KIF – 是一个开源的用户界面UI测试框架. 使用 KIF, 并利用 iOS中的辅助功能 API, 你将能够编写模拟用户输入,诸如点击,触摸和文本输入,自动化的UI测试.
  • Quick – 用于Swift中的单元测试(也可用于Objective-C),与Xcode整合在一起。如果你是Objective-C的粉丝,我建议用Specta代替这个,但是对Swift使用者来说,Quick是*佳选择。
  • Sleipnir – Swift的测试框架。
  • kiwi-bdd – TDD或BDD,objective-c语言的测试框架,*流行的BDD测试框架了,Kiwi*受欢迎(根据github上的star数来推断,行为描述和期望写起来也比较易懂,至少我是这么认为的) iOS开发中的测试框架。
  • specta – TDD或BDD,objective-c语言的测试框架,用的人多。
  • cedar – TDD或BDD,objective-c语言的测试框架,用的人少。

AppleWatch

  • Tesla汽车AppleWatch app demo演示 – 通过AppleWatch控制特斯拉汽车,同时可以看到汽车的相关信息,比如剩余电量、可续行里程等,以及解锁/上锁车门、调节司机和乘客的四区域空调温度、开启车辆大灯、定位汽车等。源码推荐说明。
  • WatchKit-Apps – WatchKit 开源小项目示例集锦。是不可多得地学习 WatchKit 的示例式教程(1.如何创建一个简单的交互式计数器;2.如何从手表上控制iOS app;3.如何在WatchKit app和iOS app之间共享数据;4.如何创建一个拥有不同背景色的数字时钟;5.展示不同的UI层;6.如何创建支持滑动手势的应用程序。)。
  • KYVoiceCurve – 类似Apple Watch中语音的声音曲线动画。
  • IGInterfaceDataTable – IGInterfaceDataTable是WKInterfaceTable对象的一个类别,可以让开发者更简单地配置多维数据。该项目使用类似UITableViewDataSource的数据源模式配置Apple Watch表格,而不是将数据结构扁平化成为数组。
  • Apple Watch开发教程资料汇总 – Apple Watch开发教程资料汇总。
  • Stargate – 通过 iPhone 桥接实现 Mac 与 Watch 的即时通讯。Stargate 通过封装两个优秀的基础类库 MMWormhole 和 PeerKit 实现高效的通讯应用。–swift
  • soon – 一款倒计时 WatchKit 示例应用。作者从架构的角度,思考如何设计一款完整、通讯高效且性能又好的 WatchKit 扩展应用。该示例学习性非常强。–swift
  • watchOS-2-Sampler – 基于 watchOS 2 若干新特性,写了相应的示例代码供大家学习、参考。
  • HMWatch – HMWatch是个有待完善的watchOS 2.0 HomeKit 应用示例。
  • CocoaMultipeer – CocoaMultipeer这个开源框架支持OS X, iOS和watchOS设备间的点对点通信,解决watchOS和Mac之间通信的方案还是很有用的。
  • HighstreetWatchApp – 是电商平台Highstreet针对App Watch的一款应用,该demo中加载的是虚拟数据。
  • NKWatchChart – NKWatchChart是一个基于PNChart专门为Apple Watch 开发的图表库,目前支持 line, bar, pie, circle 和 radar 等 图表形式。

*

  • *on – swift的* On 的源码和本地化内容都是开放的: 官方网站。
  • Hydro.network – Hydro.network 的开发旅程, gitcafe。

完整项目

  • v2ex – v2ex 的客户端,新闻、论坛。
  • apps-ios-wikipedia – apps-ios-wikipedia 客户端。
  • jetstream-ios – 一款 Uber 的 MVC 框架。它同时提供了多用户实时通讯支持,一旦启动 JetStream 后端服务,通过 WebSocket 协议可以分分钟建立多用户实时通讯应用。
  • DeckRocket – 在相同 WiFi 网络环境内,通过iPhone 控制并播放 Mac 中的 PDF 文档。
  • ScanBook – 扫扫图书:可以扫描条形码查询图书,也可以关键字搜索,遇到合乎你口味的书,还可以看看别人的读书笔记,不同角度去体会。
  • DesignerNewsApp – Swift 开发的 DesignerNews 客户端,看着美美的!
  • KYWeibo – 调用新浪API自己写的第三方微博客户端。
  • DouQu_IOS – 逗趣IOS手机端(一款笑话软件),拥有完整的功能的手机应用app 。
  • IT江湖iOS客户端 – IT江湖iOS客户端。
  • Eidolon – 艺术品拍卖的投标亭平台,用swift与反应式编程框架 ReactiveCocoa。
  • CrazyPuzzle – 模仿“看图猜成语”App,功能齐全,配有音效,效果很不错。游戏使用cocoa框架完成,没有使用cocos2d的框架。
  • WhoCall – 谁CALL我,iOS来电信息语音提醒,无需越狱。(需要iOS 7.0及以上版本。)骚扰电话预警、来电归属地提醒、联系人姓名播报,这些有中国特色人性化的电话功能,iOS上也应该有。电话提醒、私有API。
  • 仿iOS猎豹垃圾清理(实现原理+源码) – 仿iOS猎豹垃圾清理(实现原理+源码),用到私有API。
  • DSLolita – 模仿新浪微博做的一款app,有发送博文,评论,点赞,私聊功能。
  • GSD_ZHIFUBAO – 支付宝高仿版。
  • Tropos – Tropos, 由 thoughtbot 推出的一款用 Objective-C 写的开源天气类应用, 截至今天, thoughtbot 已在 GitHub 上贡献了 174 个开源项目, 实在令人敬佩。
  • SmileWeather -开源天气类应用,天气图标很完整。
  • MVVMReactiveCocoa – GitBucket 2.0 通过审核啦,她是我在公司实践了一年多 MVVM 和 RAC 的基础上,利用业余时间开发的第三方 GitHub 客户端,旨在能够对想实践 MVVM 和 RAC 的 iOS 开发者有所帮助。AppStore地址,欢迎下载使用GitBucket和收藏MVVMReactiveCocoa。
  • Tomate – 这个圆盘式计时器让你更专注于工作或学习。P.S. App Store 上架收费应用(0.99 欧)。
  • StoveFireiOSMenu – 炉火餐饮系统iPad点餐端。
  • BaiduFM-Swift – 百度FM, swift语言实现,基于*新xcode6.3+swift1.2,初步只是为了实现功能,代码比较粗燥,后面有时间会整理,支持Apple Watch。
  • WNXHuntForCity – iOS高仿城觅项目(开发思路和代码)。
  • ZYChat – 关于聊天界面的可消息类型扩展,响应绑定设计。
  • NiceAppDemo – 仿*美应用-每日*美的钢琴律动效果。
  • meituan – 美团5.7iOS版(高仿),功能包括,团购首页,高德地图搜索附近美食并显示在地图上,上门服务,商家,友盟分享。
  • chuanke – 高仿百度传课iOS版。
  • Tuan – 模仿MJ老师iPad版美团(swift版),偶有bug 见谅。
  • SXNews – 模仿网易新闻做的新闻软件,完成了主导航页,新闻详情页,图片浏览页,评论页。效果不错,比网上流传的各种和网易新闻UI架构有关的代码都要完整,都要好。
  • Monkey – Monkey for GitHub是一个GitHub开发者和仓库排名的开源App。这次主要增加了登录GitHub的功能,随手follow和star,并且增加发现模块,包括GitHub的trending,动态,showcases等。
  • Uther – 跟蠢萌的外星人聊天,还能帮你记事”。itunes下载 。

好的文章

  • 自定义转场动画 – 3 种方法~ 关于自定义转场动画。
  • iOS提高效率的方法和工具 – iOS提高效率的方法和工具。
  • 用 JSON 构建 API 的标准指南 – 用 JSON 构建 API 的标准指南。

Xcode插件

  • iOS开发进阶,从Xcode开始 – 学习使用Xcode构建出色的应用程序!
  • 在Xcode启动的时候,Xcode将会寻找位于~/Library/Application Support/Developer/Shared/Xcode/Plug-ins文件夹中的后缀名为.xcplugin的bundle作为插件进行加载(运行其中的可执行文件)。Xcode5 Plugins 开发简介 写个自己的Xcode4插件
  • Xcode 4 插件制作入门 – Xcode 4 插件制作入门:Xcode所使用的所有库都包含在Xcode.app/Contents/的Frameworks,SharedFrameworks和OtherFrameworks三个文件夹下。其中和Xcode关系*为直接以及*为重要的是Frameworks中的IDEKit和IDEFoundation,以及SharedFrameworks中的DVTKit和DVTFoundation四个。
  • RTImageAssets – 一个 Xcode 插件,用来生成 @3x 的图片资源对应的 @2x 和 @1x 版本。Asset Catalog Creator 功能强大,能自动生成全部尺寸:包括App Icons、Image Sets、Launch Screens Generator。
  • VVDocumenter-Xcode – 一个Xcode插件,build后,随手打开一个你之前的项目,然后在任意一个方法上面连按三下”/”键盘,就ok了。
  • Reveal-Plugin-for-XCode – 一个Reveal插件,可以使工程不作任何修改的情况下使用Reveal,该插件已在Alcatraz上架。Reveal:分析iOS UI的利器 。
  • java2Objective-c – Google公司出得java转Obje-C转换工具,转换逻辑,不转换UI。
  • RegX – 专治代码强迫症的 Xcode 插件,使用 Swift 和 Objective-C 编写。其用竖向对齐特定源代码的元素,使得代码更易读和易理解。说明 ; 菜单:xcode——》Edit-》Regx 。
  • KSImageNamed – 自动完成,特别是如果你正在写Objective-C,如果Xcode能自动完成文件名难道不会很伟大吗?比如图像文件的名称。
  • FuzzyAutocomplete – Xcode的实现自动完成还不完美,此插件能给出你所期望或想要的建议,设置:xcode-》Editor-》FuzzyAutocomplete-》plugin settings。
  • GitDiff – Xcode的代码编辑器的一个微妙的补强,加上了足够的可见信息以了解上次git提交以来发生了什么变化,设置:xcode-》Edit-》GitDiff。
  • XToDo – 这个插件不仅凸显TODO,FIXME,???,以及!!!注释,也在便利列表呈现他们。 菜单:xcode-》view-》snippets; 调出列表显示: xcode-》view-》ToDo List : ctrl + T 。
  • Backlight – 突出显示当前正在编辑的行。菜单:xcode-》view-》Backlight 。
  • CocoaPods – 该CocoaPods的插件增加了一个CocoaPods菜单到Xcode的产品菜单。如果你不喜欢命令行,那么你一定会喜欢这个插件。 用CocoaPods做iOS程序的依赖管理 。
  • Peckham – 添加import语句比较麻烦,此插件 按Command-Control-P,给出的选项列表中选择要的头文件。先要安装Alcatraz ,在终端输入: curl -fsSLhttps://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh ; 重启xcode-》window-》Package Manager:搜索 Peckham 安装,打开Peckham.xcodeproj,编译 Peckham target,重启Xcode 。
  • Auto-Importer – Auto-Importer是一个自动导入类对应的头文件的Xcode插件。
  • Alcatraz -使用Alcatraz来管理Xcode插件 使用说明 。
  • KSHObjcUML -KSHObjcUML 是一个 Objective-C 类引用关系图的 Xcode 插件。
  • ColorSense-for-Xcode – 颜色插件,安装之后,就不用根据RGB选择颜色,直接从取色板中取颜色,会自动补齐RGB代码。。
  • 10款提高iOS开发效率的XCode插件 – 10款提高iOS开发效率的XCode插件:1. XcodeColors;5. ACCodeSnippetRepository;10. Dash for Xcode。
  • ZLGotoSandboxPlugin – 支持Xcode快捷键了跳转当前应用沙盒了!快捷键是 Shift+Common+w。
  • XcodeSwiftSnippets – XcodeSwiftSnippets, 提供了很多可在 Xcode 上使用的 Swift 代码片段, 通过自动补全的方式*大的提高了开发效率, 另外还有 Objective-C 版的。
  • CoPilot – 通过此插件, Xcode 可以协同编程了(采用 WebSocket 通讯)。如此强大的“黑工具”,不爱它能行吗。
  • ESJsonFormat-Xcode – 将Json格式化输出为模型的属性。
  • SCXcodeMiniMap – Xcode迷你小地图-SCXcodeMiniMap。
  • xTransCodelation – XCODE中英文翻译插件,提供API查询模式和网页模式,都是利用的百度翻译。另外集成了一个可以一键关闭其他所有APP的实用功能,方便开发者!

美工资源

  • TWG_Retina_Icons – 一套支持 Retina 高清屏的 iPhone 免费图标集。
  • ASCIImage – 使用 NSString 创建 image,说明。
  • my-sketch-colors – 配色。
  • Font Awesome – Font Awesome:一套*佳的图标字体库和CSS框架,详细的安装方法请参考官方网站中文网站,GitHub地址 。
  • DynamicColor – 强大的颜色操作扩展类。通过该类,你可以通过扩展方法基于某个颜色得到不同深浅、饱和度、灰度、色相,以及反转后的新颜色。是不可多得的好类库。
  • Chameleon – Chameleon是一个iOS的色彩框架。它运用现代化flat color将UIColor扩展地非常美观。我们还可以通过它运用自定义颜色创建调色板。它还有很多功用,请浏览readme。
  • FontBlaster – 载入定制字体时更简单。

其他资源

  • githuber – *好用的GitHub人才搜索工具。
  • codatlas – 源代码搜索利器。
  • searchcode – 源代码搜索利器:来自悉尼的代码搜索引擎汇聚了 Github, Bitbucket, Sourceforge…等多家开源站点超20万个项目、180亿行源代码,能以特殊字符、语言、仓库和源方式从90多种语言找到函数、API的真实代码。
  • kitematic – Mac 上使用 Docker *简单的方案。

开发资源

开发资料
  • 豆瓣iOS开源库列表 – 豆瓣iOS开源库列表,很多开源项目。
  • iOS-Core-Animation-Advanced-Techniques – 中文版iOS 高级动画技术。
  • iOS开发的一些奇巧淫技1 – TableView不显示没内容的Cell怎么办; 键盘事件:IQKeyboardManager; app不流畅:KMCGeigerCounter; CoreData用起来好烦:MagicalRecord; CollectionView实现悬停的header:CSStickyHeaderFlowLayout。
  • iOS开发的一些奇巧淫技2 – 用一个pan手势来代替UISwipegesture的各个方向、拉伸图片、播放GIF、上拉刷新、把tableview里cell的小对勾的颜色改变、navigationbar弄成透明的而不是带模糊的效果、改变uitextfield placeholder的颜色和位置。
  • cocoapods安装指南 – cocoapods安装指南。
  • RemoteControl – Control your iPhone from inside Xcode for end-to-end testing 。
  • MVVM 介绍 – 替换MVC的开发模式。
  • 第三方接口 – 基本所有第三方接口都在这,再也不用那么麻烦去找了。
  • 提高iOS开发效率的方法和工具 – 提高iOS开发效率的方法和工具。
  • 禅与 Objective-C 编程艺术 – 禅与 Objective-C 编程艺术 (Zen and the Art of the Objective-C Craftsmanship 中文翻译)。
  • Objective-C编码规范:26个方面解决iOS开发问题 – 【Objective-C编码规范:26个方面解决iOS开发问题:“我们制定Objective-C编码规范的原因是我们能够在我们的书,教程和初学者工具包的代码保持优雅和一致。”今天分享的规范来自raywenderlich.com团队成员共同完成的,希望对学习OC的朋友们有所指导和帮助。
swift
  • Swift中文指南 – 中文版Apple官方Swift教程《The Swift Programming Language》,老码版本 历史版本更新说明。
  • The Swift Programming Language 中文版 – The Swift Programming Language 中文版。
  • swifttoolbox – swifttoolbox swift开发的开源库汇总。
  • SwiftGuide – 这份指南汇集了Swift语言主流学习资源,并以开发者的视角整理编排– 非常不错,值得推荐。
  • Swift开源项目精选 – Swift开源项目精选–推荐,每周都有更新。
  • Awesome Swift – 一个收集了很多 Swift 开发资源的网站。
  • Developing_iOS_8_Apps_With_Swift – Developing iOS 8 Apps with Swift 字幕简体中文翻译项目(斯坦福白胡子老头swift教学视频)。
  • Swift-On-iOS – JohnLui 的 Swift On iOS 代码仓库。
他人开源总结
  • code4app – *多国人用的代码库。
  • cocoachina – 国内*热门的iOS社区的代码库。
  • awesome-ios – 一个老外整理的,中文版。
  • awesome-ios-ui – 收集了不少 iOS UI/UX 库, 包含了很多酷炫的动画效果。
  • ios-cosmos – The iOS Cosmos:收录了IOS*大部分的开源框架和工具。
  • Awesome Haskell资料大全 – Awesome Haskell 资料大全:框架,库和软件。
  • Cosmos – The iOS Cosmos:收录了IOS*大部分的开源框架和工具。
  • cocoacontrols – 收集了很多UI控件效果代码,缺点是需要*,而且代码分类不够好。
  • lexrus – lexrus国内出名的iOS开源coder,非常库的label动画、textfield动画。
  • open-source-ios-apps – iOS App集合,分:swift与Objective-C–国外人整理。
  • 适合iOS开发者的15大网站推荐 – 适合 iOS 开发者的 15 大网站推荐 — 英文网站。
  • Objective-C GitHub 排名前 100 项目简介 – 主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况。
  • Github-iOS备忘 -整理了比较常用的iOS第三方组件,以及github上的统计。

iOS 获取手机上已经安装的应用

前言

公司内部有一给自己的 App 发布后台,类似于 FIR 那样的存在, 有完整的 LDAP 账号登录。每天的 daily build 和 历史发布版都会放到那里去。然而每次都要登录后台扫描二维码下载实在是太麻烦了,我们就打算做一个客户端。

于是问题来了:如何知道我手机上安装的*物说版本号比我当前的要低呢?

方案们

方案一 剪贴板共享

我们知道同一个证书下的软件,是可以共享剪贴板的,所以我们可以把*物说的版本号丢到剪贴板里存下来。

但问题在于:

  1. *物说要运行过

  2. 致命伤:必须同一个 账号的 证书,内部 APP 肯定会去用企业证书,而*物说可能是线上证书,可能是企业证书。

所以这个方案被否掉了。

方案二 URLScheme

把*物说的 URLScheme 写成 GiftTalk233 这样的方案,然后在项目中 CanOpenURL 确认安装。

当问题在于:

iOS 9 之后,CanOpenURL 的白名单有上限,而且要修改编译脚本过于麻烦,这个方案也被否掉了。

于是,常规方案都不可行,那么要祭出大杀器了,私有 API

私有 API

毕竟是内部使用的 APP,所以用用私有 API 也没有什么问题。经过查阅越狱开发的文档,我们发现了这么一个私有库:MobileInstallation.framework

使用起来还是蛮方便的,直接:

CFDictionaryRef dict = MobileInstallationLookup(NULL);
NSLog(@"%@", (NSDictionary*) dict);

然而,这个库正常情况下是不会被 Link 进来的,于是我们该怎么做呢?

链接私有库

经过前几篇文章,我们知道动态链接库都是写在 Mach-O 的头部。然而它*终是经过 unix 的一个系统函数 dlopen 来加载的,这货是可以突破沙盒环境的,不信你可以给 dlopen 下个断点看看。所以我们可以手动调用 dlopen 加载想要的私有库。

void* libHandle = dlopen("/System/Library/PrivateFrameworks/MobileInstallation.framework/MobileInstallation",RTLD_NOW);

if (libHandle) {
  NSLog(@"加载成功!");
}

但是对于 C 语言函数来说,他在编译时就被换成了对应的函数指针,所以我们想调用上述方法并没有那么容易。而如果是 OC 的方法的话,我们直接通过 runtime 就可以拿到对应的结果了。

所以现在我们需要拿个函数指针做个映射:

%title插图%num这样就可以了!

然鹅,我拿这个这个东西去给同事得瑟的时候,被打脸了。

我拿了一台公司的 iPhone 4 iOS 7 做的开发,这个工作一切正常。但 iOS 8 以上,func 取不到。吓得我赶紧去 Github 上看头文件。

https://github.com/MP0w/iOS-Headers/blob/master/iOS8.1/PrivateFrameworks/MobileInstallation/MIInstallerClient.h

惊了个呆,iOS 8 居然重写了这个 framework,但仔细观察了一下,貌似有一个方法是我们想要的:

 - (void)fetchInstalledAppsWithOptions:(id)arg1 completion:(CDUnknownBlockType)arg2

好吧,我之前树的 Flag 应验了,那就 iOS 8 以上换一个写法吧。

%title插图%num真机运行得到:

required to have an entitlement named “com.apple.private.mobileinstall.allowedSPI” with an array containing “CopyInstalledAppsForLaunchServices” to call the MobileInstallation SPI

Wut?

%title插图%numentitlement.plist

若你对 iOS 签名机制了机的话,entitlement *对不陌生。不过我相信大多数开发者都很少和他打交道,这里我来简单说一下。

我们都知道签名需要证书的 profile 文件,而 entitlement 是一个授权机制,他里面约定了很多 iOS 的更高级的权限。有点像 Android 写在 manifest 里面的 permission。

比如:

  • 访问 HealthKit 需要添加 com.apple.developer.healthkit

  • 使用 Network Extension 查找 WI-FI 需要添加 com.apple.developer.networking.HotspotHelper

但是,这个是需要苹果授权的,且与 profile 对应的。于是我们想在 entitlement 里面添加 com.apple.private.mobileinstall.allowedSPI 是没问题,但是是无法通过签名,会提示找不到对应的 profile。

于是我们想调用私有的 entitlement 的话,越狱设备可以随便搞,但不越狱的话开发者层面是没有什么可以绕过去的方法 (但做安全的蒸米大大说其实是有解的,若有朋友知道欢迎留言)。

仿佛走入了死胡同

柳暗花明又一村

我们都知道同步推是有企业证书版本的,且能查看我们本地的全部 APP。于是,我们对着他们的代码找一下呗~

经过一番查找,我们定位到了一个叫做 ApplicationManager 的类,这个 loadInstalledApplications 的方法很抢眼

%title插图%num然后在逻辑结构中可以看到:

%title插图%num他很鸡贼的判断了一下系统版本是不是大于 8.0,如果不是,就用左边的 MobileInstallation.framework 来做,否则调用了一个方法,叫做 suoyouyianzhuangdeyingyong 。我能吐槽这名字么…

通过下面代码,我们可以发现一个类叫做 LSApplicationWorkspace
%title插图%num在 Github 的私有头文件里面搜了一下,惊了个呆:

https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/MobileCoreServices.framework/LSApplicationWorkspace.h

他居然是 MobileCoreServices 的私有函数!我们连 dlopen 都省了。

于是,照猫画虎,我们有:

%title插图%num任务完成!

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速