ios踩过的坑

title: ios踩过的坑

tags:ios

  1. AFNetWorking的HTTP Basic Auth鉴权一直失败:Authorization Error
    原因: 设置了错误的content-type
1
2
3
4
5
6
7
8
9
var params = basicParams()
params["aa"] = "sel"
params["bb"] = "some"

let array = stream.components(separatedBy: ",")
var bodyParam = [String : Any]()
bodyParam["stream"] = array
let bodyString = jsonString(bodyParam as NSDictionary)
postWithParams(getRequestURL("api", ak: self.ak, body: bodyString, params: params), params: bodyParam, complete: complete)

其中postwithparams使用的httpsession是系统启动的时候创建的,设置了一些默认配置。导致鉴权失败的代码:
httpSession.requestSerializer.setValue(“text/html; charset=utf-8 , forHTTPHeaderField: “Content-Type”)

正确的代码(应该需要和服务器端沟通好~)
httpSession.requestSerializer.setValue(“appliction/json”, forHTTPHeaderField: “Content-Type”)

  1. NSNull和nil是两个东西
    1
    2
    3
    if let a = NSNull { //这个判断条件为ture,如果nsnull换成nil,这个判断条件就为false
    print("NSNull is a instance")
    }
  1. 将playgroud添加到demo工程后 import demo,提示“No Such Module ‘demo’”
    解决方案:
    想要使用的代码必须是通过 Cocoa (Touch) Framework 以一个单独的 target 的方式进行组织的;

编译结果的位置需要保持默认位置,即在 Xcode 设置中的 Locations 里 Derived Data 保持默认值;

如果是 iOS 应用,这个框架必须已经针对 iPhone 5s Simulator 这样的 64 位的模拟器作为目标进行过编译;

iOS 的 Playground 其实是运行在 64 位模拟器上的,因此为了能找到对应的符号和执行文件,框架代码的位置和编译架构都是有所要求的。

  1. 同一个workspace下有多个project时,提示“Unable to find a target named Library,”
    解决方案:使用project字段注明project所处的路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
workspace 'SmartSpeaker'
use_frameworks!

target "SmartSpeaker" do
pod 'Alamofire', '~> 4.7' #http
pod 'SnapKit' #动态布局
end

target "Library" do
project 'Library/Library.xcodeproj'
pod 'SwiftGifOrigin' #gif播放,使用者:onboard
pod 'ChameleonFramework' #颜色管理,使用者:onboard
end
  1. 消息推送相关问题:针对app的不同状态,需要进行特殊处理
    a. 当 App 在前台可见的时候,SDK 处于前台活跃状态,此时是使用 SDK 长连接接收消息。
    b. 当 App 进入后台且在2分钟之内的时候,SDK 处于后台活跃状态,此时是使用 SDK 长连接接收消息(用户根据需要实现本地通知,否则将不会有本地通知提示弹出)。(摘取自环信说明文档)
    c. 当 App 进入后台超过2分,被系统挂起,此时 SDK 处于不活跃状态,或者是主动把App进程杀死,此时如果有新消息,是通过苹果的 APNs 服务进行提醒的。当 App 再次启动,SDK 会去服务器拉取不活跃期间的消息。
Contents
  1. 1. tags:ios
,