iOS 获取通话时间

今天产品提了一个需求,让面向商家的 app 用户只能通过我们的 app 拨打电话,并且记录通话时间。

iOS 拨打电话必须通过系统的页面,肯定能看到号码,那么接下来很容易就想到,对它看到的号码做一个特殊处理就可以,就像滴滴、饿了么之类一样。

至于通话时间,没法直接获取通话记录信息,但是如果能监听到通话状态的改变,我们自己做一个计算就可以了。

所以产品功能就转化为两个功能--隐藏电话和监听通话状态。

隐藏号码

饿了么在下单的时候是可以勾选隐藏号码的,这样快递员送餐时打来的电话是一个与普通手机号格式不一样的号码,搜索一番后发现这是类似与 回拨电话 的功能,所来也简单,在每单交易中,将用户......

iBeacon 二三事

公司提到有可能需要类似的功能,就自己调研了一番, 也写了个 Demo,写一点笔记。

什么是 iBeacon

iBeacon 是苹果与2013年推出来的一套解决方案,基于蓝牙,需要配合用到蓝牙设备--称之为 Beacon ,价格十几到上百不等,同时需要一个移动 app,主要用来做三件事,室内定位、移动支付和 LBS 推送。

Beacon 设备发射的信号受距离和墙壁的影响,体验大概如同平时的蓝牙音响类似。Beacon 设备本身并不能发送信息或者定位,它只发送信号,移动设备上的 app 收到信号做相关处理。如下图所示。

UILabel首行缩进

今天在开发群里看到有人问如何做首行缩进,想起以前自己写过,很简单,代码放出来做个记录吧。

- (void)UILabel:(UILabel *)label SetText:(NSString *)labelText {

NSMutableAttributedString *text = [[NSMutableAttributedString alloc]initWithString:labelText];

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];

style.he......

iOS文件目录总结

最近重新整理了一个项目的文件结构,做个总结。

总体上文件目录如下

Root

Marco

Module

Utils

Feature

NetworkService

Vender

Resource

我接手这个项目的时候,文件目录都是MyProject、MyMethod这样的,非常不利于理解。就想改一下,我认为文件目录应该是利于新人快速了解项目以及自己方便的管理项目的,尽量做到一目了然和方便。

Root

一般存放AppDelegate.h/m 和RootViewController.h/m(如果有这个类的话),便于一下就能找到项......

如何判断NSArray是否为空

严格来说,赋值前判空NSArray是非常有必要的,对于后台有句话是说

不要相信任何来自前端的数据        -- 被前端数据坑死的无数后台

对于前端也有类似的话

不要相信任何来自后台和用户的数据     -- Wythe

在很多项目中,这类判空方法都是放在公共方法中的,所以它的准确与否也是非常关键。之前和几个朋友讨论了一下这个问题,现在做个总结。

最开始项目里是这样写的

if (array && array.count) {

/*

* do something

*/

}

直到后台传了个null......

Dispatch Group总结

前段时间看叶孤城开源的下厨房app,在网络块看到它使用了Dispatch Group,想起来之前虽然看过一点但是从没用过,忘得差不多了,正好乘此机会再了解一下。而我们公司的app,最近正好有个需求我也用到了这个,自己这里做个总结。

Dispatch Group介绍和使用方法

下面是我查到的关于Dispatch Group的一个解释和作用说明

Dispatch Group,译作“派发分组”或“调度租”,是GCD的一种特性,能够把任务分组。调用者可以等待这组任务执行完成,也可以提供调用函数之后继续往下执行,这组任务完成是,调用者会得到通知。

关键点在任务分组和任务完成后得到通知,立......