Commit 391850462290b650a3af568757ca8592530d798e

Authored by 朱林
0 parents

CNLiveNetworking

Showing 22 changed files with 1540 additions and 0 deletions
CNLiveNetworkingDemo/CNLiveNetworking/CNLiveNetworkManager.h 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworking/CNLiveNetworkManager.h
  1 +//
  2 +// CNLiveNetworkManager.h
  3 +// CNLiveHttpRequestDemo
  4 +//
  5 +// Created by Android on 16/7/26.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +
  11 +@interface CNLiveNetworkManager : NSObject
  12 +
  13 +/**
  14 + * 设置超时时间
  15 + */
  16 +@property (nonatomic, assign) NSTimeInterval timeoutInterval;
  17 +
  18 +/**
  19 + * 缓存策略
  20 + */
  21 +@property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy;
  22 +
  23 ++ (nonnull CNLiveNetworkManager *)manager;
  24 +
  25 +/**
  26 + * GET 请求
  27 + * @param URL
  28 + * @param parameters 上传参数
  29 + * @param success 请求成功回调
  30 + * @param failure 请求失败回调
  31 + */
  32 +- (void)requestGetURL:(nullable NSString *)URL
  33 + parameters:(nullable NSDictionary *)parameters
  34 + success:(nullable void (^)(NSURLResponse *_Nullable response, id _Nullable responseObject))success
  35 + failure :(nullable void (^)(NSURLResponse *_Nullable response, NSError *_Nullable error))failure;
  36 +
  37 +/**
  38 + * POST 请求
  39 + * @param URL
  40 + * @param parameters 上传参数
  41 + * @param success 请求成功回调
  42 + * @param failure 请求失败回调
  43 + */
  44 +- (void)requestPostURL:(nullable NSString *)URL
  45 + parameters:(nullable NSDictionary *)parameters
  46 + success:(nullable void (^)(NSURLResponse *_Nullable response, id _Nullable responseObject))success
  47 + failure :(nullable void (^)(NSURLResponse *_Nullable response, NSError *_Nullable error))failure;
  48 +
  49 +
  50 +
  51 +@end
CNLiveNetworkingDemo/CNLiveNetworking/CNLiveNetworkManager.m 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworking/CNLiveNetworkManager.m
  1 +//
  2 +// CNLiveNetworkManager.m
  3 +// CNLiveHttpRequestDemo
  4 +//
  5 +// Created by Android on 16/7/26.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import "CNLiveNetworkManager.h"
  10 +#import "CNLiveURLRequestSerialization.h"
  11 +
  12 +/**
  13 + * 网络超时时间 默认 60
  14 + */
  15 +static NSTimeInterval TimeoutInterval = 30 ;
  16 +
  17 +/**
  18 + * 缓存策略
  19 + * NSURLRequestUseProtocolCachePolicy // 默认的缓存策略(取决于协议)
  20 + * NSURLRequestReloadIgnoringLocalCacheData // 忽略缓存,重新请求
  21 + * NSURLRequestReloadIgnoringLocalAndRemoteCacheData // 未实现
  22 + * NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData // 忽略缓存,重新请求
  23 + * NSURLRequestReturnCacheDataElseLoad// 有缓存就用缓存,没有缓存就重新请求
  24 + * NSURLRequestReturnCacheDataDontLoad// 有缓存就用缓存,没有缓存就不发请求,当做请求出错处理(用于离线模式)
  25 + * NSURLRequestReloadRevalidatingCacheData // 未实现
  26 + */
  27 +static NSURLRequestCachePolicy CachePolicy = NSURLRequestUseProtocolCachePolicy;
  28 +
  29 +@implementation CNLiveNetworkManager
  30 +
  31 ++ (CNLiveNetworkManager *)manager
  32 +{
  33 + static CNLiveNetworkManager *manager = nil;
  34 +
  35 + static dispatch_once_t predicate;
  36 +
  37 + dispatch_once(&predicate, ^{
  38 +
  39 + manager = [[CNLiveNetworkManager alloc] init];
  40 +
  41 + });
  42 +
  43 + return manager;
  44 +}
  45 +
  46 +-(void)setTimeoutInterval:(NSTimeInterval)timeoutInterval
  47 +{
  48 + if (timeoutInterval) {
  49 + TimeoutInterval = timeoutInterval;
  50 + }
  51 +}
  52 +
  53 +-(void)setCachePolicy:(NSURLRequestCachePolicy)cachePolicy
  54 +{
  55 + if (cachePolicy) {
  56 + CachePolicy = cachePolicy;
  57 + }
  58 +}
  59 +
  60 +-(void)requestGetURL:(NSString *)URL
  61 + parameters:(NSDictionary *)parameters
  62 + success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success
  63 + failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure
  64 +{
  65 + NSURLSessionDataTask *task = [self dataTaskWithRequestMethod:@"GET" URLString:URL parameters:parameters success:success failure:failure];
  66 + [task resume];
  67 +}
  68 +
  69 +- (void)requestPostURL:(NSString *)URL
  70 + parameters:(NSDictionary *)parameters
  71 + success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success
  72 + failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure
  73 +{
  74 + NSURLSessionDataTask *task = [self dataTaskWithRequestMethod:@"POST" URLString:URL parameters:parameters success:success failure:success];
  75 + [task resume];
  76 +}
  77 +
  78 +- (NSURLSessionDataTask *)dataTaskWithRequestMethod:(NSString *)method
  79 + URLString:(NSString *)URLString
  80 + parameters:(NSDictionary *)parameters
  81 + success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success
  82 + failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure{
  83 +
  84 + NSString *newURLString;
  85 + if ([method isEqualToString:@"GET"]) {
  86 + if (parameters) {
  87 + newURLString = [[URLString stringByAppendingString:@"?"] stringByAppendingString:[CNLiveURLRequestSerialization CNQueryStringFromParameters:parameters]];
  88 + }else{
  89 + newURLString = URLString;
  90 + }
  91 + }else{
  92 + newURLString = URLString;
  93 + }
  94 +
  95 + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:newURLString] cachePolicy:CachePolicy timeoutInterval:TimeoutInterval];
  96 +
  97 + //将缓存策略恢复默认
  98 + CachePolicy = NSURLRequestUseProtocolCachePolicy;
  99 + //将超时时间恢复默认
  100 + TimeoutInterval = 30;
  101 +
  102 + request.HTTPMethod = method;
  103 +
  104 + if([method isEqual:@"POST"]){
  105 + [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
  106 + request.HTTPBody =[[CNLiveURLRequestSerialization CNQueryStringFromParameters:parameters] dataUsingEncoding:NSUTF8StringEncoding];
  107 + }
  108 +
  109 + NSURLSessionDataTask *task = [self dataTaskWithRequest:request success:success failure:failure];
  110 +
  111 + return task;
  112 +}
  113 +
  114 +- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
  115 + success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success
  116 + failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure
  117 +{
  118 + NSURLSession *session = [NSURLSession sharedSession];
  119 + NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
  120 +
  121 + dispatch_async(dispatch_get_main_queue(), ^{
  122 + if (error) {
  123 + failure(response,error);
  124 + }else{
  125 + id jsonObj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
  126 + success(response,jsonObj);
  127 + }
  128 + });
  129 + }];
  130 +
  131 + return task;
  132 +}
  133 +
  134 +- (NSURL *)formatURLString:(NSString *)url
  135 +{
  136 + NSURL *urlString = [NSURL URLWithString:[url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]];
  137 + return urlString;
  138 +}
  139 +
  140 +@end
CNLiveNetworkingDemo/CNLiveNetworking/CNLiveURLRequestSerialization.h 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworking/CNLiveURLRequestSerialization.h
  1 +//
  2 +// CNLiveURLRequestSerialization.h
  3 +// CNLiveHttpRequestDemo
  4 +//
  5 +// Created by Android on 16/7/26.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +
  11 +@interface CNLiveURLRequestSerialization : NSObject
  12 +
  13 ++ (nullable NSString *)CNQueryStringFromParameters:(nullable NSDictionary *)parameters;
  14 +
  15 +@end
CNLiveNetworkingDemo/CNLiveNetworking/CNLiveURLRequestSerialization.m 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworking/CNLiveURLRequestSerialization.m
  1 +//
  2 +// CNLiveURLRequestSerialization.m
  3 +// CNLiveHttpRequestDemo
  4 +//
  5 +// Created by Android on 16/7/26.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import "CNLiveURLRequestSerialization.h"
  10 +
  11 +@interface CNLiveURLRequestSerialization ()
  12 +
  13 +@property (readwrite, nonatomic, strong) id value;
  14 +
  15 +@property (readwrite, nonatomic, strong) id field;
  16 +
  17 +@end
  18 +
  19 +@implementation CNLiveURLRequestSerialization
  20 +
  21 +- (id)initWithField:(id)field value:(id)value
  22 +{
  23 + self = [super init];
  24 +
  25 + if (self) {
  26 +
  27 + self.field = field;
  28 +
  29 + self.value = value;
  30 + }
  31 +
  32 + return self;
  33 +
  34 +}
  35 +
  36 +#pragma mark -
  37 +
  38 +FOUNDATION_EXPORT NSArray * CNQueryStringPairsFromDictionary(NSDictionary *dictionary);
  39 +FOUNDATION_EXPORT NSArray * CNQueryStringPairsFromKeyAndValue(NSString *key, id value);
  40 +
  41 ++ (NSString *)CNQueryStringFromParameters:(NSDictionary *)parameters
  42 +{
  43 + NSMutableArray *mutablePairs = [NSMutableArray array];
  44 + for (CNLiveURLRequestSerialization *pair in CNQueryStringPairsFromDictionary(parameters)) {
  45 + [mutablePairs addObject:[pair URLEncodedStringValue]];
  46 + }
  47 + return [mutablePairs componentsJoinedByString:@"&"];
  48 +}
  49 +
  50 +NSArray * CNQueryStringPairsFromDictionary(NSDictionary *dictionary)
  51 +{
  52 + return CNQueryStringPairsFromKeyAndValue(nil, dictionary);
  53 +}
  54 +
  55 +/**
  56 + * 处理上传参数
  57 + */
  58 +NSArray * CNQueryStringPairsFromKeyAndValue(NSString *key, id value)
  59 +{
  60 + NSMutableArray *mutableQueryStringComponents = [NSMutableArray array];
  61 +
  62 + //排序方式
  63 + NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(compare:)];
  64 +
  65 + if ([value isKindOfClass:[NSDictionary class]]) { //字典
  66 + NSDictionary *dictionary = value;
  67 + for (id nestedKey in [dictionary.allKeys sortedArrayUsingDescriptors:@[sortDescriptor]]) {
  68 + id nestedValue = dictionary[nestedKey];
  69 + if (nestedKey) {
  70 + [mutableQueryStringComponents addObjectsFromArray:CNQueryStringPairsFromKeyAndValue((key ? [NSString stringWithFormat:@"%@[%@]", key, nestedKey] : nestedKey), nestedValue)];
  71 + }
  72 + }
  73 + }
  74 +
  75 + else if ([value isKindOfClass:[NSArray class]]){ //数组
  76 + NSArray *array = value;
  77 + for (id nestedValue in array) {
  78 + [mutableQueryStringComponents addObjectsFromArray:CNQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)];
  79 + }
  80 + }else if ([value isKindOfClass:[NSSet class]]){ //集合
  81 + NSSet *set = value;
  82 + for (id obj in [set sortedArrayUsingDescriptors:@[ sortDescriptor ]]) {
  83 + [mutableQueryStringComponents addObjectsFromArray:CNQueryStringPairsFromKeyAndValue(key, obj)];
  84 + }
  85 + }else{ //其他类型
  86 + [mutableQueryStringComponents addObject:[[CNLiveURLRequestSerialization alloc] initWithField:key value:value]];
  87 + }
  88 +
  89 + return mutableQueryStringComponents;
  90 +}
  91 +
  92 +static NSString * CNPercentEscapedStringFromString(NSString *string) {
  93 + static NSString * const kCNCharactersGeneralDelimitersToEncode = @":#[]@"; // does not include "?" or "/" due to RFC 3986 - Section 3.4
  94 + static NSString * const kCNCharactersSubDelimitersToEncode = @"!$&'()*+,;=";
  95 +
  96 + NSMutableCharacterSet * allowedCharacterSet = [[NSCharacterSet URLQueryAllowedCharacterSet] mutableCopy];
  97 + [allowedCharacterSet removeCharactersInString:[kCNCharactersGeneralDelimitersToEncode stringByAppendingString:kCNCharactersSubDelimitersToEncode]];
  98 +
  99 +
  100 + static NSUInteger const batchSize = 50;
  101 +
  102 + NSUInteger index = 0;
  103 + NSMutableString *escaped = @"".mutableCopy;
  104 +
  105 + while (index < string.length) {
  106 +#pragma GCC diagnostic push
  107 +#pragma GCC diagnostic ignored "-Wgnu"
  108 + NSUInteger length = MIN(string.length - index, batchSize);
  109 +#pragma GCC diagnostic pop
  110 + NSRange range = NSMakeRange(index, length);
  111 +
  112 + range = [string rangeOfComposedCharacterSequencesForRange:range];
  113 +
  114 + NSString *substring = [string substringWithRange:range];
  115 + NSString *encoded = [substring stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacterSet];
  116 + [escaped appendString:encoded];
  117 +
  118 + index += range.length;
  119 + }
  120 +
  121 + return escaped;
  122 +}
  123 +
  124 +- (NSString *)URLEncodedStringValue {
  125 + if (!self.value || [self.value isEqual:[NSNull null]]) {
  126 + return CNPercentEscapedStringFromString([self.field description]);
  127 + } else {
  128 + return [NSString stringWithFormat:@"%@=%@", CNPercentEscapedStringFromString([self.field description]), CNPercentEscapedStringFromString([self.value description])];
  129 + }
  130 +}
  131 +
  132 +
  133 +@end
CNLiveNetworkingDemo/CNLiveNetworkingDemo.xcodeproj/project.pbxproj 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo.xcodeproj/project.pbxproj
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 46;
  7 + objects = {
  8 +
  9 +/* Begin PBXBuildFile section */
  10 + 1521ED041D4B25ED00798EA8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1521ED031D4B25ED00798EA8 /* main.m */; };
  11 + 1521ED071D4B25ED00798EA8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1521ED061D4B25ED00798EA8 /* AppDelegate.m */; };
  12 + 1521ED0A1D4B25ED00798EA8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1521ED091D4B25ED00798EA8 /* ViewController.m */; };
  13 + 1521ED0D1D4B25ED00798EA8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1521ED0B1D4B25ED00798EA8 /* Main.storyboard */; };
  14 + 1521ED0F1D4B25ED00798EA8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1521ED0E1D4B25ED00798EA8 /* Assets.xcassets */; };
  15 + 1521ED121D4B25ED00798EA8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1521ED101D4B25ED00798EA8 /* LaunchScreen.storyboard */; };
  16 + 1521ED1D1D4B25ED00798EA8 /* CNLiveNetworkingDemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1521ED1C1D4B25ED00798EA8 /* CNLiveNetworkingDemoTests.m */; };
  17 + 1521ED281D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1521ED271D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests.m */; };
  18 + 1521ED3A1D4B261C00798EA8 /* CNLiveNetworkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1521ED371D4B261C00798EA8 /* CNLiveNetworkManager.m */; };
  19 + 1521ED3B1D4B261C00798EA8 /* CNLiveURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 1521ED391D4B261C00798EA8 /* CNLiveURLRequestSerialization.m */; };
  20 +/* End PBXBuildFile section */
  21 +
  22 +/* Begin PBXContainerItemProxy section */
  23 + 1521ED191D4B25ED00798EA8 /* PBXContainerItemProxy */ = {
  24 + isa = PBXContainerItemProxy;
  25 + containerPortal = 1521ECF71D4B25ED00798EA8 /* Project object */;
  26 + proxyType = 1;
  27 + remoteGlobalIDString = 1521ECFE1D4B25ED00798EA8;
  28 + remoteInfo = CNLiveNetworkingDemo;
  29 + };
  30 + 1521ED241D4B25ED00798EA8 /* PBXContainerItemProxy */ = {
  31 + isa = PBXContainerItemProxy;
  32 + containerPortal = 1521ECF71D4B25ED00798EA8 /* Project object */;
  33 + proxyType = 1;
  34 + remoteGlobalIDString = 1521ECFE1D4B25ED00798EA8;
  35 + remoteInfo = CNLiveNetworkingDemo;
  36 + };
  37 +/* End PBXContainerItemProxy section */
  38 +
  39 +/* Begin PBXFileReference section */
  40 + 1521ECFF1D4B25ED00798EA8 /* CNLiveNetworkingDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CNLiveNetworkingDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
  41 + 1521ED031D4B25ED00798EA8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
  42 + 1521ED051D4B25ED00798EA8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
  43 + 1521ED061D4B25ED00798EA8 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
  44 + 1521ED081D4B25ED00798EA8 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
  45 + 1521ED091D4B25ED00798EA8 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
  46 + 1521ED0C1D4B25ED00798EA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
  47 + 1521ED0E1D4B25ED00798EA8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
  48 + 1521ED111D4B25ED00798EA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
  49 + 1521ED131D4B25ED00798EA8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  50 + 1521ED181D4B25ED00798EA8 /* CNLiveNetworkingDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CNLiveNetworkingDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
  51 + 1521ED1C1D4B25ED00798EA8 /* CNLiveNetworkingDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLiveNetworkingDemoTests.m; sourceTree = "<group>"; };
  52 + 1521ED1E1D4B25ED00798EA8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  53 + 1521ED231D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CNLiveNetworkingDemoUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
  54 + 1521ED271D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLiveNetworkingDemoUITests.m; sourceTree = "<group>"; };
  55 + 1521ED291D4B25ED00798EA8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  56 + 1521ED361D4B261C00798EA8 /* CNLiveNetworkManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveNetworkManager.h; sourceTree = "<group>"; };
  57 + 1521ED371D4B261C00798EA8 /* CNLiveNetworkManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveNetworkManager.m; sourceTree = "<group>"; };
  58 + 1521ED381D4B261C00798EA8 /* CNLiveURLRequestSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveURLRequestSerialization.h; sourceTree = "<group>"; };
  59 + 1521ED391D4B261C00798EA8 /* CNLiveURLRequestSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLiveURLRequestSerialization.m; sourceTree = "<group>"; };
  60 +/* End PBXFileReference section */
  61 +
  62 +/* Begin PBXFrameworksBuildPhase section */
  63 + 1521ECFC1D4B25ED00798EA8 /* Frameworks */ = {
  64 + isa = PBXFrameworksBuildPhase;
  65 + buildActionMask = 2147483647;
  66 + files = (
  67 + );
  68 + runOnlyForDeploymentPostprocessing = 0;
  69 + };
  70 + 1521ED151D4B25ED00798EA8 /* Frameworks */ = {
  71 + isa = PBXFrameworksBuildPhase;
  72 + buildActionMask = 2147483647;
  73 + files = (
  74 + );
  75 + runOnlyForDeploymentPostprocessing = 0;
  76 + };
  77 + 1521ED201D4B25ED00798EA8 /* Frameworks */ = {
  78 + isa = PBXFrameworksBuildPhase;
  79 + buildActionMask = 2147483647;
  80 + files = (
  81 + );
  82 + runOnlyForDeploymentPostprocessing = 0;
  83 + };
  84 +/* End PBXFrameworksBuildPhase section */
  85 +
  86 +/* Begin PBXGroup section */
  87 + 1521ECF61D4B25ED00798EA8 = {
  88 + isa = PBXGroup;
  89 + children = (
  90 + 1521ED351D4B261C00798EA8 /* CNLiveNetworking */,
  91 + 1521ED011D4B25ED00798EA8 /* CNLiveNetworkingDemo */,
  92 + 1521ED1B1D4B25ED00798EA8 /* CNLiveNetworkingDemoTests */,
  93 + 1521ED261D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests */,
  94 + 1521ED001D4B25ED00798EA8 /* Products */,
  95 + );
  96 + sourceTree = "<group>";
  97 + };
  98 + 1521ED001D4B25ED00798EA8 /* Products */ = {
  99 + isa = PBXGroup;
  100 + children = (
  101 + 1521ECFF1D4B25ED00798EA8 /* CNLiveNetworkingDemo.app */,
  102 + 1521ED181D4B25ED00798EA8 /* CNLiveNetworkingDemoTests.xctest */,
  103 + 1521ED231D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests.xctest */,
  104 + );
  105 + name = Products;
  106 + sourceTree = "<group>";
  107 + };
  108 + 1521ED011D4B25ED00798EA8 /* CNLiveNetworkingDemo */ = {
  109 + isa = PBXGroup;
  110 + children = (
  111 + 1521ED051D4B25ED00798EA8 /* AppDelegate.h */,
  112 + 1521ED061D4B25ED00798EA8 /* AppDelegate.m */,
  113 + 1521ED081D4B25ED00798EA8 /* ViewController.h */,
  114 + 1521ED091D4B25ED00798EA8 /* ViewController.m */,
  115 + 1521ED0B1D4B25ED00798EA8 /* Main.storyboard */,
  116 + 1521ED0E1D4B25ED00798EA8 /* Assets.xcassets */,
  117 + 1521ED101D4B25ED00798EA8 /* LaunchScreen.storyboard */,
  118 + 1521ED131D4B25ED00798EA8 /* Info.plist */,
  119 + 1521ED021D4B25ED00798EA8 /* Supporting Files */,
  120 + );
  121 + path = CNLiveNetworkingDemo;
  122 + sourceTree = "<group>";
  123 + };
  124 + 1521ED021D4B25ED00798EA8 /* Supporting Files */ = {
  125 + isa = PBXGroup;
  126 + children = (
  127 + 1521ED031D4B25ED00798EA8 /* main.m */,
  128 + );
  129 + name = "Supporting Files";
  130 + sourceTree = "<group>";
  131 + };
  132 + 1521ED1B1D4B25ED00798EA8 /* CNLiveNetworkingDemoTests */ = {
  133 + isa = PBXGroup;
  134 + children = (
  135 + 1521ED1C1D4B25ED00798EA8 /* CNLiveNetworkingDemoTests.m */,
  136 + 1521ED1E1D4B25ED00798EA8 /* Info.plist */,
  137 + );
  138 + path = CNLiveNetworkingDemoTests;
  139 + sourceTree = "<group>";
  140 + };
  141 + 1521ED261D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests */ = {
  142 + isa = PBXGroup;
  143 + children = (
  144 + 1521ED271D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests.m */,
  145 + 1521ED291D4B25ED00798EA8 /* Info.plist */,
  146 + );
  147 + path = CNLiveNetworkingDemoUITests;
  148 + sourceTree = "<group>";
  149 + };
  150 + 1521ED351D4B261C00798EA8 /* CNLiveNetworking */ = {
  151 + isa = PBXGroup;
  152 + children = (
  153 + 1521ED361D4B261C00798EA8 /* CNLiveNetworkManager.h */,
  154 + 1521ED371D4B261C00798EA8 /* CNLiveNetworkManager.m */,
  155 + 1521ED381D4B261C00798EA8 /* CNLiveURLRequestSerialization.h */,
  156 + 1521ED391D4B261C00798EA8 /* CNLiveURLRequestSerialization.m */,
  157 + );
  158 + path = CNLiveNetworking;
  159 + sourceTree = "<group>";
  160 + };
  161 +/* End PBXGroup section */
  162 +
  163 +/* Begin PBXNativeTarget section */
  164 + 1521ECFE1D4B25ED00798EA8 /* CNLiveNetworkingDemo */ = {
  165 + isa = PBXNativeTarget;
  166 + buildConfigurationList = 1521ED2C1D4B25ED00798EA8 /* Build configuration list for PBXNativeTarget "CNLiveNetworkingDemo" */;
  167 + buildPhases = (
  168 + 1521ECFB1D4B25ED00798EA8 /* Sources */,
  169 + 1521ECFC1D4B25ED00798EA8 /* Frameworks */,
  170 + 1521ECFD1D4B25ED00798EA8 /* Resources */,
  171 + );
  172 + buildRules = (
  173 + );
  174 + dependencies = (
  175 + );
  176 + name = CNLiveNetworkingDemo;
  177 + productName = CNLiveNetworkingDemo;
  178 + productReference = 1521ECFF1D4B25ED00798EA8 /* CNLiveNetworkingDemo.app */;
  179 + productType = "com.apple.product-type.application";
  180 + };
  181 + 1521ED171D4B25ED00798EA8 /* CNLiveNetworkingDemoTests */ = {
  182 + isa = PBXNativeTarget;
  183 + buildConfigurationList = 1521ED2F1D4B25ED00798EA8 /* Build configuration list for PBXNativeTarget "CNLiveNetworkingDemoTests" */;
  184 + buildPhases = (
  185 + 1521ED141D4B25ED00798EA8 /* Sources */,
  186 + 1521ED151D4B25ED00798EA8 /* Frameworks */,
  187 + 1521ED161D4B25ED00798EA8 /* Resources */,
  188 + );
  189 + buildRules = (
  190 + );
  191 + dependencies = (
  192 + 1521ED1A1D4B25ED00798EA8 /* PBXTargetDependency */,
  193 + );
  194 + name = CNLiveNetworkingDemoTests;
  195 + productName = CNLiveNetworkingDemoTests;
  196 + productReference = 1521ED181D4B25ED00798EA8 /* CNLiveNetworkingDemoTests.xctest */;
  197 + productType = "com.apple.product-type.bundle.unit-test";
  198 + };
  199 + 1521ED221D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests */ = {
  200 + isa = PBXNativeTarget;
  201 + buildConfigurationList = 1521ED321D4B25ED00798EA8 /* Build configuration list for PBXNativeTarget "CNLiveNetworkingDemoUITests" */;
  202 + buildPhases = (
  203 + 1521ED1F1D4B25ED00798EA8 /* Sources */,
  204 + 1521ED201D4B25ED00798EA8 /* Frameworks */,
  205 + 1521ED211D4B25ED00798EA8 /* Resources */,
  206 + );
  207 + buildRules = (
  208 + );
  209 + dependencies = (
  210 + 1521ED251D4B25ED00798EA8 /* PBXTargetDependency */,
  211 + );
  212 + name = CNLiveNetworkingDemoUITests;
  213 + productName = CNLiveNetworkingDemoUITests;
  214 + productReference = 1521ED231D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests.xctest */;
  215 + productType = "com.apple.product-type.bundle.ui-testing";
  216 + };
  217 +/* End PBXNativeTarget section */
  218 +
  219 +/* Begin PBXProject section */
  220 + 1521ECF71D4B25ED00798EA8 /* Project object */ = {
  221 + isa = PBXProject;
  222 + attributes = {
  223 + LastUpgradeCheck = 0730;
  224 + ORGANIZATIONNAME = Android;
  225 + TargetAttributes = {
  226 + 1521ECFE1D4B25ED00798EA8 = {
  227 + CreatedOnToolsVersion = 7.3.1;
  228 + };
  229 + 1521ED171D4B25ED00798EA8 = {
  230 + CreatedOnToolsVersion = 7.3.1;
  231 + TestTargetID = 1521ECFE1D4B25ED00798EA8;
  232 + };
  233 + 1521ED221D4B25ED00798EA8 = {
  234 + CreatedOnToolsVersion = 7.3.1;
  235 + TestTargetID = 1521ECFE1D4B25ED00798EA8;
  236 + };
  237 + };
  238 + };
  239 + buildConfigurationList = 1521ECFA1D4B25ED00798EA8 /* Build configuration list for PBXProject "CNLiveNetworkingDemo" */;
  240 + compatibilityVersion = "Xcode 3.2";
  241 + developmentRegion = English;
  242 + hasScannedForEncodings = 0;
  243 + knownRegions = (
  244 + en,
  245 + Base,
  246 + );
  247 + mainGroup = 1521ECF61D4B25ED00798EA8;
  248 + productRefGroup = 1521ED001D4B25ED00798EA8 /* Products */;
  249 + projectDirPath = "";
  250 + projectRoot = "";
  251 + targets = (
  252 + 1521ECFE1D4B25ED00798EA8 /* CNLiveNetworkingDemo */,
  253 + 1521ED171D4B25ED00798EA8 /* CNLiveNetworkingDemoTests */,
  254 + 1521ED221D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests */,
  255 + );
  256 + };
  257 +/* End PBXProject section */
  258 +
  259 +/* Begin PBXResourcesBuildPhase section */
  260 + 1521ECFD1D4B25ED00798EA8 /* Resources */ = {
  261 + isa = PBXResourcesBuildPhase;
  262 + buildActionMask = 2147483647;
  263 + files = (
  264 + 1521ED121D4B25ED00798EA8 /* LaunchScreen.storyboard in Resources */,
  265 + 1521ED0F1D4B25ED00798EA8 /* Assets.xcassets in Resources */,
  266 + 1521ED0D1D4B25ED00798EA8 /* Main.storyboard in Resources */,
  267 + );
  268 + runOnlyForDeploymentPostprocessing = 0;
  269 + };
  270 + 1521ED161D4B25ED00798EA8 /* Resources */ = {
  271 + isa = PBXResourcesBuildPhase;
  272 + buildActionMask = 2147483647;
  273 + files = (
  274 + );
  275 + runOnlyForDeploymentPostprocessing = 0;
  276 + };
  277 + 1521ED211D4B25ED00798EA8 /* Resources */ = {
  278 + isa = PBXResourcesBuildPhase;
  279 + buildActionMask = 2147483647;
  280 + files = (
  281 + );
  282 + runOnlyForDeploymentPostprocessing = 0;
  283 + };
  284 +/* End PBXResourcesBuildPhase section */
  285 +
  286 +/* Begin PBXSourcesBuildPhase section */
  287 + 1521ECFB1D4B25ED00798EA8 /* Sources */ = {
  288 + isa = PBXSourcesBuildPhase;
  289 + buildActionMask = 2147483647;
  290 + files = (
  291 + 1521ED0A1D4B25ED00798EA8 /* ViewController.m in Sources */,
  292 + 1521ED3B1D4B261C00798EA8 /* CNLiveURLRequestSerialization.m in Sources */,
  293 + 1521ED071D4B25ED00798EA8 /* AppDelegate.m in Sources */,
  294 + 1521ED041D4B25ED00798EA8 /* main.m in Sources */,
  295 + 1521ED3A1D4B261C00798EA8 /* CNLiveNetworkManager.m in Sources */,
  296 + );
  297 + runOnlyForDeploymentPostprocessing = 0;
  298 + };
  299 + 1521ED141D4B25ED00798EA8 /* Sources */ = {
  300 + isa = PBXSourcesBuildPhase;
  301 + buildActionMask = 2147483647;
  302 + files = (
  303 + 1521ED1D1D4B25ED00798EA8 /* CNLiveNetworkingDemoTests.m in Sources */,
  304 + );
  305 + runOnlyForDeploymentPostprocessing = 0;
  306 + };
  307 + 1521ED1F1D4B25ED00798EA8 /* Sources */ = {
  308 + isa = PBXSourcesBuildPhase;
  309 + buildActionMask = 2147483647;
  310 + files = (
  311 + 1521ED281D4B25ED00798EA8 /* CNLiveNetworkingDemoUITests.m in Sources */,
  312 + );
  313 + runOnlyForDeploymentPostprocessing = 0;
  314 + };
  315 +/* End PBXSourcesBuildPhase section */
  316 +
  317 +/* Begin PBXTargetDependency section */
  318 + 1521ED1A1D4B25ED00798EA8 /* PBXTargetDependency */ = {
  319 + isa = PBXTargetDependency;
  320 + target = 1521ECFE1D4B25ED00798EA8 /* CNLiveNetworkingDemo */;
  321 + targetProxy = 1521ED191D4B25ED00798EA8 /* PBXContainerItemProxy */;
  322 + };
  323 + 1521ED251D4B25ED00798EA8 /* PBXTargetDependency */ = {
  324 + isa = PBXTargetDependency;
  325 + target = 1521ECFE1D4B25ED00798EA8 /* CNLiveNetworkingDemo */;
  326 + targetProxy = 1521ED241D4B25ED00798EA8 /* PBXContainerItemProxy */;
  327 + };
  328 +/* End PBXTargetDependency section */
  329 +
  330 +/* Begin PBXVariantGroup section */
  331 + 1521ED0B1D4B25ED00798EA8 /* Main.storyboard */ = {
  332 + isa = PBXVariantGroup;
  333 + children = (
  334 + 1521ED0C1D4B25ED00798EA8 /* Base */,
  335 + );
  336 + name = Main.storyboard;
  337 + sourceTree = "<group>";
  338 + };
  339 + 1521ED101D4B25ED00798EA8 /* LaunchScreen.storyboard */ = {
  340 + isa = PBXVariantGroup;
  341 + children = (
  342 + 1521ED111D4B25ED00798EA8 /* Base */,
  343 + );
  344 + name = LaunchScreen.storyboard;
  345 + sourceTree = "<group>";
  346 + };
  347 +/* End PBXVariantGroup section */
  348 +
  349 +/* Begin XCBuildConfiguration section */
  350 + 1521ED2A1D4B25ED00798EA8 /* Debug */ = {
  351 + isa = XCBuildConfiguration;
  352 + buildSettings = {
  353 + ALWAYS_SEARCH_USER_PATHS = NO;
  354 + CLANG_ANALYZER_NONNULL = YES;
  355 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  356 + CLANG_CXX_LIBRARY = "libc++";
  357 + CLANG_ENABLE_MODULES = YES;
  358 + CLANG_ENABLE_OBJC_ARC = YES;
  359 + CLANG_WARN_BOOL_CONVERSION = YES;
  360 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  361 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  362 + CLANG_WARN_EMPTY_BODY = YES;
  363 + CLANG_WARN_ENUM_CONVERSION = YES;
  364 + CLANG_WARN_INT_CONVERSION = YES;
  365 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  366 + CLANG_WARN_UNREACHABLE_CODE = YES;
  367 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  368 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  369 + COPY_PHASE_STRIP = NO;
  370 + DEBUG_INFORMATION_FORMAT = dwarf;
  371 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  372 + ENABLE_TESTABILITY = YES;
  373 + GCC_C_LANGUAGE_STANDARD = gnu99;
  374 + GCC_DYNAMIC_NO_PIC = NO;
  375 + GCC_NO_COMMON_BLOCKS = YES;
  376 + GCC_OPTIMIZATION_LEVEL = 0;
  377 + GCC_PREPROCESSOR_DEFINITIONS = (
  378 + "DEBUG=1",
  379 + "$(inherited)",
  380 + );
  381 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  382 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  383 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  384 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  385 + GCC_WARN_UNUSED_FUNCTION = YES;
  386 + GCC_WARN_UNUSED_VARIABLE = YES;
  387 + IPHONEOS_DEPLOYMENT_TARGET = 9.3;
  388 + MTL_ENABLE_DEBUG_INFO = YES;
  389 + ONLY_ACTIVE_ARCH = YES;
  390 + SDKROOT = iphoneos;
  391 + TARGETED_DEVICE_FAMILY = "1,2";
  392 + };
  393 + name = Debug;
  394 + };
  395 + 1521ED2B1D4B25ED00798EA8 /* Release */ = {
  396 + isa = XCBuildConfiguration;
  397 + buildSettings = {
  398 + ALWAYS_SEARCH_USER_PATHS = NO;
  399 + CLANG_ANALYZER_NONNULL = YES;
  400 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  401 + CLANG_CXX_LIBRARY = "libc++";
  402 + CLANG_ENABLE_MODULES = YES;
  403 + CLANG_ENABLE_OBJC_ARC = YES;
  404 + CLANG_WARN_BOOL_CONVERSION = YES;
  405 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  406 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  407 + CLANG_WARN_EMPTY_BODY = YES;
  408 + CLANG_WARN_ENUM_CONVERSION = YES;
  409 + CLANG_WARN_INT_CONVERSION = YES;
  410 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  411 + CLANG_WARN_UNREACHABLE_CODE = YES;
  412 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  413 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  414 + COPY_PHASE_STRIP = NO;
  415 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  416 + ENABLE_NS_ASSERTIONS = NO;
  417 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  418 + GCC_C_LANGUAGE_STANDARD = gnu99;
  419 + GCC_NO_COMMON_BLOCKS = YES;
  420 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  421 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  422 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  423 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  424 + GCC_WARN_UNUSED_FUNCTION = YES;
  425 + GCC_WARN_UNUSED_VARIABLE = YES;
  426 + IPHONEOS_DEPLOYMENT_TARGET = 9.3;
  427 + MTL_ENABLE_DEBUG_INFO = NO;
  428 + SDKROOT = iphoneos;
  429 + TARGETED_DEVICE_FAMILY = "1,2";
  430 + VALIDATE_PRODUCT = YES;
  431 + };
  432 + name = Release;
  433 + };
  434 + 1521ED2D1D4B25ED00798EA8 /* Debug */ = {
  435 + isa = XCBuildConfiguration;
  436 + buildSettings = {
  437 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  438 + INFOPLIST_FILE = CNLiveNetworkingDemo/Info.plist;
  439 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
  440 + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetworkingDemo;
  441 + PRODUCT_NAME = "$(TARGET_NAME)";
  442 + };
  443 + name = Debug;
  444 + };
  445 + 1521ED2E1D4B25ED00798EA8 /* Release */ = {
  446 + isa = XCBuildConfiguration;
  447 + buildSettings = {
  448 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  449 + INFOPLIST_FILE = CNLiveNetworkingDemo/Info.plist;
  450 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
  451 + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetworkingDemo;
  452 + PRODUCT_NAME = "$(TARGET_NAME)";
  453 + };
  454 + name = Release;
  455 + };
  456 + 1521ED301D4B25ED00798EA8 /* Debug */ = {
  457 + isa = XCBuildConfiguration;
  458 + buildSettings = {
  459 + BUNDLE_LOADER = "$(TEST_HOST)";
  460 + INFOPLIST_FILE = CNLiveNetworkingDemoTests/Info.plist;
  461 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  462 + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetworkingDemoTests;
  463 + PRODUCT_NAME = "$(TARGET_NAME)";
  464 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CNLiveNetworkingDemo.app/CNLiveNetworkingDemo";
  465 + };
  466 + name = Debug;
  467 + };
  468 + 1521ED311D4B25ED00798EA8 /* Release */ = {
  469 + isa = XCBuildConfiguration;
  470 + buildSettings = {
  471 + BUNDLE_LOADER = "$(TEST_HOST)";
  472 + INFOPLIST_FILE = CNLiveNetworkingDemoTests/Info.plist;
  473 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  474 + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetworkingDemoTests;
  475 + PRODUCT_NAME = "$(TARGET_NAME)";
  476 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CNLiveNetworkingDemo.app/CNLiveNetworkingDemo";
  477 + };
  478 + name = Release;
  479 + };
  480 + 1521ED331D4B25ED00798EA8 /* Debug */ = {
  481 + isa = XCBuildConfiguration;
  482 + buildSettings = {
  483 + INFOPLIST_FILE = CNLiveNetworkingDemoUITests/Info.plist;
  484 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  485 + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetworkingDemoUITests;
  486 + PRODUCT_NAME = "$(TARGET_NAME)";
  487 + TEST_TARGET_NAME = CNLiveNetworkingDemo;
  488 + };
  489 + name = Debug;
  490 + };
  491 + 1521ED341D4B25ED00798EA8 /* Release */ = {
  492 + isa = XCBuildConfiguration;
  493 + buildSettings = {
  494 + INFOPLIST_FILE = CNLiveNetworkingDemoUITests/Info.plist;
  495 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  496 + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetworkingDemoUITests;
  497 + PRODUCT_NAME = "$(TARGET_NAME)";
  498 + TEST_TARGET_NAME = CNLiveNetworkingDemo;
  499 + };
  500 + name = Release;
  501 + };
  502 +/* End XCBuildConfiguration section */
  503 +
  504 +/* Begin XCConfigurationList section */
  505 + 1521ECFA1D4B25ED00798EA8 /* Build configuration list for PBXProject "CNLiveNetworkingDemo" */ = {
  506 + isa = XCConfigurationList;
  507 + buildConfigurations = (
  508 + 1521ED2A1D4B25ED00798EA8 /* Debug */,
  509 + 1521ED2B1D4B25ED00798EA8 /* Release */,
  510 + );
  511 + defaultConfigurationIsVisible = 0;
  512 + defaultConfigurationName = Release;
  513 + };
  514 + 1521ED2C1D4B25ED00798EA8 /* Build configuration list for PBXNativeTarget "CNLiveNetworkingDemo" */ = {
  515 + isa = XCConfigurationList;
  516 + buildConfigurations = (
  517 + 1521ED2D1D4B25ED00798EA8 /* Debug */,
  518 + 1521ED2E1D4B25ED00798EA8 /* Release */,
  519 + );
  520 + defaultConfigurationIsVisible = 0;
  521 + };
  522 + 1521ED2F1D4B25ED00798EA8 /* Build configuration list for PBXNativeTarget "CNLiveNetworkingDemoTests" */ = {
  523 + isa = XCConfigurationList;
  524 + buildConfigurations = (
  525 + 1521ED301D4B25ED00798EA8 /* Debug */,
  526 + 1521ED311D4B25ED00798EA8 /* Release */,
  527 + );
  528 + defaultConfigurationIsVisible = 0;
  529 + };
  530 + 1521ED321D4B25ED00798EA8 /* Build configuration list for PBXNativeTarget "CNLiveNetworkingDemoUITests" */ = {
  531 + isa = XCConfigurationList;
  532 + buildConfigurations = (
  533 + 1521ED331D4B25ED00798EA8 /* Debug */,
  534 + 1521ED341D4B25ED00798EA8 /* Release */,
  535 + );
  536 + defaultConfigurationIsVisible = 0;
  537 + };
  538 +/* End XCConfigurationList section */
  539 + };
  540 + rootObject = 1521ECF71D4B25ED00798EA8 /* Project object */;
  541 +}
CNLiveNetworkingDemo/CNLiveNetworkingDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "self:CNLiveNetworkingDemo.xcodeproj">
  6 + </FileRef>
  7 +</Workspace>
CNLiveNetworkingDemo/CNLiveNetworkingDemo.xcodeproj/project.xcworkspace/xcuserdata/android.xcuserdatad/UserInterfaceState.xcuserstate 0 → 100644
No preview for this file type
CNLiveNetworkingDemo/CNLiveNetworkingDemo.xcodeproj/xcuserdata/android.xcuserdatad/xcschemes/CNLiveNetworkingDemo.xcscheme 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo.xcodeproj/xcuserdata/android.xcuserdatad/xcschemes/CNLiveNetworkingDemo.xcscheme
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "0730"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "1521ECFE1D4B25ED00798EA8"
  18 + BuildableName = "CNLiveNetworkingDemo.app"
  19 + BlueprintName = "CNLiveNetworkingDemo"
  20 + ReferencedContainer = "container:CNLiveNetworkingDemo.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + <TestableReference
  32 + skipped = "NO">
  33 + <BuildableReference
  34 + BuildableIdentifier = "primary"
  35 + BlueprintIdentifier = "1521ED171D4B25ED00798EA8"
  36 + BuildableName = "CNLiveNetworkingDemoTests.xctest"
  37 + BlueprintName = "CNLiveNetworkingDemoTests"
  38 + ReferencedContainer = "container:CNLiveNetworkingDemo.xcodeproj">
  39 + </BuildableReference>
  40 + </TestableReference>
  41 + <TestableReference
  42 + skipped = "NO">
  43 + <BuildableReference
  44 + BuildableIdentifier = "primary"
  45 + BlueprintIdentifier = "1521ED221D4B25ED00798EA8"
  46 + BuildableName = "CNLiveNetworkingDemoUITests.xctest"
  47 + BlueprintName = "CNLiveNetworkingDemoUITests"
  48 + ReferencedContainer = "container:CNLiveNetworkingDemo.xcodeproj">
  49 + </BuildableReference>
  50 + </TestableReference>
  51 + </Testables>
  52 + <MacroExpansion>
  53 + <BuildableReference
  54 + BuildableIdentifier = "primary"
  55 + BlueprintIdentifier = "1521ECFE1D4B25ED00798EA8"
  56 + BuildableName = "CNLiveNetworkingDemo.app"
  57 + BlueprintName = "CNLiveNetworkingDemo"
  58 + ReferencedContainer = "container:CNLiveNetworkingDemo.xcodeproj">
  59 + </BuildableReference>
  60 + </MacroExpansion>
  61 + <AdditionalOptions>
  62 + </AdditionalOptions>
  63 + </TestAction>
  64 + <LaunchAction
  65 + buildConfiguration = "Debug"
  66 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  67 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  68 + launchStyle = "0"
  69 + useCustomWorkingDirectory = "NO"
  70 + ignoresPersistentStateOnLaunch = "NO"
  71 + debugDocumentVersioning = "YES"
  72 + debugServiceExtension = "internal"
  73 + allowLocationSimulation = "YES">
  74 + <BuildableProductRunnable
  75 + runnableDebuggingMode = "0">
  76 + <BuildableReference
  77 + BuildableIdentifier = "primary"
  78 + BlueprintIdentifier = "1521ECFE1D4B25ED00798EA8"
  79 + BuildableName = "CNLiveNetworkingDemo.app"
  80 + BlueprintName = "CNLiveNetworkingDemo"
  81 + ReferencedContainer = "container:CNLiveNetworkingDemo.xcodeproj">
  82 + </BuildableReference>
  83 + </BuildableProductRunnable>
  84 + <AdditionalOptions>
  85 + </AdditionalOptions>
  86 + </LaunchAction>
  87 + <ProfileAction
  88 + buildConfiguration = "Release"
  89 + shouldUseLaunchSchemeArgsEnv = "YES"
  90 + savedToolIdentifier = ""
  91 + useCustomWorkingDirectory = "NO"
  92 + debugDocumentVersioning = "YES">
  93 + <BuildableProductRunnable
  94 + runnableDebuggingMode = "0">
  95 + <BuildableReference
  96 + BuildableIdentifier = "primary"
  97 + BlueprintIdentifier = "1521ECFE1D4B25ED00798EA8"
  98 + BuildableName = "CNLiveNetworkingDemo.app"
  99 + BlueprintName = "CNLiveNetworkingDemo"
  100 + ReferencedContainer = "container:CNLiveNetworkingDemo.xcodeproj">
  101 + </BuildableReference>
  102 + </BuildableProductRunnable>
  103 + </ProfileAction>
  104 + <AnalyzeAction
  105 + buildConfiguration = "Debug">
  106 + </AnalyzeAction>
  107 + <ArchiveAction
  108 + buildConfiguration = "Release"
  109 + revealArchiveInOrganizer = "YES">
  110 + </ArchiveAction>
  111 +</Scheme>
CNLiveNetworkingDemo/CNLiveNetworkingDemo.xcodeproj/xcuserdata/android.xcuserdatad/xcschemes/xcschememanagement.plist 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo.xcodeproj/xcuserdata/android.xcuserdatad/xcschemes/xcschememanagement.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>SchemeUserState</key>
  6 + <dict>
  7 + <key>CNLiveNetworkingDemo.xcscheme</key>
  8 + <dict>
  9 + <key>orderHint</key>
  10 + <integer>0</integer>
  11 + </dict>
  12 + </dict>
  13 + <key>SuppressBuildableAutocreation</key>
  14 + <dict>
  15 + <key>1521ECFE1D4B25ED00798EA8</key>
  16 + <dict>
  17 + <key>primary</key>
  18 + <true/>
  19 + </dict>
  20 + <key>1521ED171D4B25ED00798EA8</key>
  21 + <dict>
  22 + <key>primary</key>
  23 + <true/>
  24 + </dict>
  25 + <key>1521ED221D4B25ED00798EA8</key>
  26 + <dict>
  27 + <key>primary</key>
  28 + <true/>
  29 + </dict>
  30 + </dict>
  31 +</dict>
  32 +</plist>
CNLiveNetworkingDemo/CNLiveNetworkingDemo/AppDelegate.h 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo/AppDelegate.h
  1 +//
  2 +// AppDelegate.h
  3 +// CNLiveNetworkingDemo
  4 +//
  5 +// Created by Android on 16/7/29.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +
  11 +@interface AppDelegate : UIResponder <UIApplicationDelegate>
  12 +
  13 +@property (strong, nonatomic) UIWindow *window;
  14 +
  15 +
  16 +@end
  17 +
CNLiveNetworkingDemo/CNLiveNetworkingDemo/AppDelegate.m 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo/AppDelegate.m
  1 +//
  2 +// AppDelegate.m
  3 +// CNLiveNetworkingDemo
  4 +//
  5 +// Created by Android on 16/7/29.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import "AppDelegate.h"
  10 +
  11 +@interface AppDelegate ()
  12 +
  13 +@end
  14 +
  15 +@implementation AppDelegate
  16 +
  17 +
  18 +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  19 + // Override point for customization after application launch.
  20 + return YES;
  21 +}
  22 +
  23 +- (void)applicationWillResignActive:(UIApplication *)application {
  24 + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
  25 + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
  26 +}
  27 +
  28 +- (void)applicationDidEnterBackground:(UIApplication *)application {
  29 + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
  30 + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
  31 +}
  32 +
  33 +- (void)applicationWillEnterForeground:(UIApplication *)application {
  34 + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
  35 +}
  36 +
  37 +- (void)applicationDidBecomeActive:(UIApplication *)application {
  38 + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
  39 +}
  40 +
  41 +- (void)applicationWillTerminate:(UIApplication *)application {
  42 + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
  43 +}
  44 +
  45 +@end
CNLiveNetworkingDemo/CNLiveNetworkingDemo/Assets.xcassets/AppIcon.appiconset/Contents.json 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "iphone",
  5 + "size" : "29x29",
  6 + "scale" : "2x"
  7 + },
  8 + {
  9 + "idiom" : "iphone",
  10 + "size" : "29x29",
  11 + "scale" : "3x"
  12 + },
  13 + {
  14 + "idiom" : "iphone",
  15 + "size" : "40x40",
  16 + "scale" : "2x"
  17 + },
  18 + {
  19 + "idiom" : "iphone",
  20 + "size" : "40x40",
  21 + "scale" : "3x"
  22 + },
  23 + {
  24 + "idiom" : "iphone",
  25 + "size" : "60x60",
  26 + "scale" : "2x"
  27 + },
  28 + {
  29 + "idiom" : "iphone",
  30 + "size" : "60x60",
  31 + "scale" : "3x"
  32 + },
  33 + {
  34 + "idiom" : "ipad",
  35 + "size" : "29x29",
  36 + "scale" : "1x"
  37 + },
  38 + {
  39 + "idiom" : "ipad",
  40 + "size" : "29x29",
  41 + "scale" : "2x"
  42 + },
  43 + {
  44 + "idiom" : "ipad",
  45 + "size" : "40x40",
  46 + "scale" : "1x"
  47 + },
  48 + {
  49 + "idiom" : "ipad",
  50 + "size" : "40x40",
  51 + "scale" : "2x"
  52 + },
  53 + {
  54 + "idiom" : "ipad",
  55 + "size" : "76x76",
  56 + "scale" : "1x"
  57 + },
  58 + {
  59 + "idiom" : "ipad",
  60 + "size" : "76x76",
  61 + "scale" : "2x"
  62 + }
  63 + ],
  64 + "info" : {
  65 + "version" : 1,
  66 + "author" : "xcode"
  67 + }
  68 +}
0 \ No newline at end of file 69 \ No newline at end of file
CNLiveNetworkingDemo/CNLiveNetworkingDemo/Base.lproj/LaunchScreen.storyboard 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo/Base.lproj/LaunchScreen.storyboard
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8150" systemVersion="15A204g" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
  3 + <dependencies>
  4 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8122"/>
  5 + </dependencies>
  6 + <scenes>
  7 + <!--View Controller-->
  8 + <scene sceneID="EHf-IW-A2E">
  9 + <objects>
  10 + <viewController id="01J-lp-oVM" sceneMemberID="viewController">
  11 + <layoutGuides>
  12 + <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
  13 + <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
  14 + </layoutGuides>
  15 + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
  16 + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
  17 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  18 + <animations/>
  19 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
  20 + </view>
  21 + </viewController>
  22 + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
  23 + </objects>
  24 + <point key="canvasLocation" x="53" y="375"/>
  25 + </scene>
  26 + </scenes>
  27 +</document>
CNLiveNetworkingDemo/CNLiveNetworkingDemo/Base.lproj/Main.storyboard 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo/Base.lproj/Main.storyboard
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
  3 + <dependencies>
  4 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/>
  5 + </dependencies>
  6 + <scenes>
  7 + <!--View Controller-->
  8 + <scene sceneID="tne-QT-ifu">
  9 + <objects>
  10 + <viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
  11 + <layoutGuides>
  12 + <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
  13 + <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
  14 + </layoutGuides>
  15 + <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
  16 + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
  17 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  18 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
  19 + </view>
  20 + </viewController>
  21 + <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
  22 + </objects>
  23 + </scene>
  24 + </scenes>
  25 +</document>
CNLiveNetworkingDemo/CNLiveNetworkingDemo/Info.plist 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo/Info.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>NSAppTransportSecurity</key>
  6 + <dict>
  7 + <key>NSAllowsArbitraryLoads</key>
  8 + <true/>
  9 + </dict>
  10 + <key>CFBundleDevelopmentRegion</key>
  11 + <string>en</string>
  12 + <key>CFBundleExecutable</key>
  13 + <string>$(EXECUTABLE_NAME)</string>
  14 + <key>CFBundleIdentifier</key>
  15 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  16 + <key>CFBundleInfoDictionaryVersion</key>
  17 + <string>6.0</string>
  18 + <key>CFBundleName</key>
  19 + <string>$(PRODUCT_NAME)</string>
  20 + <key>CFBundlePackageType</key>
  21 + <string>APPL</string>
  22 + <key>CFBundleShortVersionString</key>
  23 + <string>1.0</string>
  24 + <key>CFBundleSignature</key>
  25 + <string>????</string>
  26 + <key>CFBundleVersion</key>
  27 + <string>1</string>
  28 + <key>LSRequiresIPhoneOS</key>
  29 + <true/>
  30 + <key>UILaunchStoryboardName</key>
  31 + <string>LaunchScreen</string>
  32 + <key>UIMainStoryboardFile</key>
  33 + <string>Main</string>
  34 + <key>UIRequiredDeviceCapabilities</key>
  35 + <array>
  36 + <string>armv7</string>
  37 + </array>
  38 + <key>UISupportedInterfaceOrientations</key>
  39 + <array>
  40 + <string>UIInterfaceOrientationPortrait</string>
  41 + <string>UIInterfaceOrientationLandscapeLeft</string>
  42 + <string>UIInterfaceOrientationLandscapeRight</string>
  43 + </array>
  44 + <key>UISupportedInterfaceOrientations~ipad</key>
  45 + <array>
  46 + <string>UIInterfaceOrientationPortrait</string>
  47 + <string>UIInterfaceOrientationPortraitUpsideDown</string>
  48 + <string>UIInterfaceOrientationLandscapeLeft</string>
  49 + <string>UIInterfaceOrientationLandscapeRight</string>
  50 + </array>
  51 +</dict>
  52 +</plist>
CNLiveNetworkingDemo/CNLiveNetworkingDemo/ViewController.h 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo/ViewController.h
  1 +//
  2 +// ViewController.h
  3 +// CNLiveNetworkingDemo
  4 +//
  5 +// Created by Android on 16/7/29.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +
  11 +@interface ViewController : UIViewController
  12 +
  13 +
  14 +@end
  15 +
CNLiveNetworkingDemo/CNLiveNetworkingDemo/ViewController.m 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo/ViewController.m
  1 +//
  2 +// ViewController.m
  3 +// CNLiveNetworkingDemo
  4 +//
  5 +// Created by Android on 16/7/29.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import "ViewController.h"
  10 +#import "CNLiveNetworkManager.h"
  11 +
  12 +#define Button_W self.view.bounds.size.width/2
  13 +
  14 +@interface ViewController ()<UITextViewDelegate>
  15 +{
  16 + UITextView *_text;
  17 +}
  18 +@end
  19 +
  20 +@implementation ViewController
  21 +
  22 +- (void)viewDidLoad {
  23 + [super viewDidLoad];
  24 +
  25 + NSArray *array = @[@"get请求",@"post请求"];
  26 + for (int i = 0; i < 2; i ++) {
  27 + UIButton *requestBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  28 + requestBtn.frame = CGRectMake(Button_W*i, 100, Button_W, 40);
  29 + [requestBtn setTitle:array[i] forState:UIControlStateNormal];
  30 + requestBtn.tag = 10000+i;
  31 + [requestBtn addTarget:self action:@selector(requestBtnAction:) forControlEvents:UIControlEventTouchUpInside];
  32 + [self.view addSubview:requestBtn];
  33 + }
  34 +
  35 + _text = [[UITextView alloc] initWithFrame:CGRectMake(10, 200, Button_W*2-20, 200)];
  36 +
  37 + [self.view addSubview:_text];
  38 +
  39 +}
  40 +
  41 +- (void)requestBtnAction:(UIButton *)btn
  42 +{
  43 + if (btn.tag == 10000) {
  44 +
  45 + //get
  46 + NSDictionary * getPara = @{@"plat":@"a",
  47 + @"appid":@"hdtv",
  48 + @"version":@"5.3"};
  49 + NSString *gettUrl = @"http://intertv.cnlive.com/api/activity";
  50 +
  51 + CNLiveNetworkManager *manager = [CNLiveNetworkManager manager];
  52 + manager.timeoutInterval = 20 ;
  53 + manager.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
  54 +
  55 + [manager requestGetURL:gettUrl parameters:getPara success:^(NSURLResponse * _Nullable response, id _Nullable responseObject) {
  56 + NSLog(@"get==success==%@",responseObject);
  57 + _text.text = [NSString stringWithFormat:@"%@",responseObject];
  58 + } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) {
  59 + NSLog(@"get==failure==%@",error.localizedDescription);
  60 + _text.text = [NSString stringWithFormat:@"%@",error.localizedDescription];
  61 + }];
  62 +
  63 + }else{
  64 +
  65 + //post
  66 + // NSDictionary *postPara = @{@"id":@"hdtv",
  67 + // @"msg":@"描述:测试__上传者:__联系方式:123"};
  68 + // NSString *postUrl = @"https://mobile.cnlive.com/CnliveMobile/json/report.action";
  69 +
  70 + NSString *postUrl = @"http://bc.cnlive.com/api/video/redirect";
  71 + NSDictionary *params = @{@"app_access_key":@"7338ebf9cab441c0843e437a18d85549",
  72 + @"user_access_key":@"cf34f28db21b46678237bfa849e239ea",
  73 + @"relation_id":@"498122",
  74 + @"video_type":@"2"};
  75 +
  76 + [[CNLiveNetworkManager manager] requestPostURL:postUrl parameters:params success:^(NSURLResponse * _Nullable response, id _Nullable responseObject) {
  77 + NSLog(@"get==success==%@",responseObject);
  78 + _text.text = [NSString stringWithFormat:@"%@",responseObject];
  79 +
  80 + } failure:^(NSURLResponse * _Nullable response, NSError * _Nullable error) {
  81 + NSLog(@"get==failure==%@",error.localizedDescription);
  82 + _text.text = [NSString stringWithFormat:@"%@",error.localizedDescription];
  83 + }];
  84 + }
  85 +}
  86 +
  87 +- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
  88 +{
  89 + [self.view endEditing:YES];
  90 +}
  91 +
  92 +- (void)didReceiveMemoryWarning {
  93 + [super didReceiveMemoryWarning];
  94 + // Dispose of any resources that can be recreated.
  95 +}
  96 +
  97 +@end
CNLiveNetworkingDemo/CNLiveNetworkingDemo/main.m 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemo/main.m
  1 +//
  2 +// main.m
  3 +// CNLiveNetworkingDemo
  4 +//
  5 +// Created by Android on 16/7/29.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +#import "AppDelegate.h"
  11 +
  12 +int main(int argc, char * argv[]) {
  13 + @autoreleasepool {
  14 + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
  15 + }
  16 +}
CNLiveNetworkingDemo/CNLiveNetworkingDemoTests/CNLiveNetworkingDemoTests.m 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemoTests/CNLiveNetworkingDemoTests.m
  1 +//
  2 +// CNLiveNetworkingDemoTests.m
  3 +// CNLiveNetworkingDemoTests
  4 +//
  5 +// Created by Android on 16/7/29.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import <XCTest/XCTest.h>
  10 +
  11 +@interface CNLiveNetworkingDemoTests : XCTestCase
  12 +
  13 +@end
  14 +
  15 +@implementation CNLiveNetworkingDemoTests
  16 +
  17 +- (void)setUp {
  18 + [super setUp];
  19 + // Put setup code here. This method is called before the invocation of each test method in the class.
  20 +}
  21 +
  22 +- (void)tearDown {
  23 + // Put teardown code here. This method is called after the invocation of each test method in the class.
  24 + [super tearDown];
  25 +}
  26 +
  27 +- (void)testExample {
  28 + // This is an example of a functional test case.
  29 + // Use XCTAssert and related functions to verify your tests produce the correct results.
  30 +}
  31 +
  32 +- (void)testPerformanceExample {
  33 + // This is an example of a performance test case.
  34 + [self measureBlock:^{
  35 + // Put the code you want to measure the time of here.
  36 + }];
  37 +}
  38 +
  39 +@end
CNLiveNetworkingDemo/CNLiveNetworkingDemoTests/Info.plist 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemoTests/Info.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>$(EXECUTABLE_NAME)</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundleName</key>
  14 + <string>$(PRODUCT_NAME)</string>
  15 + <key>CFBundlePackageType</key>
  16 + <string>BNDL</string>
  17 + <key>CFBundleShortVersionString</key>
  18 + <string>1.0</string>
  19 + <key>CFBundleSignature</key>
  20 + <string>????</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>1</string>
  23 +</dict>
  24 +</plist>
CNLiveNetworkingDemo/CNLiveNetworkingDemoUITests/CNLiveNetworkingDemoUITests.m 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemoUITests/CNLiveNetworkingDemoUITests.m
  1 +//
  2 +// CNLiveNetworkingDemoUITests.m
  3 +// CNLiveNetworkingDemoUITests
  4 +//
  5 +// Created by Android on 16/7/29.
  6 +// Copyright © 2016年 Android. All rights reserved.
  7 +//
  8 +
  9 +#import <XCTest/XCTest.h>
  10 +
  11 +@interface CNLiveNetworkingDemoUITests : XCTestCase
  12 +
  13 +@end
  14 +
  15 +@implementation CNLiveNetworkingDemoUITests
  16 +
  17 +- (void)setUp {
  18 + [super setUp];
  19 +
  20 + // Put setup code here. This method is called before the invocation of each test method in the class.
  21 +
  22 + // In UI tests it is usually best to stop immediately when a failure occurs.
  23 + self.continueAfterFailure = NO;
  24 + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
  25 + [[[XCUIApplication alloc] init] launch];
  26 +
  27 + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
  28 +}
  29 +
  30 +- (void)tearDown {
  31 + // Put teardown code here. This method is called after the invocation of each test method in the class.
  32 + [super tearDown];
  33 +}
  34 +
  35 +- (void)testExample {
  36 + // Use recording to get started writing UI tests.
  37 + // Use XCTAssert and related functions to verify your tests produce the correct results.
  38 +}
  39 +
  40 +@end
CNLiveNetworkingDemo/CNLiveNetworkingDemoUITests/Info.plist 0 → 100644
  1 +++ a/CNLiveNetworkingDemo/CNLiveNetworkingDemoUITests/Info.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>$(EXECUTABLE_NAME)</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundleName</key>
  14 + <string>$(PRODUCT_NAME)</string>
  15 + <key>CFBundlePackageType</key>
  16 + <string>BNDL</string>
  17 + <key>CFBundleShortVersionString</key>
  18 + <string>1.0</string>
  19 + <key>CFBundleSignature</key>
  20 + <string>????</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>1</string>
  23 +</dict>
  24 +</plist>