Voip PushKit 初探

按照苹果的知道文档进行配置后,使用Xcode 12 跑程序遇到了如下的错误:

PushKit apps that use VoIP push must link either CallKit or IncomingCallNotifications frameworks.

出现此错误是因为 iOS 13 的SDK对PushKit使用进行了更新,要求一定要使用CallKit处理PushKit的通知:

https://developer.apple.com/documentation/pushkit/pkpushregistrydelegate/2875784-pushregistry?language=objc

当与iOS 13 SDK或更高版本链接时,你对该方法的实现必须通过调用你的应用程序的CXProvider对象的reportNewIncomingCallWithUID:update:completion:方法,向CallKit框架报告PKPushTypeVoIP类型的通知。当你调用该方法时,除非发生错误,否则系统会向用户显示标准的来电界面。例如,如果用户启用了 "请勿打扰",系统就会报告一个错误。你可以在通知CallKit的同时建立与VoIP服务器的连接。

使用 CallKit 处理 PushKit 的通知:

https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit?language=objc

2020/10/16 posted in  iOS

沙盒中的图片数据格式

写了图片data数据到沙盒,又想保留图片格式?

Read more   2020/9/21 posted in  iOS

【转】NSPredicate

2020/9/12 posted in  iOS

Wireshark 抓包 iPhone 数据包

连接手机

想抓iphone的数据,首先需要让iphone数据通过mac才行。看到网上很多设代理什么的方法,比较复杂,有的还要越狱。其实没必要。只要链上数据线,然后在mac的终端执行:

rvictl -s iphone设备id  

断开链接执行

rvictl -x iphone设备id  
Read more   2020/9/1 posted in  iOS

【转】 CocoaPods 多版本共存

在我工作的一个团队中,我们有很多关于安装 CocoaPods 的问题。团队成员拥有不同的 cocoapods gem 的安装版本,并且当有人运行 pod install 时,会将事情搞得一团糟。

我们最终不得不委托一人安装 CocoaPods,并且把工程推到 GitHub 上以供我们使用。这显然是不够灵活的,并且对于我们团队或者是委托人来说都不是一个很满意的解决方式。

Read more   2020/9/1 posted in  iOS

OC 创建对象的奇葩方式

使用OC开发了几年,看到过有人用了下面这样的方式初始化对象,当时觉得 woc !好6啊,高手啊!这什么骚操作,但是也没有问出个原理来,这次带各位一起来探索一下。

Read more   2020/7/31 posted in  iOS

dispatch_queue_create 指南

Read more   2020/7/7 posted in  iOS

CocoaPods Hooks

2020/4/3 posted in  iOS

Xcode `${SRCROOT}` 和`${PROJECT_DIR}` 区别

${SRCROOT}代表的时项目根目录下

${PROJECT_DIR}代表的是整个项目

Read more   2020/3/19 posted in  iOS

NSDate 什么时候需要考虑时区?

一般服务端返回使用的是UTC的时间戳,将时间戳转化为NSDate也是UTC的数据

使用NSDateFormater将Date转化为字符形式的时候,会使用系统默认的时区(当地的时区)进行时区的调整。

Read more   2020/2/28 posted in  iOS

iOS调试CPU线程

2020/2/18 posted in  iOS

让APP能打开AirDrop过来的指定格式文件

2020/2/4 posted in  iOS

字符串编码转换处理函数

NSString 分类方法

Read more   2020/1/4 posted in  iOS

iOS图片解压缩与加载优化

2019/10/16 posted in  iOS

探索 UIScrollView 缩放内部实现原理

先来看一下缩放效果对比视频:
上半部分通过 ScrollView 实现,
下半部分通过 PinchGesture 配合 CGAffineTransform 实现缩放【半成品】:

Read more   2019/9/3 posted in  iOS

视频监控相关知识扫盲

基础QA

  1. 监控系统中的主码流和子码流区别?
    高清网络摄像机产品编码器都会产生两个编码格式,称为主码流和子码流。
    这就叫双码流技术。目的是用于解决监控录像的本地存储和网络传输的图像的质量问题。
Read more   2019/8/29 posted in  iOS

折线图组件

企业微信截图_b3207120-aeeb-4d21-80af-00d958c7c46b-1--1-


Read more   2019/8/18 posted in  iOS

Toll-Free Bridging

某些数据类型能够在Core Foundation和Foundation之间互换使用,可被互换使用的数据类型被称为Toll-Free Bridged类型。这意味着同一数据类型即可以作为Core Foundation函数的参数,也可作为接收者向其发送Objective-C消息。Core Foundation与Foundation之间交换使用数据类型的技术被称为Toll-Free Bridging 。

Read more   2019/7/14 posted in  iOS

制作Pod私有库记录

Read more   2019/7/1 posted in  iOS

exportOptionsPlist 参数记录

使用 Xcodebuild Tool 进行编译打包
需要指定导出的时候配置文件 exportOptionsPlist

example

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>compileBitcode</key>
    <false/>
    <key>destination</key>
    <string>export</string>
    <key>method</key>
    <string>ad-hoc</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>com.corporation.product</key>
        <string>adhoc_com_corporation_product</string>
    </dict>
    <key>signingCertificate</key>
    <string>iPhone Distribution</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>stripSwiftSymbols</key>
    <true/>
    <key>teamID</key>
    <string>2HMNXXXXXX</string>
    <key>thinning</key>
    <string>&lt;none&gt;</string>
</dict>

method: (String) The method of distribution, which can be set as any of the following:
app-store
enterprise
ad-hoc
development
teamID: (String) The development program team identifier.
uploadSymbols: (Boolean) Option to include symbols in the generated ipa file.
uploadBitcode: (Boolean) Option to include Bitcode.

2019/6/24 posted in  iOS