title: ios踩过的坑
tags:ios
- AFNetWorking的HTTP Basic Auth鉴权一直失败:Authorization Error
原因: 设置了错误的content-type
1 | var params = basicParams() |
其中postwithparams使用的httpsession是系统启动的时候创建的,设置了一些默认配置。导致鉴权失败的代码:
httpSession.requestSerializer.setValue(“text/html; charset=utf-8 , forHTTPHeaderField: “Content-Type”)
正确的代码(应该需要和服务器端沟通好~)
httpSession.requestSerializer.setValue(“appliction/json”, forHTTPHeaderField: “Content-Type”)
- NSNull和nil是两个东西
1
2
3if let a = NSNull { //这个判断条件为ture,如果nsnull换成nil,这个判断条件就为false
print("NSNull is a instance")
}
- 将playgroud添加到demo工程后 import demo,提示“No Such Module ‘demo’”
解决方案:
想要使用的代码必须是通过 Cocoa (Touch) Framework 以一个单独的 target 的方式进行组织的;
编译结果的位置需要保持默认位置,即在 Xcode 设置中的 Locations 里 Derived Data 保持默认值;
如果是 iOS 应用,这个框架必须已经针对 iPhone 5s Simulator 这样的 64 位的模拟器作为目标进行过编译;
iOS 的 Playground 其实是运行在 64 位模拟器上的,因此为了能找到对应的符号和执行文件,框架代码的位置和编译架构都是有所要求的。
- 同一个workspace下有多个project时,提示“Unable to find a target named
Library
,”
解决方案:使用project字段注明project所处的路径
1 | #source 'https://github.com/CocoaPods/Specs.git' |
- 消息推送相关问题:针对app的不同状态,需要进行特殊处理
a. 当 App 在前台可见的时候,SDK 处于前台活跃状态,此时是使用 SDK 长连接接收消息。
b. 当 App 进入后台且在2分钟之内的时候,SDK 处于后台活跃状态,此时是使用 SDK 长连接接收消息(用户根据需要实现本地通知,否则将不会有本地通知提示弹出)。(摘取自环信说明文档)
c. 当 App 进入后台超过2分,被系统挂起,此时 SDK 处于不活跃状态,或者是主动把App进程杀死,此时如果有新消息,是通过苹果的 APNs 服务进行提醒的。当 App 再次启动,SDK 会去服务器拉取不活跃期间的消息。