Commit f65f329d authored by lmj_521aiau@163.com's avatar lmj_521aiau@163.com

delete login

parent aaddb54c
Pipeline #411 failed with stages
...@@ -11,7 +11,6 @@ target 'ShorthandMaster' do ...@@ -11,7 +11,6 @@ target 'ShorthandMaster' do
pod 'SnapKit' # 布局 pod 'SnapKit' # 布局
pod 'SwiftyStoreKit' pod 'SwiftyStoreKit'
pod 'MBProgressHUD' pod 'MBProgressHUD'
pod 'CL_ShanYanSDK' #创蓝 一键登录
pod 'PDFGenerator', '~> 3.1' pod 'PDFGenerator', '~> 3.1'
......
Copyright (c) 2018 wanglijun311@gmail.com <CAODA19920605w>
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.
This diff is collapsed.
//
// CLCompleteResult.h
// CL_ShanYanSDK
//
// Created by wanglijun on 2018/10/29.
// Copyright © 2018 wanglijun. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class CLCompleteResult;
typedef void(^CLComplete)(CLCompleteResult * completeResult);
@interface CLCompleteResult : NSObject
@property (nonatomic,assign)NSInteger code;//SDK外层code
@property (nonatomic,nullable,copy)NSString * message;//SDK外层msg
@property (nonatomic,nullable,copy)NSDictionary * data;//SDK外层data
@property (nonatomic,nullable,strong)NSError * error;//Error
//内层
@property (nonatomic,assign)NSInteger innerCode;//SDK内层code
@property (nonatomic,nullable,copy)NSString * innerDesc;//SDK内层msg
#ifdef DEBUG
@property (nonatomic,assign)NSTimeInterval debug_createTime;
#endif
///**
// 是否已经拉起授权页
// default is NO
// */
//@property (nonatomic,assign)BOOL authPagePresented;
@property (nonatomic,assign)NSInteger clShanYanReportTag;
+(instancetype)cl_CompleteWithCode:(NSInteger)code message:(NSString *)message data:(nullable NSDictionary *)data error:(nullable NSError *)error;
-(void)fillPropertyInfo;
@end
NS_ASSUME_NONNULL_END
//
// CLShanYanSDKManager.h
// CL_ShanYanSDK
//
// Created by wanglijun on 2018/10/29.
// Copyright © 2018 wanglijun. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "CLCompleteResult.h"
#import "CLUIConfigure.h"
@protocol CLShanYanSDKManagerDelegate <NSObject>
@optional
/**
* 授权页面协议点击回调
* @param privacyName 协议名称
* @param index 协议位置--0:运营商协议--1:用户协议一--2:用户协议二
* @param telecom 当前运营商类型
*/
-(void)clShanYanSDKManagerWebPrivacyClicked:(NSString *_Nonnull)privacyName privacyIndex:(NSInteger)index currentTelecom:(NSString *_Nullable)telecom DEPRECATED_MSG_ATTRIBUTE("Method deprecated. Use `clShanYanActionListner:code:message:`");
/**
* 授权页面已经显示的回调
* ViewDidAppear
* @param telecom 当前运营商类型
*/
-(void)clShanYanSDKManagerAuthPageAfterViewDidLoad:(UIView *_Nonnull)authPageView currentTelecom:(NSString *_Nullable)telecom ;
/**
* 授权页面将要显示的回调 ViewDidLoad即将全部执行完毕的最后时机
* ViewDidLoad did complete
* @param telecom 当前运营商类型
*/
-(void)clShanYanSDKManagerAuthPageCompleteViewDidLoad:(UIViewController *_Nonnull)authPageVC currentTelecom:(NSString *_Nullable)telecom object:(NSObject*_Nullable)object userInfo:(NSDictionary*_Nullable)userInfo;
/**
* 授权页面将要显示的回调
* ViewWillAppear
* @param telecom 当前运营商类型
*/
-(void)clShanYanSDKManagerAuthPageCompleteViewWillAppear:(UIViewController *_Nonnull)authPageVC currentTelecom:(NSString *_Nullable)telecom object:(NSObject*_Nullable)object userInfo:(NSDictionary*_Nullable)userInfo;
/**
* 授权页vc alloc init
* init,注:此时authPageVC.navigationController为nil
* @param telecom 当前运营商类型
*/
-(void)clShanYanSDKManagerAuthPageCompleteInit:(UIViewController *_Nonnull)authPageVC currentTelecom:(NSString *_Nullable)telecom object:(NSObject*_Nullable)object userInfo:(NSDictionary*_Nullable)userInfo;
/**
* 授权页vc 将要被present
* 将要调用[uiconfigure.viewcontroller present:authPageVC animation:completion:]
* @param telecom 当前运营商类型
*/
-(void)clShanYanSDKManagerAuthPageWillPresent:(UIViewController *_Nonnull)authPageVC currentTelecom:(NSString *_Nullable)telecom object:(NSObject*_Nullable)object userInfo:(NSDictionary*_Nullable)userInfo;
/**
* 统一事件监听方法
* type:事件类型(1,2,3)
* 1:隐私协议点击
* - 同-clShanYanSDKManagerWebPrivacyClicked:privacyIndex:currentTelecom
* code:0,1,2,3(协议页序号),message:协议名_当前运营商类型
* 2:协议勾选框点击
* code:0,1(0为未选中,1为选中)
* 3:"一键登录"按钮点击
* code:0,1(0为协议勾选框未选中,1为选中)
*/
-(void)clShanYanActionListener:(NSInteger)type code:(NSInteger)code message:(NSString *_Nullable)message;
@end
NS_ASSUME_NONNULL_BEGIN
@interface CLShanYanSDKManager : NSObject
/// 设置点击协议代理
/// @param delegate 代理
+ (void)setCLShanYanSDKManagerDelegate:(id<CLShanYanSDKManagerDelegate>)delegate;
/**
初始化
@param appId 闪验后台申请的appId
@param complete 预初始化回调block
*/
+(void)initWithAppId:(NSString *)appId complete:(nullable CLComplete)complete;
///**
// 设置初始化超时 单位:s
// 大于0有效
// 建议4s左右,默认4s
// */
//+ (void)setInitTimeOut:(NSTimeInterval)initTimeOut;
/**
设置预取号超时 单位:s
大于0有效
建议4s左右,默认4s
*/
+ (void)setPreGetPhonenumberTimeOut:(NSTimeInterval)preGetPhoneTimeOut;
/**
* 预取号
* 此调用将有助于提高闪验拉起授权页的速度和成功率
* 建议在一键登录前提前调用此方法,比如调一键登录的vc的viewdidload中
* 不建议在拉起授权页后调用
* ⚠️‼️以 if (completeResult.error == nil) 为判断成功的依据,而非返回码
* ⚠️‼️此方法回调队列为dispatch_get_global_queue(0, 0),回调中如需UI操作,请自行切到主线程
*/
+(void)preGetPhonenumber:(nullable CLComplete)complete;
/**
* 一键登录拉起内置授权页&获取Token
@param clUIConfigure 闪验授权页参数配置
@param complete 回调block
* 回调中如需UI操作,建议自行切到主线程
*/
+(void)quickAuthLoginWithConfigure:(CLUIConfigure *)clUIConfigure
complete:(nonnull CLComplete)complete;
/**
一键登录拉起内置授权页&获取Token( 区分拉起授权页之前和之后的回调)
@param clUIConfigure 闪验授权页参数配置
@param openLoginAuthListener 拉起授权页监听:拉起授权页面成功或失败的回调,拉起成功或失败均触发。当拉起失败时,oneKeyLoginListener不会触发。此回调的内部触发时机是viewDidAppear
@param oneKeyLoginListener 一键登录监听:拉起授权页成功后的后续操作回调,包括点击SDK内置的(非外部自定义)取消登录按钮,以及点击本机号码一键登录的回调。点击授权页自定义按钮不触发此回调
* 回调中如需UI操作,建议自行切到主线程
*/
+(void)quickAuthLoginWithConfigure:(CLUIConfigure *)clUIConfigure
openLoginAuthListener:(CLComplete)openLoginAuthListener
oneKeyLoginListener:(CLComplete)oneKeyLoginListener;
/**
关闭授权页
注:若授权页未拉起或已经提前关闭,此方法调用无效果,complete不触发。内部实现为调用系统方法dismissViewcontroller:Complete
@param flag dismissViewcontroller`Animated, default is YES.
@param completion dismissViewcontroller`completion
*/
+(void)finishAuthControllerCompletion:(void(^_Nullable)(void))completion;
+(void)finishAuthControllerAnimated:(BOOL)flag Completion:(void(^_Nullable)(void))completion;
//设置checkBox勾选状态
+(void)setCheckBoxValue:(BOOL)isSelect;
+(void)hideLoading;
///**************一键登录获取Token***************/
///// 注:此方法回调队列为dispatch_get_global_queue(0, 0),如需UI操作请自行切入主线程
//+(void)loginAuth:(CLComplete)complete;
/**************本机认证(本机号码校验)***************/
+ (void)mobileCheckWithLocalPhoneNumberComplete:(CLComplete)complete;
/**************SDK功能方法***************/
/**
模式控制台日志输出控制(默认关闭)
@param enable 开关参数
*/
+ (void)printConsoleEnable:(BOOL)enable;
/// 获取当前流量卡运营商,结果仅供参考
// CTCC:电信、CMCC:移动、CUCC:联通、UNKNOW:未知
+ (NSString *)getOperatorType;
+ (void)clearScripCache;
/**
禁止日志上报(默认开启)
****此接口需要在初始化之前调用,否则配置不生效****
@param forbidden YES:禁止上报 NO:允许上报
*/
+ (void)forbiddenFullLogReport:(BOOL)forbidden;
+(void)sdkInit:(NSString *)appId complete:(nullable CLComplete)complete;
+ (BOOL)checkAuthEnable;
/**
* 当前SDK版本号
*/
+ (NSString *)clShanYanSDKVersion;
@end
NS_ASSUME_NONNULL_END
//
// CL_ShanYanSDK.h
// CL_ShanYanSDK
//
// Created by wanglijun on 2018/10/29.
// Copyright © 2018 wanglijun. All rights reserved.
//
#import <UIKit/UIKit.h>
//! Project version number for CL_ShanYanSDK.
FOUNDATION_EXPORT double CL_ShanYanSDKVersionNumber;
//! Project version string for CL_ShanYanSDK.
FOUNDATION_EXPORT const unsigned char CL_ShanYanSDKVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <CL_ShanYanSDK/PublicHeader.h>
#import <CL_ShanYanSDK/CLShanYanSDKManager.h>
#import <CL_ShanYanSDK/CLCompleteResult.h>
framework module CL_ShanYanSDK {
umbrella header "CL_ShanYanSDK.h"
export *
module * { export * }
}
//
// EAccountCTEConfig.h
// EAccountApiSDK
//
// Created by lvzhzh on 2019/12/4.
// Copyright © 2019 21CN. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface EAccountCTEConfig : NSObject
@property (nonatomic, copy) NSString *timestampDomain;
@property (nonatomic, copy) NSString *preLoginDomain;
@property (nonatomic, copy) NSString *uploadLogDomain;
- (instancetype)initWithDefaultConfig;
@end
NS_ASSUME_NONNULL_END
//
// EAccountJSEventHandler.h
// EAccountApiSDK
//
// Created by Reticence Lee on 2020/6/9.
// Copyright © 2020 21CN. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <webkit/webkit.h>
static NSString * const EAccountJSEventName = @"EAccountJsBridge";
NS_ASSUME_NONNULL_BEGIN
@protocol EAccountJSEventDelegate <NSObject>
@required
- (void)EAccountJSCallBackWithScript:(NSString *)jScript;
@end
@interface EAccountJSEventHandler : NSObject<WKScriptMessageHandler>
@property (nonatomic, strong) WKWebView *wkWebView;
@property (nonatomic, weak) id <EAccountJSEventDelegate> delegate;
- (void)EAccountHandleJsEvents:(WKScriptMessage *)message credt:(id)credt;
@end
NS_ASSUME_NONNULL_END
//
// EAccountPreLoginConfigModel.h
// EAccountApiSDK
//
// Created by Reticence Lee on 2019/12/12.
// Copyright © 2019 21CN. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface EAccountPreLoginConfigModel : NSObject
/**
资源获取超时时间 默认6.0s
*/
@property (nonatomic, assign) NSTimeInterval timeoutIntervalForResource;
/**
连接超时时间 默认6.0s
*/
@property (nonatomic, assign) NSTimeInterval connectTimeoutInterval;
/**
总超时时间 默认8.0s ,应设置比其他超时时间长
*/
@property (nonatomic, assign) NSTimeInterval totalTimeoutInterval;
#pragma -mark 初始化方法
/**
初始化方法 请调用该方法进行初始化
*/
- (instancetype)initWithDefaultConfig;
@end
NS_ASSUME_NONNULL_END
//
// EAccountSDK.h
// EAccountSDKNetwork
//
// Created by thy on 2018/6/23.
// Copyright © 2018年 21CN. All rights reserved.
//
/**
定制版SDK v3.8.3 20200702 Xcode11.3打包
*/
#import <Foundation/Foundation.h>
#import "EAccountPreLoginConfigModel.h"
#import "EAccountCTEConfig.h"
/**
声明一个block
@param resultDic 网络返回的data的解析结果
*/
typedef void (^successHandler) (NSDictionary * _Nonnull resultDic);
/**
声明一个block
@param error 网络返回的错误或者其它错误
*/
typedef void (^failureHandler) (NSError * _Nonnull error);
@interface EAccountSDK : NSObject
/**
初始化SDK
@param appKey 接入方在账号平台领取的appId
@param appSecrect 接入方在账号平台领取的appSecrect
*/
+ (void)initWithSelfKey:(NSString * _Nonnull)appKey
appSecret:(NSString * _Nonnull)appSecrect;
/**
*@description 预登录接口
@param model 接口超时时间配置
*/
+ (void)requestPRELogin:(EAccountPreLoginConfigModel * _Nonnull)model
completion:(nonnull successHandler)completion
failure:(nonnull failureHandler)fail;
/**
控制台日志输出控制(默认关闭)
@param enable 开关参数
*/
+ (void)printConsoleEnable:(BOOL)enable;
/**
@description 获取当前流量卡运营商信息
@return NSString "CT" 中国电信 / "CM" 中国移动 / "CU" 中国联联通 / "UN" 未知
*/
+ (NSString *)getOperatorType;
/**
@description 是否开启蜂窝数据
*/
+ (BOOL)isCellularDataEnable;
/**
@description 预登录接口 已废弃
@param apiTimeoutInterval 接口超时时间,传0或者小于0的数,则默认为3s
*/
+ (void)requestPreLogin:(NSTimeInterval)apiTimeoutInterval
completion:(nonnull successHandler)completion
failure:(nonnull failureHandler)fail DEPRECATED_MSG_ATTRIBUTE("Please use `requestPRELogin:completion:failure:` instead");
/**
@description 预登录接口 已废弃
@param apiTimeoutInterval 接口超时时间,传0或者小于0的数,则默认为3s
*/
+ (void)getMobileCodeWithTimeout:(NSTimeInterval)apiTimeoutInterval
completion:(nonnull successHandler)completion
failure:(nonnull failureHandler)fail DEPRECATED_MSG_ATTRIBUTE("Please use `requestPreLogin:completion:failure:` instead");
+ (void)setDomainName:(EAccountCTEConfig * _Nonnull)config;
@end
//
// ZOAuthManager 能力接入管理者-提供加解密方法
// OAuthSDKApp
//
// Created by zhangQY on 2019/5/13.
// Copyright © 2019 com.zzx.sdk.ios.test. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface ZOAuthManager : NSObject
/**
* 是否使用测试环境
*
* @param isDebug true/false
*/
+ (void) setDebug:(BOOL) isDebug ;
/**
* 是否使用SHA256
*
* @param schemeB true/false (默认是NO)
*/
+ (void) useSchemeBInSecurityModule:(BOOL)schemeB;
//设置UA
+ (void)setUAString:(NSString *)UAString;
//删除保存在本地的UA
+ (void)removeUAString;
//获取SDK版本信息
+ (NSString *)getVersionInfo;
@end
//
// ZTOAuthManager 电信能力接入管理者
// OAuthSDKApp
//
// Created by zhangQY on 2019/5/13.
// Copyright © 2019 com.zzx.sdk.ios.test. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "ZOAuthManager.h"
@interface ZTOAuthManager : ZOAuthManager
/**
* 获取电信能力接入单例对象
*/
+ (instancetype)getInstance;
/**
* 初始化-电信
*/
- (void) init:(NSString*) apiKey pubKey:(NSString*)pubKey;
/**
* 取号-电信
*/
- (void) login:(double)timeout resultListener:(void (^)(NSDictionary *data))listener;
/**
* 清除缓存 ***注意***:SDK取号默认会使用缓存机制,请及时清理缓存;
*/
+ (BOOL)clearCTLoginCache;
/**
不推荐使用
中断取号登录流程(按需使用)
取消取号请求
*/
- (void)tryToInterruptTheCTLoginFlow;
/**
* 认证-电信 ***注意***:在不手动关闭缓存的时,请及时调用清除缓存方法;
*/
- (void) oauth:(double)timeout resultListener:(void (^)(NSDictionary *data))listener;
/** 电信认证:是否关闭缓存策略(默认开启)
请注意及时调用clearOauthCache方法清除缓存;
手动关闭后,不必调用clearOauthCache;
@param yesOrNo 是否关闭电信认证缓存策略
*/
- (void) closeCTOauthCachingStrategy:(BOOL)yesOrNo;
/**
电信认证:
清除电信认证缓存策略中产生的缓存数据;
在手动关闭缓存策略时,不必调用;
*/
+ (BOOL) clearCTOauthCache;
/**
* (测试接口)获取登录/认证结果
*/
- (void) gmbc:(NSString*)accessCode mobile:(NSString *)mobile listener:(void (^)(NSDictionary *data))listener;
//释放SDK内部单例对象 不推荐使用
-(void)ZOAURelease;
@end
//
// ZUOAuthManager 联通能力接入管理者
// OAuthSDKApp
//
// Created by zhangQY on 2019/5/13.
// Copyright © 2019 com.zzx.sdk.ios.test. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "ZOAuthManager.h"
@interface ZUOAuthManager : ZOAuthManager
/**
* 获取联通能力接入单例对象
*/
+ (instancetype)getInstance;
/**
* 初始化-联通
*/
- (void) init:(NSString*) apiKey pubKey:(NSString*)pubKey;
/**
* 取号-联通
*/
- (void) login:(double)timeout resultListener:(void (^)(NSDictionary *data))listener;
/**
* 清除缓存 ***注意***:SDK取号默认会使用缓存机制,请及时清理缓存;
*/
+ (BOOL)clearCULoginCache;
/**
不推荐使用
中断取号登录流程(按需使用)
取消取号请求
*/
- (void)tryToInterruptTheCULoginFlow;
/**
* 认证-联通
注意***:在不手动关闭缓存的时,请及时调用清除缓存方法
*/
- (void) oauth:(double)timeout resultListener:(void (^)(NSDictionary *data))listener;
/** 联通认证:是否关闭缓存策略(默认开启)
请注意及时调用clearOauthCache方法清除缓存;
手动关闭后,不必调用clearOauthCache;
@param yesOrNo 是否关闭联通认证缓存策略
*/
- (void) closeCUOauthCachingStrategy:(BOOL)yesOrNo;
/**
联通认证:
清除联通认证缓存策略中产生的缓存数据;
在手动关闭缓存策略时,不必调用;
*/
+ (BOOL) clearCUOauthCache;
/**
* 获取登录/认证结果
* 测试接口
*/
- (void) gmbc:(NSString*)accessCode mobile:(NSString *)mobile listener:(void (^)(NSDictionary *data))listener;
/**
* 测试接口
*/
- (void) gmbc:(NSString*)accessCode listener:(void (^)(NSDictionary *data))listener;
//释放SDK内部单例对象 不推荐使用
-(void)ZOAURelease;
@end
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Headers/ZOAuthManager.h</key>
<data>
Ienx6rvM1g1+f1s7ZICmHjFTWK0=
</data>
<key>Headers/ZTOAuthManager.h</key>
<data>
Yg0RW8IZws/IkK5JfNHdJdauFUI=
</data>
<key>Headers/ZUOAuthManager.h</key>
<data>
3hNIJzGdPh0t6PJs++XFiwpk2r8=
</data>
<key>Info.plist</key>
<data>
O5k78mz41m5mzSbFHSh0LWgrmSc=
</data>
</dict>
<key>files2</key>
<dict>
<key>Headers/ZOAuthManager.h</key>
<dict>
<key>hash</key>
<data>
Ienx6rvM1g1+f1s7ZICmHjFTWK0=
</data>
<key>hash2</key>
<data>
q7QhcCkG76qNNTTXIdCJVpT3OaL/Zf4INFSddKsq2jA=
</data>
</dict>
<key>Headers/ZTOAuthManager.h</key>
<dict>
<key>hash</key>
<data>
Yg0RW8IZws/IkK5JfNHdJdauFUI=
</data>
<key>hash2</key>
<data>
gYAD75XQd+0Hpf0wLqki0J7t4JstOCS8Kp7HwSQV5/U=
</data>
</dict>
<key>Headers/ZUOAuthManager.h</key>
<dict>
<key>hash</key>
<data>
3hNIJzGdPh0t6PJs++XFiwpk2r8=
</data>
<key>hash2</key>
<data>
GUGahV21wr96RQP1KsRY07Em5BftMx8h5+FWowFFuX8=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>
//
// TYRZSDK.h
// TYRZSDK
//
#import "UASDKLogin.h"
#import "UASDKErrorCode.h"
#import "UACustomModel.h"
//
// UACustomModel.h
// Test
//
// Created by issuser on 2018/5/18.
// Copyright © 2018年 林涛. All rights reserved.
//
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSUInteger, UAPresentationDirection){
UAPresentationDirectionBottom = 0, //底部 present默认效果
UAPresentationDirectionRight, //右边 导航栏效果
UAPresentationDirectionTop, //上面
UAPresentationDirectionLeft, //左边
};
@interface UACustomModel : NSObject
/**
版本注意事项:
授权页面的各个控件的Y轴默认值都是以375*667屏幕为基准 系数 : 当前屏幕高度/667
1、当设置Y轴并有效时 偏移量OffsetY属于相对导航栏的绝对Y值
2、(负数且超出当前屏幕无效)为保证各个屏幕适配,请自行设置好Y轴在屏幕上的比例(推荐:当前屏幕高度/667)
*/
#pragma mark -----------------------------授权页面----------------------------------
#pragma mark VC必传属性
/**1、当前VC,注意:要用一键登录这个值必传*/
@property (nonatomic,weak) UIViewController *currentVC;
#pragma mark 自定义控件
/**2、授权界面自定义控件View的Block*/
@property (nonatomic,copy) void(^authViewBlock)(UIView *customView ,CGRect logoFrame, CGRect numberFrame, CGRect sloganFrame ,CGRect loginBtnFrame, CGRect checkBoxFrame , CGRect privacyFrame);
/**3、 授权页面推出的动画效果:参考UAPresentationDirection枚举*/
@property (nonatomic, assign) UAPresentationDirection presentType;
/**4、授权界面背景图片*/
@property (nonatomic,strong) UIImage *authPageBackgroundImage;
#pragma mark 导航栏
/**5、导航栏颜色*/
@property (nonatomic,strong) UIColor *navColor;
/**6、状态栏着色样式(隐藏导航栏无效)*/
@property (nonatomic,assign) UIBarStyle barStyle;
/**7、状态栏着色样式(隐藏导航栏时设置)*/
@property (nonatomic, assign) UIStatusBarStyle statusBarStyle;
/**8、导航栏标题*/
@property (nonatomic,strong) NSAttributedString *navText;
/**9、导航返回图标(尺寸根据图片大小)*/
@property (nonatomic,strong) UIImage *navReturnImg;
/**10、导航栏自定义(适配全屏图片)*/
@property (nonatomic,assign) BOOL navCustom;
/**11、导航栏右侧自定义控件(导航栏传 UIBarButtonItem对象 自定义传非UIBarButtonItem )*/
@property (nonatomic,strong) id navControl;
#pragma mark LOGO图片设置
/**12、LOGO图片*/
@property (nonatomic,strong) UIImage *logoImg;
/**13、LOGO图片宽度*/
@property (nonatomic,assign) CGFloat logoWidth;
/**14、LOGO图片高度*/
@property (nonatomic,assign) CGFloat logoHeight;
/**15、LOGO图片偏移量*/
@property (nonatomic,strong) NSNumber * logoOffsetY;
/**16、LOGO图片隐藏*/
@property (nonatomic,assign) BOOL logoHidden;
#pragma mark 登录按钮
/**17、登录按钮文本*/
@property (nonatomic,strong) NSAttributedString *logBtnText;
/**18、登录按钮Y偏移量*/
@property (nonatomic,strong) NSNumber * logBtnOffsetY;
/**19、登录按钮的左右边距 注意:按钮呈现的宽必须大于屏幕的一半*/
@property (nonatomic, strong) NSNumber *logBtnOriginX;
/**20、登录按钮高h 注意:必须大于40*/
@property (nonatomic, assign) CGFloat logBtnHeight;
/**21、登录按钮背景图片添加到数组(顺序如下)
@[激活状态的图片,失效状态的图片,高亮状态的图片]
*/
@property (nonatomic,strong) NSArray *logBtnImgs;
#pragma mark 号码框设置
/**22、手机号码(内容设置无效)*/
@property (nonatomic,strong) NSAttributedString *numberText;
/**23、号码栏X偏移量*/
@property (nonatomic,strong) NSNumber * numberOffsetX;
/**24、号码栏Y偏移量*/
@property (nonatomic,strong) NSNumber * numberOffsetY;
#pragma mark 切换账号
/**25、隐藏切换账号按钮*/
@property (nonatomic,assign) BOOL swithAccHidden;
/**26、切换账号*/
@property (nonatomic,strong) NSAttributedString *switchAccText;
/**27、设置切换账号相对于标题栏下边缘y偏移*/
@property (nonatomic,strong) NSNumber *switchOffsetY;
#pragma mark 隐私条款
/**28、复选框未选中时图片*/
@property (nonatomic,strong) UIImage *uncheckedImg;
/**29、复选框选中时图片*/
@property (nonatomic,strong) UIImage *checkedImg;
/**30、复选框大小(只能正方形)必须大于12*/
@property (nonatomic,assign) NSNumber *checkboxWH;
/**31、隐私条款(包括check框)的左右边距*/
@property (nonatomic, strong) NSNumber *appPrivacyOriginX;
/**32、隐私的内容模板:
1、全句可自定义但必须保留"&&默认&&"字段表明SDK默认协议,否则设置不生效
2、协议1和协议2的名称要与数组 str1 和 str2 ... 里的名称 一样
3、必设置项(参考SDK的demo)
appPrivacieDemo设置内容:登录并同意&&默认&&和&&百度协议&&、&&京东协议2&&登录并支持一键登录
展示: 登录并同意中国移动条款协议和百度协议1、京东协议2登录并支持一键登录
*/
@property (nonatomic, copy) NSAttributedString *appPrivacyDemo;
/**33、隐私条款文字内容的方向:默认是居左
*/
@property (nonatomic,assign) NSTextAlignment appPrivacyAlignment;
/**34、隐私条款:数组(务必按顺序)要设置NSLinkAttributeName属性可以跳转协议
对象举例:
NSAttributedString *str1 = [[NSAttributedString alloc]initWithString:@"百度协议" attributes:@{NSLinkAttributeName:@"https://www.baidu.com"}];
@[str1,,str2,str3,...]
*/
@property (nonatomic,strong) NSArray <NSAttributedString *> *appPrivacy;
/**35、隐私条款名称颜色(协议)统一设置
*/
@property (nonatomic,strong) UIColor *privacyColor;
/**36、隐私条款Y偏移量(注:此属性为与屏幕底部的距离)*/
@property (nonatomic,strong) NSNumber * privacyOffsetY;
/**37、隐私条款check框默认状态 默认:NO */
@property (nonatomic,assign) BOOL privacyState;
/**38、隐私条款默认协议是否开启书名号
*/
@property (nonatomic, assign) BOOL privacySymbol;
#pragma mark 底部标识Title
/**39、slogan偏移量Y*/
@property (nonatomic,strong) NSNumber * sloganOffsetY;
/**40、slogan文字S*/
@property (nonatomic,strong) NSAttributedString *sloganText;
#pragma mark -----------------------------------短信页面-----------------------------------
/**41、SDK短信验证码开关
(默认为NO,不使用SDK提供的短验直接回调 ,YES:使用SDK提供的短验)
为NO时,授权界面的切换账号按钮直接返回字典:200060 和 导航栏 “NavigationController”*/
@property (nonatomic,assign) BOOL SMSAuthOn;
/**42、短验页面导航栏标题*/
@property (nonatomic,strong) NSAttributedString *SMSNavText;
/**43、登录按钮文本内容*/
@property (nonatomic,strong) NSAttributedString *SMSLogBtnText;
/**44、短验登录按钮图片请按顺序添加到数组(顺序如下)
@[激活状态的图片,失效状态的图片,高亮状态的图片]
*/
@property (nonatomic,strong) NSArray *SMSLogBtnImgs;
/**45、获取验证码按钮图片请按顺序添加到数组(顺序如下)
@[激活状态的图片,失效状态的图片]
*/
@property (nonatomic,strong) NSArray *SMSGetCodeBtnImgs;
/**46、短验界面背景*/
@property (nonatomic,strong) UIImage *SMSBackgroundImage;
#pragma mark -----------------------------------协议页面-----------------------------------
/**47、web协议界面导航返回图标(尺寸根据图片大小)*/
@property (nonatomic,strong) UIImage *webNavReturnImg;
#pragma mark ----------------------弹窗:(温馨提示:由于受屏幕影响,小屏幕(5S,5E,5)需要改动字体和另自适应和布局)--------------------
#pragma mark --------------------------窗口模式1(居中弹窗) 弹框模式需要配合自定义坐标属性使用可自适应-----------------------------------
//务必在设置控件位置时,自行查看各个机型模拟器是否正常
/**温馨提示:
窗口1模式下,自动隐藏系统导航栏,并生成一个UILabel 其frame为(0,0,窗口宽*scaleW,44*scaleW)
返回按钮的frame查看51属性备注,添加在UILabel的center.y位置
*/
/**48、窗口模式开关*/
@property (nonatomic,assign) BOOL authWindow;
/**49、窗口模式推出动画
UIModalTransitionStyleCoverVertical, 下推
UIModalTransitionStyleFlipHorizontal,翻转
UIModalTransitionStyleCrossDissolve, 淡出
*/
@property (nonatomic,assign) UIModalTransitionStyle modalTransitionStyle;
/**50、自定义窗口弧度 默认是10*/
@property (nonatomic,assign) CGFloat cornerRadius;
/**51、自定义窗口宽-缩放系数(屏幕宽乘以系数) 默认是0.8*/
@property (nonatomic,assign) CGFloat scaleW;
/**52、自定义窗口高-缩放系数(屏幕高乘以系数) 默认是0.5*/
@property (nonatomic,assign) CGFloat scaleH;
/**53、返回按钮x偏移(负数左边偏移,正数右边偏移) 只有隐藏导航栏时有效 默认frame为 (20,居中,20 * 系数scaleW,20 * scaleW) */
@property (nonatomic,assign) CGRect navReturnImgFrame;
#pragma mark -----------窗口模式2(边缘弹窗) UIPresentationController(可配合UAPresentationDirection动画使用)-----------
/**54、此属性支持半弹框方式与authWindow不同(此方式为UIPresentationController)设置后自动隐藏切换按钮*/
@property (nonatomic,assign) CGSize controllerSize;
/**55、授权界面支持的方向,横屏;竖屏*/
@property (nonatomic, assign) UIInterfaceOrientation faceOrientation;
@end
//
// UASDKErrorCode.h
// TYRZSDK
//
// Created by 谢鸿标 on 2018/10/24.
// Copyright © 2018 com.CMCC.iOS. All rights reserved.
//
#ifndef UASDKErrorCode_h
#define UASDKErrorCode_h
#import <Foundation/Foundation.h>
typedef NSString *UASDKErrorCode;
//成功
static UASDKErrorCode const UASDKErrorCodeSuccess = @"103000";
//用户取消登录
static UASDKErrorCode const UASDKErrorCodeUserCancelAuth = @"200020";
//数据解析异常
static UASDKErrorCode const UASDKErrorCodeProcessException = @"200021";
//无网络
static UASDKErrorCode const UASDKErrorCodeNoNetwork = @"200022";
//请求超时
static UASDKErrorCode const UASDKErrorCodeRequestTimeout = @"200023";
//未知错误
static UASDKErrorCode const UASDKErrorCodeUnknownError = @"200025";
//蜂窝未开启或不稳定
static UASDKErrorCode const UASDKErrorCodeNonCellularNetwork = @"200027";
//网络请求出错(HTTP Code 非200)
static UASDKErrorCode const UASDKErrorCodeRequestError = @"200028";
//非移动网关重定向失败
static UASDKErrorCode const UASDKErrorCodeWAPRedirectFailed = @"200038";
//无SIM卡
static UASDKErrorCode const UASDKErrorCodePhoneWithoutSIM = @"200048";
//Socket创建或发送接收数据失败
static UASDKErrorCode const UASDKErrorCodeSocketError = @"200050";
//用户点击了“账号切换”按钮(自定义短信页面customSMS为YES才会返回)
static UASDKErrorCode const UASDKErrorCodeCustomSMSVC = @"200060";
//显示登录"授权页面"被拦截(hooked)
static UASDKErrorCode const UASDKErrorCodeAutoVCisHooked = @"200061";
////预取号不支持联通
//static UASDKErrorCode const UASDKErrorCodeNOSupportUnicom = @"200062";
////预取号不支持电信
//static UASDKErrorCode const UASDKErrorCodeNOSupportTelecom = @"200063";
//服务端返回数据异常
static UASDKErrorCode const UASDKErrorCodeExceptionData = @"200064";
//CA根证书校验失败
static UASDKErrorCode const UASDKErrorCodeCAAuthFailed = @"200072";
//本机号码校验仅支持移动手机号
static UASDKErrorCode const UASDKErrorCodeGetMoblieOnlyCMCC = @"200080";
//服务器繁忙
static UASDKErrorCode const UASDKErrorCodeServerBusy = @"200082";
//ppLocation为空
static UASDKErrorCode const UASDKErrorCodeLocationError = @"200086";
//监听授权界面成功弹起
static UASDKErrorCode const UASDKSuccessGetAuthVCCode = @"200087";
//SDK正在处理
static UASDKErrorCode const UASDKErrorCodeHandling = @"200089";
/**
获取错误码描述
@param code 错误码
@return 返回对应描述
*/
FOUNDATION_EXPORT NSString *UASDKErrorDescription(UASDKErrorCode code);
#endif /* UASDKErrorCode_h */
//
// UASDKLogin.h
// TYRZSDK
//
// Created by 谢鸿标 on 2018/10/11.
// Copyright © 2018 com.CMCC.iOS. All rights reserved.
//
#import <UIKit/UIKit.h>
#define UASDKVERSION @"quick_login_iOS_5.3.12"
@class UACustomModel;
NS_ASSUME_NONNULL_BEGIN
@interface UASDKLogin : NSObject
/**
SDK登录单例管理
*/
@property (nonatomic,class,readonly) UASDKLogin *shareLogin;
/**
网络类型及运营商(双卡下,获取上网卡的运营商)
"carrier" 运营商: 0.未知 / 1.中国移动 / 2.中国联通 / 3.中国电信
"networkType" 网络类型: 0.无网络/ 1.数据流量 / 2.wifi / 3.数据+wifi
@return @{NSString : NSNumber}
*/
@property (nonatomic,readonly) NSDictionary<NSString *, NSNumber *> *networkInfo;
/**
初始化SDK参数
@param appId 申请能力平台成功后,分配的appId
@param appKey 申请能力平台成功后,分配的appKey
*/
- (void)registerAppId:(NSString *)appId AppKey:(NSString *)appKey;
/**
设置超时
@param timeout 超时
*/
- (void)setTimeoutInterval:(NSTimeInterval)timeout;
/**
取号
@param completion 回调
*/
- (void)getPhoneNumberCompletion:(void(^)(NSDictionary *_Nonnull result))completion;
/**
一键登录,获取到的token,可传给移动认证服务端获取完整手机号
@param model 需要配置的Model属性(控制器必传)
@param completion 回调
*/
- (void)getAuthorizationWithModel:(UACustomModel *)model complete:(void (^)(id sender))completion;
/**
获取本机号码校验token
@param completion 回调
*/
- (void)mobileAuthCompletion:(void(^)(NSDictionary *_Nonnull result))completion;
/**
删除取号缓存数据 + 重置网络开关(自定义按钮事件里dimiss授权界面需调用)
@return YES:有缓存已执行删除操作,NO:无缓存不执行删除操作
*/
- (BOOL)delectScrip;
/**
控制台日志输出控制(默认关闭)
@param enable 开关参数
*/
- (void)printConsoleEnable:(BOOL)enable;
/**
关闭授权界面
@param flag 动画开关
@param completion 回调参数
*/
- (void)ua_dismissViewControllerAnimated: (BOOL)flag completion: (void (^ __nullable)(void))completion;
@end
NS_ASSUME_NONNULL_END
framework module TYRZSDK {
umbrella header "TYRZSDK.h"
export *
module * { export * }
}
//
// UniAuthHelper.h
// account_verify_sdk_core
//
// Created by zhuof on 2018/3/8.
// Copyright © 2018年 xiaowo. All rights reserved.
// 4.1.3IR01B0320 优化token获取流程。 减少交互。 使用者自行缓存accessCode(具备有效期)。
// 4.3.0IR01B0615 socket通讯优化(GCD方案)
// 4.4.0IR01B0715 1. 预取号流程修改 2.增加读取idfa的功能 3.降低打点频率。
#import <Foundation/Foundation.h>
typedef void (^UniResultListener)(NSDictionary *data);
@interface UniAuthHelper : NSObject
+(UniAuthHelper *) getInstance;
/*
sdk初始化,每个app只能执行一次初始化调用。
注意:某些使用者尝试在同一个app中使用多个appid初始化sdk,这可能导致未知隐患发生。
*/
-(void) initWithAppId:(NSString*) appId appSecret:(NSString*) appSecret;
/*
预取号接口。
timeout:超时时间,单位秒。
listener:回调接口
成功调用有以下前提:
1. 需要保证手机终端有联通sim卡,并且保证联通数据网络是开启状态。如果没有联通数据网络,将返回“获取鉴权信息失败”
2. 手机本地时间正确
3. 如果手机数据网络开启,但是预取号失败,可以尝试手动飞行模式开关一下,尝试让数据网络恢复正常。
预取号获得的accessCode具有效期,请在有效期内使用accesscode换取用户信息。
*/
-(void) getAccessCode:(double)timeout listener:(UniResultListener) listener;
-(void) mobileAuth:(double)timeout listener:(UniResultListener) listener;
-(void) printConsoleEnable:(BOOL)enable;
-(NSString*) getSdkVersion;
@end
//
// account_login_sdk_noui_core.h
// account_login_sdk_noui_core
//
// Created by zhuof on 2018/9/25.
// Copyright © 2018年 xiaowo. All rights reserved.
//
#import <UIKit/UIKit.h>
//! Project version number for account_login_sdk_noui_core.
FOUNDATION_EXPORT double account_login_sdk_noui_coreVersionNumber;
//! Project version string for account_login_sdk_noui_core.
FOUNDATION_EXPORT const unsigned char account_login_sdk_noui_coreVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <account_login_sdk_noui_core/PublicHeader.h>
//#import <account_login_sdk_noui_core/UniAuthHelper.h>
#import "UniAuthHelper.h"
framework module account_login_sdk_noui_core {
umbrella header "account_login_sdk_noui_core.h"
export *
module * { export * }
}
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1100"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForAnalyzing = "YES"
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6CEA38EC2E63D96E7179449F1279A773"
BuildableName = "CL_ShanYanSDK"
BlueprintName = "CL_ShanYanSDK"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
buildConfiguration = "Debug"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
...@@ -11,61 +11,54 @@ ...@@ -11,61 +11,54 @@
<key>orderHint</key> <key>orderHint</key>
<integer>0</integer> <integer>0</integer>
</dict> </dict>
<key>CL_ShanYanSDK.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>1</integer>
</dict>
<key>MBProgressHUD.xcscheme</key> <key>MBProgressHUD.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>3</integer> <integer>2</integer>
</dict> </dict>
<key>Masonry.xcscheme</key> <key>Masonry.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>2</integer> <integer>1</integer>
</dict> </dict>
<key>PDFGenerator.xcscheme</key> <key>PDFGenerator.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>4</integer> <integer>3</integer>
</dict> </dict>
<key>Pods-ShorthandMaster.xcscheme</key> <key>Pods-ShorthandMaster.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>5</integer> <integer>4</integer>
</dict> </dict>
<key>SnapKit.xcscheme</key> <key>SnapKit.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>6</integer> <integer>5</integer>
</dict> </dict>
<key>SwiftyJSON.xcscheme</key> <key>SwiftyJSON.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>7</integer> <integer>6</integer>
</dict> </dict>
<key>SwiftyStoreKit.xcscheme</key> <key>SwiftyStoreKit.xcscheme</key>
<dict> <dict>
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>8</integer> <integer>7</integer>
</dict> </dict>
</dict> </dict>
<key>SuppressBuildableAutocreation</key> <key>SuppressBuildableAutocreation</key>
......
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CL_ShanYanSDK
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/CL_ShanYanSDK/framework" $(inherited) $(PODS_ROOT)/CL_ShanYanSDK
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_LDFLAGS = $(inherited) -ObjC -undefined dynamic_lookup -l"c++.1"
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/CL_ShanYanSDK
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CL_ShanYanSDK
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/CL_ShanYanSDK/framework" $(inherited) $(PODS_ROOT)/CL_ShanYanSDK
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_LDFLAGS = $(inherited) -ObjC -undefined dynamic_lookup -l"c++.1"
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/CL_ShanYanSDK
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
...@@ -24,29 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ...@@ -24,29 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
## CL_ShanYanSDK
Copyright (c) 2018 wanglijun311@gmail.com <CAODA19920605w>
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.
## MBProgressHUD ## MBProgressHUD
Copyright © 2009-2020 Matej Bukovinski Copyright © 2009-2020 Matej Bukovinski
......
...@@ -41,35 +41,6 @@ THE SOFTWARE. ...@@ -41,35 +41,6 @@ THE SOFTWARE.
<key>Type</key> <key>Type</key>
<string>PSGroupSpecifier</string> <string>PSGroupSpecifier</string>
</dict> </dict>
<dict>
<key>FooterText</key>
<string>Copyright (c) 2018 wanglijun311@gmail.com &lt;CAODA19920605w&gt;
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.
</string>
<key>License</key>
<string>LGPL</string>
<key>Title</key>
<string>CL_ShanYanSDK</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict> <dict>
<key>FooterText</key> <key>FooterText</key>
<string>Copyright © 2009-2020 Matej Bukovinski <string>Copyright © 2009-2020 Matej Bukovinski
......
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/PDFGenerator" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit" "${PODS_ROOT}/CL_ShanYanSDK/framework" FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/PDFGenerator" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PDFGenerator/PDFGenerator.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers" HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PDFGenerator/PDFGenerator.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++.1" -framework "Alamofire" -framework "CL_ShanYanSDK" -framework "CoreGraphics" -framework "EAccountApiSDK" -framework "Foundation" -framework "MBProgressHUD" -framework "Masonry" -framework "OAuth" -framework "PDFGenerator" -framework "QuartzCore" -framework "SnapKit" -framework "SwiftyJSON" -framework "SwiftyStoreKit" -framework "TYRZSDK" -framework "UIKit" -framework "WebKit" -framework "account_login_sdk_noui_core" OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "MBProgressHUD" -framework "Masonry" -framework "PDFGenerator" -framework "QuartzCore" -framework "SnapKit" -framework "SwiftyJSON" -framework "SwiftyStoreKit" -framework "UIKit" -framework "WebKit"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR} PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
......
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/PDFGenerator" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit" "${PODS_ROOT}/CL_ShanYanSDK/framework" FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/PDFGenerator" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PDFGenerator/PDFGenerator.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers" HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PDFGenerator/PDFGenerator.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyJSON/SwiftyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyStoreKit/SwiftyStoreKit.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++.1" -framework "Alamofire" -framework "CL_ShanYanSDK" -framework "CoreGraphics" -framework "EAccountApiSDK" -framework "Foundation" -framework "MBProgressHUD" -framework "Masonry" -framework "OAuth" -framework "PDFGenerator" -framework "QuartzCore" -framework "SnapKit" -framework "SwiftyJSON" -framework "SwiftyStoreKit" -framework "TYRZSDK" -framework "UIKit" -framework "WebKit" -framework "account_login_sdk_noui_core" OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "MBProgressHUD" -framework "Masonry" -framework "PDFGenerator" -framework "QuartzCore" -framework "SnapKit" -framework "SwiftyJSON" -framework "SwiftyStoreKit" -framework "UIKit" -framework "WebKit"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR} PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<key>ShorthandMaster.xcscheme_^#shared#^_</key> <key>ShorthandMaster.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>9</integer> <integer>8</integer>
</dict> </dict>
</dict> </dict>
</dict> </dict>
......
This diff is collapsed.
//
// SHSmsLoginViewController.swift
// ShorthandMaster
//
// Created by 明津李 on 2020/8/10.
// Copyright © 2020 明津李. All rights reserved.
//
import UIKit
class SHSmsLoginViewController: SHBaseViewController {
@IBOutlet var phoneTF: UITextField!
@IBOutlet var smsCodeTF: UITextField!
@IBOutlet var smsCodeBtn: UIButton!
@IBOutlet var confirmBtn: UIButton!
@IBOutlet var protocolTV: UITextView!
var currentTF: UITextField?
var agree: Bool = false
@objc var smsLoginSuccess: (CRUserInfoModel)->() = {_ in }
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
override func setupUI(){
super.setupUI()
view.layoutIfNeeded()
view.layoutSubviews()
confirmBtn.layer.cornerRadius = confirmBtn.frame.size.height/2
protocolTV.attributedText = textViewClick(false)
protocolTV.delegate = self
protocolTV.isEditable = false
protocolTV.isScrollEnabled = false
protocolTV.textAlignment = .center
}
func textViewClick(_ select:Bool) -> NSMutableAttributedString{
let str = " 已阅读并同意用户协议和隐私政策"
let attStr = NSMutableAttributedString.init(string: str)
let style = NSMutableParagraphStyle()
style.lineSpacing = kAutoWidth*6
let userRange = str.range(of: "用户协议")
attStr.addAttributes([.foregroundColor:kMassColor, .link:"user://"], range: NSRange(userRange!, in: str))
let privacyRange = str.range(of: "隐私政策")
attStr.addAttributes([.foregroundColor:kMassColor, .link:"privacy://"], range: NSRange(privacyRange!, in: str))
let image = UIImage.init(named: select==true ? "login_procotol_agree_selected": "login_procotol_agree_select")
let imageSize = CGSize.init(width: 12, height: 12)
UIGraphicsBeginImageContextWithOptions(imageSize, false, 0)
image?.draw(in: CGRect.init(x: 0, y: 0, width: imageSize.width, height: imageSize.height))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let imageAttachmenmt = NSTextAttachment()
imageAttachmenmt.bounds = CGRect.init(x: 0, y: -2, width: imageSize.width, height: imageSize.height)
imageAttachmenmt.image = newImage
let imageAttStr = NSMutableAttributedString.init(attributedString: NSAttributedString.init(attachment: imageAttachmenmt))
attStr.insert(imageAttStr, at: 0)
attStr.addAttributes([.link:"agree://"], range: NSRange.init(location: 0, length: imageAttStr.length))
attStr.addAttributes([.paragraphStyle:style, .font:UIFont.systemFont(ofSize: 12)], range: NSRange.init(location: 0, length: attStr.length))
return attStr
}
@objc @IBAction func smsCodeBtnClick(_ sender: UIButton){
if phoneTF.text?.count != 11 {
return
}
currentTF?.resignFirstResponder()
count(sender)
}
@objc @IBAction func confirmBtnClick(_ sender: UIButton){
if phoneTF.text?.count != 11 {
return
}
if smsCodeTF.text?.count == 0 {
return
}
currentTF?.resignFirstResponder()
}
func count(_ sender: UIButton){
var count = 60
sender.isEnabled = false
let timer = DispatchSource.makeTimerSource(flags: [], queue: DispatchQueue.global())
timer.schedule(deadline: DispatchTime.now(), repeating: .seconds(1), leeway: .milliseconds(10))
timer.setEventHandler(handler: {
count -= 1
DispatchQueue.main.sync {
if count == 0{
sender.isEnabled = true
sender.setTitle("获取验证码", for: .normal)
sender.setTitleColor(kMassColor, for: .normal)
timer.cancel()
}else{
sender.setTitle("已发送"+"\(count)"+"s", for: .normal)
sender.setTitleColor(UIColor.init(r: 178, g: 178, b: 178), for: .normal)
}
}
})
timer.resume()
}
}
extension SHSmsLoginViewController: UITextFieldDelegate{
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
currentTF = textField
return true
}
}
extension SHSmsLoginViewController: UITextViewDelegate{
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
if URL.scheme == "agree" {
agree = !agree
textView.attributedText = textViewClick(agree);
textView.textAlignment = .center;
return false
} else if URL.scheme == ""{
let web = SHWebViewController()
web.url = ""
self.navigationController?.pushViewController(web, animated: true)
return false
} else if URL.scheme == ""{
let web = SHWebViewController()
web.url = ""
self.navigationController?.pushViewController(web, animated: true)
return false
}
return true
}
}
//
// ZJOauthLoginConfig.h
// Dolphins
//
// Created by 明津李 on 2020/6/17.
// Copyright © 2020 Company. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface ZJOauthLoginConfig : NSObject
@property (nonatomic, copy) void(^loginResult)(id);
- (instancetype)initWithCurrentVC:(UIViewController *)currentVC;
//- (void)loginVerify;
- (void)loginVerify:(void(^)(id))result;
- (void)loginVerify:(void(^)(id))result alert:(BOOL)alert;
@end
NS_ASSUME_NONNULL_END
//
// ZJOauthLoginConfig.m
// Dolphins
//
// Created by 明津李 on 2020/6/17.
// Copyright © 2020 Company. All rights reserved.
//
#import "ZJOauthLoginConfig.h"
#import "ZJOauthLoginManager.h"
//#import "AlertControllerTool.h"
//#import "ZJUserInfoManager.h"
//#import "Data.h"
//#import "BaseTabBarViewController.h"
@interface ZJOauthLoginConfig()
@property (nonatomic, strong) UIViewController * currentVC;
//@property (nonatomic, strong) Data * data;
@end
@implementation ZJOauthLoginConfig
- (instancetype)initWithCurrentVC:(UIViewController *)currentVC{
if (self = [super init]) {
// _data = [[Data alloc] init];
_currentVC = currentVC;
[[ZJOauthLoginManager shared] setCurrentVC:currentVC];
}
return self;
}
- (void)loginVerify:(void(^)(id))result{
[self loginVerify:result alert:YES];
}
- (void)loginVerify:(void(^)(id))result alert:(BOOL)alert{
_loginResult = result;
if ([[[CRAccountManager shared] userInfo] isTourist]) {
// if (alert) {
// [AlertControllerTool alertControllerWithTitle:@"提示" message:@"您还没有登录,请先登录" cancelTitle:@"再等等" cancelBlock:^{
//
// } confirm:@"去登录" confirmBlock:^(id s) {
//
// [self goOauthLogin];
//
// } finishBlock:nil];
// }else{
[self goOauthLogin];
// }
} else {
if (self.loginResult) {
self.loginResult([[CRAccountManager shared] userInfo]);
}
}
}
- (void)goOauthLogin{
[[ZJOauthLoginManager shared] callOauthLoginWithSuccess:^(id _Nonnull success) {
[self loginForQuick:success];
} failure:^(id _Nonnull error) {
if ([error isEqual: @100]) {
[self.currentVC.presentedViewController dismissViewControllerAnimated:YES completion:^{
[self codeLoginVC];
}];
}else{
[self codeLoginVC];
}
}];
}
- (void)logCollection {
// NSLog(@"log app_quick_login");
// NSMutableDictionary *dict = @{@"event": @"guazinovel", @"action": @"app_quick_login", @"value": @""}.mutableCopy;
//
// [[TQNetworkTools shared] postWithLogCollection:logCollection parameters: dict success:^(__autoreleasing id *response) {
//// NSLog(@"log app_add_care_friend");
// } failure:^(NSError * _Nonnull error) {
//
// }];
}
- (void)loginForQuick:(NSString *)token{
[self logCollection];
// [[TQNetworkTools shared] postWithAction:loginWithQuick parameters:@{@"token":token, @"appId":[ZJOauthLoginManager shared].AppId} success:^(id _Nonnull response) {
//
// if([[response objectForKey:@"status"] integerValue] == 200){
// [MobClick event:@"login_suc"];
// NSString * token = [[[response objectForKey:@"result"] objectForKey:@"data"] objectForKey:@"token"];
//
// if (token) {
// [self.data WirteDic:token Key:@"token"];
//
// [[ZJUserInfoManager shared] updataUserInfo:^(ZJMineUserInfoModel * _Nonnull model) {
//
// if (self.loginResult) {
// self.loginResult(model);
// }
// BaseTabBarViewController * tabbar = [BaseTabBarViewController new];
// tabbar.selectedIndex = tabbar.viewControllers.count-1;
// self.currentVC.view.window.rootViewController = tabbar;
//
// } failure:^(id _Nonnull error) {
//
// if (self.loginResult) {
// self.loginResult(@"userinfo更新失败");
// }
//
// }];
// }
//
// }else{
// [MobClick event:@"login_fail"];
// [MBProgressHUD showError:[response objectForKey:@"msg"] toView:self.currentVC.view];
// if (self.loginResult) {
// self.loginResult(@"创蓝token认证失败");
// }
// }
//
// } failure:^(NSError * _Nonnull error) {
// [MobClick event:@"login_fail"];
// NSLog(@"失败");
// if (self.loginResult) {
// self.loginResult(@"loginWithQuick返回错误");
// }
// }];
}
- (void)codeLoginVC{
SHSmsLoginViewController * login = [[SHSmsLoginViewController alloc] init];
[self.currentVC.navigationController pushViewController:login animated:YES];
login.smsLoginSuccess = ^(CRUserInfoModel * model){
if (self.loginResult) {
self.loginResult(model);
}
SHBaseTabBarController * tabbar = [SHBaseTabBarController new];
// tabbar.selectedIndex = tabbar.viewControllers.count-1;
self.currentVC.view.window.rootViewController = tabbar;
};
}
@end
//
// ZJOauthLoginManager.h
// Dolphins
//
// Created by 明津李 on 2020/6/11.
// Copyright © 2020 Company. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^successBlock)(id);
typedef void(^failureBlock)(id);
@interface ZJOauthLoginManager : NSObject
+ (instancetype)initWithShanYanAppID:(NSString *)AppID;
+ (instancetype)shared;
- (void)setCurrentVC:(UIViewController *)currentVC;
- (NSString *)AppId;
- (void)callOauthLoginWithSuccess:(successBlock)success failure:(failureBlock)failure;
@end
NS_ASSUME_NONNULL_END
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