Commit 391850462290b650a3af568757ca8592530d798e
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
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 | 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> | ... | ... |