Commit 0e47d8a0 authored by 陈业泓's avatar 陈业泓

更新了SDK代码

parent 1f7d38b3
...@@ -3,6 +3,9 @@ use_frameworks! ...@@ -3,6 +3,9 @@ use_frameworks!
platform :ios, '9.0' platform :ios, '9.0'
target 'SYCSDK_Example' do target 'SYCSDK_Example' do
use_frameworks!
pod 'SYCSDK', :path => '../' pod 'SYCSDK', :path => '../'
target 'SYCSDK_Tests' do target 'SYCSDK_Tests' do
...@@ -10,4 +13,11 @@ target 'SYCSDK_Example' do ...@@ -10,4 +13,11 @@ target 'SYCSDK_Example' do
end end
pre_install do |installer|
# workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
end
end end
PODS: PODS:
- AFNetworking (3.2.1): - BaiduMapKit (6.1.0):
- AFNetworking/NSURLSession (= 3.2.1) - BaiduMapKit/Base (= 6.1.0)
- AFNetworking/Reachability (= 3.2.1) - BaiduMapKit/Cloud (= 6.1.0)
- AFNetworking/Security (= 3.2.1) - BaiduMapKit/Map (= 6.1.0)
- AFNetworking/Serialization (= 3.2.1) - BaiduMapKit/Search (= 6.1.0)
- AFNetworking/UIKit (= 3.2.1) - BaiduMapKit/Utils (= 6.1.0)
- AFNetworking/NSURLSession (3.2.1): - BaiduMapKit/Base (6.1.0)
- AFNetworking/Reachability - BaiduMapKit/Cloud (6.1.0):
- AFNetworking/Security - BaiduMapKit/Base
- AFNetworking/Serialization - BaiduMapKit/Map (6.1.0):
- AFNetworking/Reachability (3.2.1) - BaiduMapKit/Base
- AFNetworking/Security (3.2.1) - BaiduMapKit/Search (6.1.0):
- AFNetworking/Serialization (3.2.1) - BaiduMapKit/Base
- AFNetworking/UIKit (3.2.1): - BaiduMapKit/Utils (6.1.0):
- AFNetworking/NSURLSession - BaiduMapKit/Base
- BMKLocationKit (2.0.0)
- BRPickerView (2.7.3): - BRPickerView (2.7.3):
- BRPickerView/AddressPickerView (= 2.7.3) - BRPickerView/AddressPickerView (= 2.7.3)
- BRPickerView/Base (= 2.7.3) - BRPickerView/Base (= 2.7.3)
...@@ -26,7 +27,11 @@ PODS: ...@@ -26,7 +27,11 @@ PODS:
- BRPickerView/Base - BRPickerView/Base
- BRPickerView/StringPickerView (2.7.3): - BRPickerView/StringPickerView (2.7.3):
- BRPickerView/Base - BRPickerView/Base
- Bugly (2.5.90)
- DACircularProgress (2.3.1) - DACircularProgress (2.3.1)
- EZOpenSDK (4.8.3)
- EZUIKit (2.0):
- EZOpenSDK (= 4.8.3)
- IQKeyboardManager (6.5.6) - IQKeyboardManager (6.5.6)
- JKCategories (1.9.1): - JKCategories (1.9.1):
- JKCategories/CoreData (= 1.9.1) - JKCategories/CoreData (= 1.9.1)
...@@ -176,56 +181,72 @@ PODS: ...@@ -176,56 +181,72 @@ PODS:
- SDWebImage/Core (= 5.9.1) - SDWebImage/Core (= 5.9.1)
- SDWebImage/Core (5.9.1) - SDWebImage/Core (5.9.1)
- SGQRCode (3.0.1) - SGQRCode (3.0.1)
- SYCSDK (0.1.6): - STCBinder (1.0.0)
- SYCSDK/BRPickerView (= 0.1.6) - SYCSDK (0.1.7):
- SYCSDK/DACircularProgress (= 0.1.6) - SYCSDK/BaiduMap (= 0.1.7)
- SYCSDK/IQKeyboardManager (= 0.1.6) - SYCSDK/BRPickerView (= 0.1.7)
- SYCSDK/JKCategories (= 0.1.6) - SYCSDK/Bugly (= 0.1.7)
- SYCSDK/JXCategoryView (= 0.1.6) - SYCSDK/DACircularProgress (= 0.1.7)
- SYCSDK/JXPagingViewPager (= 0.1.6) - SYCSDK/EZUIKit (= 0.1.7)
- SYCSDK/MBProgressHUD (= 0.1.6) - SYCSDK/IQKeyboardManager (= 0.1.7)
- SYCSDK/MJExtension (= 0.1.6) - SYCSDK/JKCategories (= 0.1.7)
- SYCSDK/MJRefresh (= 0.1.6) - SYCSDK/JXCategoryView (= 0.1.7)
- SYCSDK/Network (= 0.1.6) - SYCSDK/JXPagingViewPager (= 0.1.7)
- SYCSDK/SDWebImage (= 0.1.6) - SYCSDK/MBProgressHUD (= 0.1.7)
- SYCSDK/SGQRCode (= 0.1.6) - SYCSDK/MJExtension (= 0.1.7)
- SYCSDK/TTGTagCollectionView (= 0.1.6) - SYCSDK/MJRefresh (= 0.1.7)
- SYCSDK/ViewUtil (= 0.1.6) - SYCSDK/SDWebImage (= 0.1.7)
- SYCSDK/YYText (= 0.1.6) - SYCSDK/SGQRCode (= 0.1.7)
- SYCSDK/BRPickerView (0.1.6): - SYCSDK/STCBinder (= 0.1.7)
- SYCSDK/TTGTagCollectionView (= 0.1.7)
- SYCSDK/UMCCommon (= 0.1.7)
- SYCSDK/ViewUtil (= 0.1.7)
- SYCSDK/YYText (= 0.1.7)
- SYCSDK/BaiduMap (0.1.7):
- BaiduMapKit (= 6.1.0)
- BMKLocationKit (= 2.0.0)
- SYCSDK/BRPickerView (0.1.7):
- BRPickerView (= 2.7.3) - BRPickerView (= 2.7.3)
- SYCSDK/DACircularProgress (0.1.6): - SYCSDK/Bugly (0.1.7):
- Bugly (= 2.5.90)
- SYCSDK/DACircularProgress (0.1.7):
- DACircularProgress (= 2.3.1) - DACircularProgress (= 2.3.1)
- SYCSDK/IQKeyboardManager (0.1.6): - SYCSDK/EZUIKit (0.1.7):
- EZUIKit (= 2.0)
- SYCSDK/IQKeyboardManager (0.1.7):
- IQKeyboardManager (= 6.5.6) - IQKeyboardManager (= 6.5.6)
- SYCSDK/JKCategories (0.1.6): - SYCSDK/JKCategories (0.1.7):
- JKCategories (= 1.9.1) - JKCategories (= 1.9.1)
- SYCSDK/JXCategoryView (0.1.6): - SYCSDK/JXCategoryView (0.1.7):
- JXCategoryView (= 1.5.8) - JXCategoryView (= 1.5.8)
- SYCSDK/JXPagingViewPager (0.1.6): - SYCSDK/JXPagingViewPager (0.1.7):
- JXPagingView/Pager (= 2.1.0) - JXPagingView/Pager (= 2.1.0)
- SYCSDK/MBProgressHUD (0.1.6): - SYCSDK/MBProgressHUD (0.1.7):
- MBProgressHUD (= 1.2.0) - MBProgressHUD (= 1.2.0)
- SYCSDK/MJExtension (0.1.6): - SYCSDK/MJExtension (0.1.7):
- MJExtension (= 3.2.2) - MJExtension (= 3.2.2)
- SYCSDK/MJRefresh (0.1.6): - SYCSDK/MJRefresh (0.1.7):
- MJRefresh (= 3.5.0) - MJRefresh (= 3.5.0)
- SYCSDK/Network (0.1.6): - SYCSDK/SDWebImage (0.1.7):
- AFNetworking (= 3.2.1)
- YTKNetwork
- SYCSDK/SDWebImage (0.1.6):
- SDWebImage (= 5.9.1) - SDWebImage (= 5.9.1)
- SYCSDK/SGQRCode (0.1.6): - SYCSDK/SGQRCode (0.1.7):
- SGQRCode (= 3.0.1) - SGQRCode (= 3.0.1)
- SYCSDK/TTGTagCollectionView (0.1.6): - SYCSDK/STCBinder (0.1.7):
- STCBinder (= 1.0.0)
- SYCSDK/TTGTagCollectionView (0.1.7):
- TTGTagCollectionView (~> 1.11.1) - TTGTagCollectionView (~> 1.11.1)
- SYCSDK/ViewUtil (0.1.6): - SYCSDK/UMCCommon (0.1.7):
- UMCCommon (~> 7.2.9)
- SYCSDK/ViewUtil (0.1.7):
- Masonry - Masonry
- SYCSDK/YYText (0.1.6): - SYCSDK/YYText (0.1.7):
- YYText (= 1.0.7) - YYText (= 1.0.7)
- TTGTagCollectionView (1.11.2) - TTGTagCollectionView (1.11.2)
- YTKNetwork (2.1.4): - UMAPM (1.5.6)
- AFNetworking/NSURLSession (~> 3.0) - UMCCommon (7.2.9):
- UMAPM
- UMDevice
- UMDevice (2.2.1)
- YYText (1.0.7) - YYText (1.0.7)
DEPENDENCIES: DEPENDENCIES:
...@@ -233,9 +254,13 @@ DEPENDENCIES: ...@@ -233,9 +254,13 @@ DEPENDENCIES:
SPEC REPOS: SPEC REPOS:
trunk: trunk:
- AFNetworking - BaiduMapKit
- BMKLocationKit
- BRPickerView - BRPickerView
- Bugly
- DACircularProgress - DACircularProgress
- EZOpenSDK
- EZUIKit
- IQKeyboardManager - IQKeyboardManager
- JKCategories - JKCategories
- JXCategoryView - JXCategoryView
...@@ -246,8 +271,11 @@ SPEC REPOS: ...@@ -246,8 +271,11 @@ SPEC REPOS:
- MJRefresh - MJRefresh
- SDWebImage - SDWebImage
- SGQRCode - SGQRCode
- STCBinder
- TTGTagCollectionView - TTGTagCollectionView
- YTKNetwork - UMAPM
- UMCCommon
- UMDevice
- YYText - YYText
EXTERNAL SOURCES: EXTERNAL SOURCES:
...@@ -255,9 +283,13 @@ EXTERNAL SOURCES: ...@@ -255,9 +283,13 @@ EXTERNAL SOURCES:
:path: "../" :path: "../"
SPEC CHECKSUMS: SPEC CHECKSUMS:
AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057 BaiduMapKit: 223daf970a1a3e8d87014e5c7310b18b8bdf4114
BMKLocationKit: 097814ef672b1e57e86e6c1968d7892fb78002bf
BRPickerView: 9cc11880ac79c4872d081ccb88f306224c1501d7 BRPickerView: 9cc11880ac79c4872d081ccb88f306224c1501d7
Bugly: 88bc32c0acc6fef7b74d610f0319ee7560d6b9fe
DACircularProgress: 4dd437c0fc3da5161cb289e07ac449493d41db71 DACircularProgress: 4dd437c0fc3da5161cb289e07ac449493d41db71
EZOpenSDK: 355c8ae8e9660a52bbd877898cf46e1f67dc7d8f
EZUIKit: 45134cb675f154a62a5b2a7e0d78014672bfc328
IQKeyboardManager: 2a6e97afdafc7becf0cb17a9a8d795e3a980717f IQKeyboardManager: 2a6e97afdafc7becf0cb17a9a8d795e3a980717f
JKCategories: 5bd36ff325c80652cc2e47b689bfc0e81c563d76 JKCategories: 5bd36ff325c80652cc2e47b689bfc0e81c563d76
JXCategoryView: 778a620f76070d6598fd8d7239991b8da8326170 JXCategoryView: 778a620f76070d6598fd8d7239991b8da8326170
...@@ -268,11 +300,14 @@ SPEC CHECKSUMS: ...@@ -268,11 +300,14 @@ SPEC CHECKSUMS:
MJRefresh: 6afc955813966afb08305477dd7a0d9ad5e79a16 MJRefresh: 6afc955813966afb08305477dd7a0d9ad5e79a16
SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5 SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5
SGQRCode: bf02d60e18d6660a9d75ff1c8b9b467f064f054e SGQRCode: bf02d60e18d6660a9d75ff1c8b9b467f064f054e
SYCSDK: 71174f7ae2e201fb8c698ad5204cc518c1577a57 STCBinder: 439487688e719d92d7690c0b12c0c1dab8ddcb07
SYCSDK: e856fe75c1a9a6553879701fb99ac580a200785b
TTGTagCollectionView: 949030356ed27954f39dd29d78978c0f5c35a745 TTGTagCollectionView: 949030356ed27954f39dd29d78978c0f5c35a745
YTKNetwork: 19be749c30f0512ada07180f4637b4b67bc8ddc2 UMAPM: 5ab988b8bedfd090ee2307cb80530ba79b8ac264
UMCCommon: fcb46c918758f47dbb568421642e195db0d7b641
UMDevice: 053478c4b4d7292f31f0a275c227d3c4007a5571
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849 YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
PODFILE CHECKSUM: 18b04bde28add2b6b321bd8aedba0e35c72818b1 PODFILE CHECKSUM: 464d43ac632d1f761cc0743dd055f05f2a443811
COCOAPODS: 1.11.2 COCOAPODS: 1.11.2
// AFCompatibilityMacros.h
// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ )
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#ifndef AFCompatibilityMacros_h
#define AFCompatibilityMacros_h
#ifdef API_UNAVAILABLE
#define AF_API_UNAVAILABLE(x) API_UNAVAILABLE(x)
#else
#define AF_API_UNAVAILABLE(x)
#endif // API_UNAVAILABLE
#if __has_warning("-Wunguarded-availability-new")
#define AF_CAN_USE_AT_AVAILABLE 1
#else
#define AF_CAN_USE_AT_AVAILABLE 0
#endif
#endif /* AFCompatibilityMacros_h */
// AFNetworkReachabilityManager.h
// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ )
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#import <Foundation/Foundation.h>
#if !TARGET_OS_WATCH
#import <SystemConfiguration/SystemConfiguration.h>
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1,
AFNetworkReachabilityStatusNotReachable = 0,
AFNetworkReachabilityStatusReachableViaWWAN = 1,
AFNetworkReachabilityStatusReachableViaWiFi = 2,
};
NS_ASSUME_NONNULL_BEGIN
/**
`AFNetworkReachabilityManager` monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces.
Reachability can be used to determine background information about why a network operation failed, or to trigger a network operation retrying when a connection is established. It should not be used to prevent a user from initiating a network request, as it's possible that an initial request may be required to establish reachability.
See Apple's Reachability Sample Code ( https://developer.apple.com/library/ios/samplecode/reachability/ )
@warning Instances of `AFNetworkReachabilityManager` must be started with `-startMonitoring` before reachability status can be determined.
*/
@interface AFNetworkReachabilityManager : NSObject
/**
The current network reachability status.
*/
@property (readonly, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus;
/**
Whether or not the network is currently reachable.
*/
@property (readonly, nonatomic, assign, getter = isReachable) BOOL reachable;
/**
Whether or not the network is currently reachable via WWAN.
*/
@property (readonly, nonatomic, assign, getter = isReachableViaWWAN) BOOL reachableViaWWAN;
/**
Whether or not the network is currently reachable via WiFi.
*/
@property (readonly, nonatomic, assign, getter = isReachableViaWiFi) BOOL reachableViaWiFi;
///---------------------
/// @name Initialization
///---------------------
/**
Returns the shared network reachability manager.
*/
+ (instancetype)sharedManager;
/**
Creates and returns a network reachability manager with the default socket address.
@return An initialized network reachability manager, actively monitoring the default socket address.
*/
+ (instancetype)manager;
/**
Creates and returns a network reachability manager for the specified domain.
@param domain The domain used to evaluate network reachability.
@return An initialized network reachability manager, actively monitoring the specified domain.
*/
+ (instancetype)managerForDomain:(NSString *)domain;
/**
Creates and returns a network reachability manager for the socket address.
@param address The socket address (`sockaddr_in6`) used to evaluate network reachability.
@return An initialized network reachability manager, actively monitoring the specified socket address.
*/
+ (instancetype)managerForAddress:(const void *)address;
/**
Initializes an instance of a network reachability manager from the specified reachability object.
@param reachability The reachability object to monitor.
@return An initialized network reachability manager, actively monitoring the specified reachability.
*/
- (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability NS_DESIGNATED_INITIALIZER;
/**
* Unavailable initializer
*/
+ (instancetype)new NS_UNAVAILABLE;
/**
* Unavailable initializer
*/
- (instancetype)init NS_UNAVAILABLE;
///--------------------------------------------------
/// @name Starting & Stopping Reachability Monitoring
///--------------------------------------------------
/**
Starts monitoring for changes in network reachability status.
*/
- (void)startMonitoring;
/**
Stops monitoring for changes in network reachability status.
*/
- (void)stopMonitoring;
///-------------------------------------------------
/// @name Getting Localized Reachability Description
///-------------------------------------------------
/**
Returns a localized string representation of the current network reachability status.
*/
- (NSString *)localizedNetworkReachabilityStatusString;
///---------------------------------------------------
/// @name Setting Network Reachability Change Callback
///---------------------------------------------------
/**
Sets a callback to be executed when the network availability of the `baseURL` host changes.
@param block A block object to be executed when the network availability of the `baseURL` host changes.. This block has no return value and takes a single argument which represents the various reachability states from the device to the `baseURL`.
*/
- (void)setReachabilityStatusChangeBlock:(nullable void (^)(AFNetworkReachabilityStatus status))block;
@end
///----------------
/// @name Constants
///----------------
/**
## Network Reachability
The following constants are provided by `AFNetworkReachabilityManager` as possible network reachability statuses.
enum {
AFNetworkReachabilityStatusUnknown,
AFNetworkReachabilityStatusNotReachable,
AFNetworkReachabilityStatusReachableViaWWAN,
AFNetworkReachabilityStatusReachableViaWiFi,
}
`AFNetworkReachabilityStatusUnknown`
The `baseURL` host reachability is not known.
`AFNetworkReachabilityStatusNotReachable`
The `baseURL` host cannot be reached.
`AFNetworkReachabilityStatusReachableViaWWAN`
The `baseURL` host can be reached via a cellular connection, such as EDGE or GPRS.
`AFNetworkReachabilityStatusReachableViaWiFi`
The `baseURL` host can be reached via a Wi-Fi connection.
### Keys for Notification UserInfo Dictionary
Strings that are used as keys in a `userInfo` dictionary in a network reachability status change notification.
`AFNetworkingReachabilityNotificationStatusItem`
A key in the userInfo dictionary in a `AFNetworkingReachabilityDidChangeNotification` notification.
The corresponding value is an `NSNumber` object representing the `AFNetworkReachabilityStatus` value for the current reachability status.
*/
///--------------------
/// @name Notifications
///--------------------
/**
Posted when network reachability changes.
This notification assigns no notification object. The `userInfo` dictionary contains an `NSNumber` object under the `AFNetworkingReachabilityNotificationStatusItem` key, representing the `AFNetworkReachabilityStatus` value for the current network reachability.
@warning In order for network reachability to be monitored, include the `SystemConfiguration` framework in the active target's "Link Binary With Library" build phase, and add `#import <SystemConfiguration/SystemConfiguration.h>` to the header prefix of the project (`Prefix.pch`).
*/
FOUNDATION_EXPORT NSString * const AFNetworkingReachabilityDidChangeNotification;
FOUNDATION_EXPORT NSString * const AFNetworkingReachabilityNotificationStatusItem;
///--------------------
/// @name Functions
///--------------------
/**
Returns a localized string representation of an `AFNetworkReachabilityStatus` value.
*/
FOUNDATION_EXPORT NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status);
NS_ASSUME_NONNULL_END
#endif
// AFNetworking.h
//
// Copyright (c) 2013 AFNetworking (http://afnetworking.com/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#import <Foundation/Foundation.h>
#import <Availability.h>
#import <TargetConditionals.h>
#ifndef _AFNETWORKING_
#define _AFNETWORKING_
#import "AFURLRequestSerialization.h"
#import "AFURLResponseSerialization.h"
#import "AFSecurityPolicy.h"
#if !TARGET_OS_WATCH
#import "AFNetworkReachabilityManager.h"
#endif
#import "AFURLSessionManager.h"
#import "AFHTTPSessionManager.h"
#endif /* _AFNETWORKING_ */
// AFSecurityPolicy.h
// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ )
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#import <Foundation/Foundation.h>
#import <Security/Security.h>
typedef NS_ENUM(NSUInteger, AFSSLPinningMode) {
AFSSLPinningModeNone,
AFSSLPinningModePublicKey,
AFSSLPinningModeCertificate,
};
/**
`AFSecurityPolicy` evaluates server trust against pinned X.509 certificates and public keys over secure connections.
Adding pinned SSL certificates to your app helps prevent man-in-the-middle attacks and other vulnerabilities. Applications dealing with sensitive customer data or financial information are strongly encouraged to route all communication over an HTTPS connection with SSL pinning configured and enabled.
*/
NS_ASSUME_NONNULL_BEGIN
@interface AFSecurityPolicy : NSObject <NSSecureCoding, NSCopying>
/**
The criteria by which server trust should be evaluated against the pinned SSL certificates. Defaults to `AFSSLPinningModeNone`.
*/
@property (readonly, nonatomic, assign) AFSSLPinningMode SSLPinningMode;
/**
The certificates used to evaluate server trust according to the SSL pinning mode.
By default, this property is set to any (`.cer`) certificates included in the target compiling AFNetworking. Note that if you are using AFNetworking as embedded framework, no certificates will be pinned by default. Use `certificatesInBundle` to load certificates from your target, and then create a new policy by calling `policyWithPinningMode:withPinnedCertificates`.
Note that if pinning is enabled, `evaluateServerTrust:forDomain:` will return true if any pinned certificate matches.
*/
@property (nonatomic, strong, nullable) NSSet <NSData *> *pinnedCertificates;
/**
Whether or not to trust servers with an invalid or expired SSL certificates. Defaults to `NO`.
*/
@property (nonatomic, assign) BOOL allowInvalidCertificates;
/**
Whether or not to validate the domain name in the certificate's CN field. Defaults to `YES`.
*/
@property (nonatomic, assign) BOOL validatesDomainName;
///-----------------------------------------
/// @name Getting Certificates from the Bundle
///-----------------------------------------
/**
Returns any certificates included in the bundle. If you are using AFNetworking as an embedded framework, you must use this method to find the certificates you have included in your app bundle, and use them when creating your security policy by calling `policyWithPinningMode:withPinnedCertificates`.
@return The certificates included in the given bundle.
*/
+ (NSSet <NSData *> *)certificatesInBundle:(NSBundle *)bundle;
///-----------------------------------------
/// @name Getting Specific Security Policies
///-----------------------------------------
/**
Returns the shared default security policy, which does not allow invalid certificates, validates domain name, and does not validate against pinned certificates or public keys.
@return The default security policy.
*/
+ (instancetype)defaultPolicy;
///---------------------
/// @name Initialization
///---------------------
/**
Creates and returns a security policy with the specified pinning mode.
@param pinningMode The SSL pinning mode.
@return A new security policy.
*/
+ (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode;
/**
Creates and returns a security policy with the specified pinning mode.
@param pinningMode The SSL pinning mode.
@param pinnedCertificates The certificates to pin against.
@return A new security policy.
*/
+ (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode withPinnedCertificates:(NSSet <NSData *> *)pinnedCertificates;
///------------------------------
/// @name Evaluating Server Trust
///------------------------------
/**
Whether or not the specified server trust should be accepted, based on the security policy.
This method should be used when responding to an authentication challenge from a server.
@param serverTrust The X.509 certificate trust of the server.
@param domain The domain of serverTrust. If `nil`, the domain will not be validated.
@return Whether or not to trust the server.
*/
- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust
forDomain:(nullable NSString *)domain;
@end
NS_ASSUME_NONNULL_END
///----------------
/// @name Constants
///----------------
/**
## SSL Pinning Modes
The following constants are provided by `AFSSLPinningMode` as possible SSL pinning modes.
enum {
AFSSLPinningModeNone,
AFSSLPinningModePublicKey,
AFSSLPinningModeCertificate,
}
`AFSSLPinningModeNone`
Do not used pinned certificates to validate servers.
`AFSSLPinningModePublicKey`
Validate host certificates against public keys of pinned certificates.
`AFSSLPinningModeCertificate`
Validate host certificates against pinned certificates.
*/
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment