diff --git a/Bundles/ATAuthSDK.bundle/icon_check@2x.png b/Bundles/ATAuthSDK.bundle/icon_check@2x.png new file mode 100644 index 0000000..db2ab5b Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_check@2x.png differ diff --git a/Bundles/ATAuthSDK.bundle/icon_check@3x.png b/Bundles/ATAuthSDK.bundle/icon_check@3x.png new file mode 100644 index 0000000..61e1dd6 Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_check@3x.png differ diff --git a/Bundles/ATAuthSDK.bundle/icon_close_gray@2x.png b/Bundles/ATAuthSDK.bundle/icon_close_gray@2x.png new file mode 100644 index 0000000..96f784b Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_close_gray@2x.png differ diff --git a/Bundles/ATAuthSDK.bundle/icon_close_gray@3x.png b/Bundles/ATAuthSDK.bundle/icon_close_gray@3x.png new file mode 100644 index 0000000..d4f2dad Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_close_gray@3x.png differ diff --git a/Bundles/ATAuthSDK.bundle/icon_nav_back_gray@2x.png b/Bundles/ATAuthSDK.bundle/icon_nav_back_gray@2x.png new file mode 100755 index 0000000..c97068b Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_nav_back_gray@2x.png differ diff --git a/Bundles/ATAuthSDK.bundle/icon_nav_back_gray@3x.png b/Bundles/ATAuthSDK.bundle/icon_nav_back_gray@3x.png new file mode 100755 index 0000000..4ee63e0 Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_nav_back_gray@3x.png differ diff --git a/Bundles/ATAuthSDK.bundle/icon_nav_back_light@2x.png b/Bundles/ATAuthSDK.bundle/icon_nav_back_light@2x.png new file mode 100755 index 0000000..4faed82 Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_nav_back_light@2x.png differ diff --git a/Bundles/ATAuthSDK.bundle/icon_nav_back_light@3x.png b/Bundles/ATAuthSDK.bundle/icon_nav_back_light@3x.png new file mode 100755 index 0000000..e4e17e4 Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_nav_back_light@3x.png differ diff --git a/Bundles/ATAuthSDK.bundle/icon_uncheck@2x.png b/Bundles/ATAuthSDK.bundle/icon_uncheck@2x.png new file mode 100644 index 0000000..e200be8 Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_uncheck@2x.png differ diff --git a/Bundles/ATAuthSDK.bundle/icon_uncheck@3x.png b/Bundles/ATAuthSDK.bundle/icon_uncheck@3x.png new file mode 100644 index 0000000..bdc8daa Binary files /dev/null and b/Bundles/ATAuthSDK.bundle/icon_uncheck@3x.png differ diff --git a/Libs/ATAuthSDK.framework/ATAuthSDK b/Libs/ATAuthSDK.framework/ATAuthSDK index 7bc6d90..25a58c5 100644 Binary files a/Libs/ATAuthSDK.framework/ATAuthSDK and b/Libs/ATAuthSDK.framework/ATAuthSDK differ diff --git a/Libs/ATAuthSDK.framework/Headers/ATAuthSDK.h b/Libs/ATAuthSDK.framework/Headers/ATAuthSDK.h index c7e260b..a1940b1 100644 --- a/Libs/ATAuthSDK.framework/Headers/ATAuthSDK.h +++ b/Libs/ATAuthSDK.framework/Headers/ATAuthSDK.h @@ -19,8 +19,6 @@ FOUNDATION_EXPORT const unsigned char ATAuthSDKVersionString[]; #import "TXCommonHandler.h" #import "TXCommonUtils.h" #import "PNSReturnCode.h" - #import "TXCustomModel.h" - #import "PNSReporter.h" diff --git a/Libs/ATAuthSDK.framework/Headers/PNSReporter.h b/Libs/ATAuthSDK.framework/Headers/PNSReporter.h index acb094c..31e4cbc 100644 --- a/Libs/ATAuthSDK.framework/Headers/PNSReporter.h +++ b/Libs/ATAuthSDK.framework/Headers/PNSReporter.h @@ -27,10 +27,10 @@ typedef NS_ENUM(NSInteger, PNSLoggerLevel) { - (void)setConsolePrintLoggerEnable:(BOOL)enable; /** - * 设置日志及埋点上传开关,但不会对通过 setupUploader: 接口实现的自定义上传方法起作用 + * 设置埋点上传开关,但不会对通过 setupUploader: 接口实现的自定义上传方法起作用 * @param enable 开关设置BOOL值,默认为YES */ -- (void)setUploadEnable:(BOOL)enable; +- (void)setUploadEnable:(BOOL)enable DEPRECATED_MSG_ATTRIBUTE("日志不再上传");; @end diff --git a/Libs/ATAuthSDK.framework/Headers/PNSReturnCode.h b/Libs/ATAuthSDK.framework/Headers/PNSReturnCode.h index 55d1a45..fbf6302 100644 --- a/Libs/ATAuthSDK.framework/Headers/PNSReturnCode.h +++ b/Libs/ATAuthSDK.framework/Headers/PNSReturnCode.h @@ -20,7 +20,7 @@ static NSString * const PNSCodeSuccess = @"600000"; static NSString * const PNSCodeGetOperatorInfoFailed = @"600004"; /// 未检测到sim卡 static NSString * const PNSCodeNoSIMCard = @"600007"; -/// 蜂窝网络未开启 +/// 蜂窝网络未开启或不稳定 static NSString * const PNSCodeNoCellularNetwork = @"600008"; /// 无法判运营商 static NSString * const PNSCodeUnknownOperator = @"600009"; @@ -38,6 +38,8 @@ static NSString * const PNSCodeInterfaceLimited = @"600014"; static NSString * const PNSCodeInterfaceTimeout = @"600015"; /// AppID、Appkey解析失败 static NSString * const PNSCodeDecodeAppInfoFailed = @"600017"; +/// 该号码已被运营商管控,目前只有联通号码有该功能 +static NSString * const PNSCodePhoneBlack = @"600018"; /// 运营商已切换 static NSString * const PNSCodeCarrierChanged = @"600021"; /// 终端环境检测失败(终端不支持认证 / 终端检测参数错误) @@ -61,8 +63,23 @@ static NSString * const PNSCodeLoginControllerClickLoginBtn = @"700002"; static NSString * const PNSCodeLoginControllerClickCheckBoxBtn = @"700003"; /// 点击协议富文本文字 static NSString * const PNSCodeLoginControllerClickProtocol = @"700004"; +/// 中断页面消失的时候,也就是suspendDisMissVC设置为YES的时候,点击左上角返回按钮时透出的状态码 +static NSString * const PNSCodeLoginControllerSuspendDisMissVC = @"700010"; /*************** 号码认证授权页相关返回码 FINISH ***************/ +/*************** 二次授权页返回code码 START ***************/ + +/// 点击一键登录拉起授权页二次弹窗 +static NSString * const PNSCodeLoginClickPrivacyAlertView = @"700006"; +/// 隐私协议二次弹窗关闭 +static NSString * const PNSCodeLoginPrivacyAlertViewClose = @"700007"; +/// 隐私协议二次弹窗点击确认并继续 +static NSString * const PNSCodeLoginPrivacyAlertViewClickContinue = @"700008"; +/// 点击隐私协议二次弹窗上的协议富文本文字 +static NSString * const PNSCodeLoginPrivacyAlertViewPrivacyContentClick = @"700009"; + +/*************** 二次授权页返回code码 FINISH ***************/ + #endif /* PNSReturnCode_h */ diff --git a/Libs/ATAuthSDK.framework/Headers/TXCommonHandler.h b/Libs/ATAuthSDK.framework/Headers/TXCommonHandler.h index 07dddd7..2ab67a2 100644 --- a/Libs/ATAuthSDK.framework/Headers/TXCommonHandler.h +++ b/Libs/ATAuthSDK.framework/Headers/TXCommonHandler.h @@ -5,8 +5,6 @@ // Created by yangli on 15/03/2018. #import -#import - #import "TXCustomModel.h" #import "PNSReporter.h" @@ -30,9 +28,10 @@ typedef NS_ENUM(NSInteger, PNSAuthType) { - (NSString *_Nonnull)getVersion; /** - * 初始化SDK调用参数,app生命周期内调用一次 + * SDK鉴权,app生命周期内调用一次 * @param info app对应的秘钥 * @param complete 结果异步回调到主线程,成功时resultDic=@{resultCode:600000, msg:...},其他情况时"resultCode"值请参考PNSReturnCode + * @note 重复调用时以最新info信息为准 */ - (void)setAuthSDKInfo:(NSString * _Nonnull)info complete:(void(^_Nullable)(NSDictionary * _Nonnull resultDic))complete; @@ -74,7 +73,7 @@ typedef NS_ENUM(NSInteger, PNSAuthType) { * * 授权页控件点击事件:700000(点击授权页返回按钮)、700001(点击切换其他登录方式)、 * 700002(点击登录按钮事件,根据返回字典里面的 "isChecked"字段来区分check box是否被选中,只有被选中的时候内部才会去获取Token)、700003(点击check box事件)、700004(点击协议富文本文字) - 接口回调其他事件:600001(授权页唤起成功)、600002(授权页唤起失败)、600000(成功获取Token)、600011(获取Token失败)、 + 接口回调其他事件:600001(授权页唤起成功)、600002(授权页唤起失败)、600000(成功获取Token)、600011(获取Token失败)、 * 600015(获取Token超时)、600013(运营商维护升级,该功能不可用)、600014(运营商维护升级,该功能已达最大调用次数)..... */ - (void)getLoginTokenWithTimeout:(NSTimeInterval)timeout controller:(UIViewController *_Nonnull)controller model:(TXCustomModel *_Nullable)model complete:(void (^_Nullable)(NSDictionary * _Nonnull resultDic))complete; @@ -87,6 +86,26 @@ typedef NS_ENUM(NSInteger, PNSAuthType) { */ - (void)debugLoginUIWithController:(UIViewController *_Nonnull)controller model:(TXCustomModel *_Nullable)model complete:(void (^_Nullable)(NSDictionary * _Nonnull resultDic))complete; +/** + * 授权页弹起后,修改checkbox按钮选中状态,当checkout按钮隐藏时,设置不生效 + */ +- (void)setCheckboxIsChecked:(BOOL)isChecked; + +/** + * 查询授权页checkbox是否勾选,YES:勾选,NO:未勾选 + */ +- (BOOL)queryCheckBoxIsChecked; + +/** + * 授权页协议内容动画执行,注意:必须设置privacyAnimation属性,才会执行动画 + */ +- (void)privacyAnimationStart; + +/** + * 授权页checkbox动画执行,注意:必须设置checkboxAnimation属性,才会执行动画 + */ +- (void)checkboxAnimationStart; + /** * 手动隐藏一键登录获取登录Token之后的等待动画,默认为自动隐藏,当设置 TXCustomModel 实例 autoHideLoginLoading = NO 时, 可调用该方法手动隐藏 */ @@ -104,7 +123,10 @@ typedef NS_ENUM(NSInteger, PNSAuthType) { */ - (PNSReporter * _Nonnull)getReporter; - +/** + * 关闭二次授权弹窗页 + */ +- (void)closePrivactAlertView; /** * 检查及准备调用环境,resultDic返回PNSCodeSuccess才能调用下面的功能接口 diff --git a/Libs/ATAuthSDK.framework/Headers/TXCommonUtils.h b/Libs/ATAuthSDK.framework/Headers/TXCommonUtils.h index 9ecf79c..a56b6db 100644 --- a/Libs/ATAuthSDK.framework/Headers/TXCommonUtils.h +++ b/Libs/ATAuthSDK.framework/Headers/TXCommonUtils.h @@ -5,7 +5,6 @@ // Created by yangli on 12/03/2018. #import -#import @interface TXCommonUtils : NSObject @@ -16,39 +15,39 @@ + (BOOL)checkDeviceCellularDataEnable; /** -判断当前上网卡运营商是否是中国联通 -@return 结果 -*/ + 判断当前上网卡运营商是否是中国联通 + @return 结果 + */ + (BOOL)isChinaUnicom; /** -判断当前上网卡运营商是否是中国移动 -@return 结果 -*/ + 判断当前上网卡运营商是否是中国移动 + @return 结果 + */ + (BOOL)isChinaMobile; /** -判断当前上网卡运营商是否是中国电信 -@return 结果 -*/ + 判断当前上网卡运营商是否是中国电信 + @return 结果 + */ + (BOOL)isChinaTelecom; /** -获取当前上网卡运营商名称,比如中国移动、中国电信、中国联通 -@return 结果 -*/ + 获取当前上网卡运营商名称,比如中国移动、中国电信、中国联通 + @return 结果 + */ + (NSString *)getCurrentCarrierName; /** -获取当前上网卡网络类型,比如WiFi,4G -@return 结果 -*/ + 获取当前上网卡网络类型,比如WiFi,4G + @return 结果 + */ + (NSString *)getNetworktype; /** -判断当前设备是否有SIM卡 -@return 结果 -*/ + 判断当前设备是否有SIM卡 + @return 结果 + */ + (BOOL)simSupportedIsOK; /** @@ -65,7 +64,7 @@ /** 获取设备当前网络私网IP地址 - @return 结果 + @return 结果 */ + (NSString *)getMobilePrivateIPAddress:(BOOL)preferIPv4; @@ -75,8 +74,8 @@ + (NSString *)getUniqueID; /** -通过颜色设置生成图片,支持弧度设置,比如一键登录按钮背景图片 -*/ + 通过颜色设置生成图片,支持弧度设置,比如一键登录按钮背景图片 + */ + (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size isRoundedCorner:(BOOL )isRounded radius:(CGFloat)radius; @end diff --git a/Libs/ATAuthSDK.framework/Headers/TXCustomModel.h b/Libs/ATAuthSDK.framework/Headers/TXCustomModel.h index 5db53fe..ee0f730 100644 --- a/Libs/ATAuthSDK.framework/Headers/TXCustomModel.h +++ b/Libs/ATAuthSDK.framework/Headers/TXCustomModel.h @@ -79,6 +79,8 @@ typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGR @property (nonatomic, assign) BOOL navIsHidden; /**授权页push到其他页面后,导航栏是否隐藏,默认NO*/ @property (nonatomic, assign) BOOL navIsHiddenAfterLoginVCDisappear; +/**是否需要中断返回,如果设置为YES,则点击左上角返回按钮的时候默认页面不消失,同时透出状态码700010,需要自己调用TXCommonHandler cancelLoginVCAnimated方法隐藏页面,默认为NO*/ +@property (nonatomic, assign) BOOL suspendDisMissVC; /** 导航栏主题色 */ @property (nonatomic, strong) UIColor *navColor; /** 导航栏标题,内容、字体、大小、颜色 */ @@ -121,6 +123,16 @@ typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGR /** 状态栏主题风格,默认UIStatusBarStyleDefault */ @property (nonatomic, assign) UIStatusBarStyle preferredStatusBarStyle; +#pragma mark- 背景 +/** 授权页背景色 */ +@property (nonatomic, strong) UIColor *backgroundColor; +/** 授权页背景图片 */ +@property (nonatomic, strong) UIImage *backgroundImage; +/** 授权页背景图片view的 content mode,默认为 UIViewContentModeScaleAspectFill */ +@property (nonatomic, assign) UIViewContentMode backgroundImageContentMode; +/** 点击授权页背景是否关闭授权页,只有在弹窗模式下生效,默认NO*/ +@property (nonatomic, assign) BOOL tapAuthPageMaskClosePage; + #pragma mark- logo图片 /** logo图片设置 */ @property (nonatomic, strong) UIImage *logoImage; @@ -150,7 +162,7 @@ typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGR #pragma mark- 号码 /** 号码颜色设置 */ @property (nonatomic, strong) UIColor *numberColor; -/** 号码字体大小设置,大小小于16则不生效 */ +/** 号码字体设置,大小小于16则不生效 */ @property (nonatomic, strong) UIFont *numberFont; /** @@ -205,6 +217,8 @@ typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGR @property (nonatomic, assign) BOOL checkBoxIsHidden; /** checkBox大小,高宽一样,必须大于0 */ @property (nonatomic, assign) CGFloat checkBoxWH; +/** checkBox是否和协议内容垂直居中,默认NO,即顶部对齐 */ +@property (nonatomic, assign) BOOL checkBoxVerticalCenter; /** 协议1,[协议名称,协议Url],注:三个协议名称不能相同 */ @property (nonatomic, copy) NSArray *privacyOne; @@ -216,7 +230,15 @@ typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGR @property (nonatomic, copy) NSArray *privacyConectTexts; /** 协议内容颜色数组,[非点击文案颜色,点击文案颜色] */ @property (nonatomic, copy) NSArray *privacyColors; -/** 协议文案支持居中、居左设置,默认居左 */ +/** 运营商协议内容颜色 ,优先级最高,如果privacyOperatorColors不设置,则取privacyColors中的点击文案颜色,privacyColors不设置,则是默认色*/ +@property (nonatomic, strong) UIColor *privacyOperatorColor; +/** 协议1内容颜色,优先级最高,如果privacyOneColors不设置,则取privacyColors中的点击文案颜色,privacyColors不设置,则是默认色*/ +@property (nonatomic, strong) UIColor *privacyOneColor; +/** 协议2内容颜色,优先级最高,如果privacyTwoColors不设置,则取privacyColors中的点击文案颜色,privacyColors不设置,则是默认色*/ +@property (nonatomic, strong) UIColor *privacyTwoColor; +/** 协议3内容颜色,优先级最高,如果privacyThreeColors不设置,则取privacyColors中的点击文案颜色,privacyColors不设置,则是默认色*/ +@property (nonatomic, strong) UIColor *privacyThreeColor; +/** 协议文案支持居中、居左、居右设置,默认居左 */ @property (nonatomic, assign) NSTextAlignment privacyAlignment; /** 协议整体文案,前缀部分文案 */ @property (nonatomic, copy) NSString *privacyPreText; @@ -228,8 +250,16 @@ typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGR @property (nonatomic, copy) NSString *privacyOperatorSufText; /** 运营商协议指定显示顺序,默认0,即第1个协议显示,最大值可为3,即第4个协议显示*/ @property (nonatomic, assign) NSInteger privacyOperatorIndex; -/** 协议整体文案字体大小,小于12.0不生效 */ +/** 协议整体文案字体,小于12.0不生效 */ @property (nonatomic, strong) UIFont *privacyFont; +/** 协议整体文案行间距,默认0 */ +@property (nonatomic, assign) CGFloat privacyLineSpaceDp; +/** 运营商协议文案字体,仅对运营商协议本体文案和前后缀生效,小于12.0不生效 */ +@property (nonatomic, strong) UIFont *privacyOperatorFont; +/** 运营商协议文案下划线,仅对运营商协议本体文案和前后缀生效,YES:展示下划线;NO:不展示下划线,默认不展示 */ +@property (nonatomic, assign) BOOL privacyOperatorUnderline; +/** checkBox是否扩大按钮可交互范围至"协议前缀部分文案(默认:我已阅读并同意)"区域,默认NO */ +@property (nonatomic, assign) BOOL expandAuthPageCheckedScope; /** * 构建协议整体(包括checkBox)的frame,view布局或布局发生变化时调用,不实现则按默认处理 @@ -237,6 +267,14 @@ typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGR * 最终会根据设置进来的width对协议文本进行自适应,得到的size是协议控件的最终大小 */ @property (nonatomic, copy) PNSBuildFrameBlock privacyFrameBlock; +/** + * 未同意协议时点击登录按钮,协议整体文案的动画效果,不设置或设置为nil默认没有动画,SDK内部会主动更改动画的一些属性(包括:removedOnCompletion = NO、fillMode = kCAFillModeRemoved 及 delegate) + */ +@property (nonatomic, strong, nullable) CAAnimation *privacyAnimation; +/** + * 未同意协议时点击登录按钮,checkbox的动画效果,不设置或设置为nil默认没有动画,SDK内部会主动更改动画的一些属性(包括:removedOnCompletion = NO、fillMode = kCAFillModeRemoved 及 delegate) + */ +@property (nonatomic, strong, nullable) CAAnimation *checkboxAnimation; /** 协议整体相对屏幕底部的Y轴距离,与其他有区别!!不能小于0 */ @property (nonatomic, assign) CGFloat privacyBottomOffetY DEPRECATED_MSG_ATTRIBUTE("Please use privacyFrameBlock instead"); /** 协议整体(包括checkBox)相对content view的左右边距,当协议整体宽度小于(content view宽度-2*左右边距)且居中模式,则左右边距设置无效,不能小于0 */ @@ -270,7 +308,7 @@ typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGR /** * 自定义控件添加,注意:自定义视图的创建初始化和添加到父视图,都需要在主线程!! * @param superCustomView 父视图 -*/ + */ @property (nonatomic, copy) void(^customViewBlock)(UIView *superCustomView); /** @@ -285,9 +323,113 @@ typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGR * @param loginFrame 登录按钮的frame * @param changeBtnFrame 切换到其他方式按钮的frame * @param privacyFrame 协议整体(包括checkBox)的frame -*/ + */ @property (nonatomic, copy) void(^customViewLayoutBlock)(CGSize screenSize, CGRect contentViewFrame, CGRect navFrame, CGRect titleBarFrame, CGRect logoFrame, CGRect sloganFrame, CGRect numberFrame, CGRect loginFrame, CGRect changeBtnFrame, CGRect privacyFrame); +#pragma mark - 二次隐私协议弹窗设置 +/** 二次隐私协议弹窗是否需要显示, 默认NO */ +@property (nonatomic, assign) BOOL privacyAlertIsNeedShow; +/** 二次隐私协议弹窗点击按钮是否需要执行登陆,默认YES */ +@property (nonatomic, assign) BOOL privacyAlertIsNeedAutoLogin; +/** 二次隐私协议弹窗显示自定义动画,默认从下往上位移动画 */ +@property (nonatomic, strong, nullable) CAAnimation *privacyAlertEntryAnimation; +/** 二次隐私协议弹窗隐藏自定义动画,默认从上往下位移动画 */ +@property (nonatomic, strong, nullable) CAAnimation *privacyAlertExitAnimation; +/** 二次隐私协议弹窗的四个圆角值,顺序为左上,左下,右下,右上,需要填充4个值,不足4个值则无效,如果值<=0则为直角 ,默认0*/ +@property (nonatomic, copy) NSArray *privacyAlertCornerRadiusArray; +/** 二次隐私协议弹窗背景颜色,默认为白色 */ +@property (nonatomic, strong) UIColor *privacyAlertBackgroundColor; +/** 二次隐私协议弹窗透明度,默认不透明1.0 ,设置范围0.3~1.0之间 */ +@property (nonatomic, assign) CGFloat privacyAlertAlpha; +/** 二次隐私协议弹窗标题文字内容,默认"请阅读并同意以下条款" */ +@property (nonatomic, copy) NSString *privacyAlertTitleContent; +/** 二次隐私协议弹窗标题文字字体,最小12,默认12 */ +@property (nonatomic, strong) UIFont *privacyAlertTitleFont; +/** 二次隐私协议弹窗标题文字颜色,默认黑色 */ +@property (nonatomic, strong) UIColor *privacyAlertTitleColor; +/** 二次隐私协议弹窗标题背景颜色,默认白色*/ +@property (nonatomic, strong) UIColor *privacyAlertTitleBackgroundColor; +/** 二次隐私协议弹窗标题位置,默认居中*/ +@property (nonatomic, assign) NSTextAlignment privacyAlertTitleAlignment; +/** 二次隐私协议弹窗协议内容文字字体,最小12,默认12 */ +@property (nonatomic, strong) UIFont *privacyAlertContentFont; +/** 二次隐私协议弹窗协议内容行间距,默认0 */ +@property (nonatomic, assign) CGFloat privacyAlertLineSpaceDp; +/** 二次隐私协议弹窗协议内容背景颜色,默认白色 */ +@property (nonatomic, strong) UIColor *privacyAlertContentBackgroundColor; +/** 二次隐私协议弹窗协议内容颜色数组,[非点击文案颜色,点击文案颜色],默认[0x999999,0x1890FF] */ +@property (nonatomic, copy) NSArray *privacyAlertContentColors; +/** 二次隐私协议弹窗运营商协议内容文字字体,仅对运营商协议部分的文本生效,最小12,默认12 */ +@property (nonatomic, strong) UIFont *privacyAlertContentOperatorFont; +/** 二次隐私协议弹窗运营商协议内容文字下划线,仅对运营商协议部分的文本生效,YES:展示下划线,NO:不展示下划线,默认不展示 */ +@property (nonatomic, assign) BOOL privacyAlertContentUnderline; +/** 二次隐私协议弹窗协议运营商协议内容颜色,优先级最高,如果privacyAlertOperatorColors不设置,则取privacyAlertContentColors中的点击文案颜色,privacyAlertContentColors不设置,则是默认色*/ +@property (nonatomic, strong) UIColor *privacyAlertOperatorColor; +/** 二次隐私协议弹窗协议协议1内容颜色 ,优先级最高,如果privacyAlertOneColors不设置,则取privacyAlertContentColors中的点击文案颜色,privacyAlertContentColors不设置,则是默认色*/ +@property (nonatomic, strong) UIColor *privacyAlertOneColor; +/** 二次隐私协议弹窗协议协议2内容颜色 ,优先级最高,如果privacyAlertTwoColors不设置,则取privacyAlertContentColors中的点击文案颜色,privacyAlertContentColors不设置,则是默认色*/ +@property (nonatomic, strong) UIColor *privacyAlertTwoColor; +/** 二次隐私协议弹窗协议协议3内容颜色 ,优先级最高,如果privacyAlertThreeColors不设置,则取privacyAlertContentColors中的点击文案颜色,privacyAlertContentColors不设置,则是默认色*/ +@property (nonatomic, strong) UIColor *privacyAlertThreeColor; +/** 二次隐私协议弹窗协议文案支持居中、居左、居右设置,默认居左 */ +@property (nonatomic, assign) NSTextAlignment privacyAlertContentAlignment; + +/** 二次隐私协议弹窗协议整体文案,前缀部分文案 ,如果不赋值,默认使用privacyPreText*/ +@property (nonatomic, copy) NSString *privacyAlertPreText; +/** 二次隐私协议弹窗协议整体文案,后缀部分文案 如果不赋值,默认使用privacySufText*/ +@property (nonatomic, copy) NSString *privacyAlertSufText; + +/** 二次隐私协议弹窗按钮文字内容 默认“同意”*/ +@property (nonatomic, copy) NSString *privacyAlertBtnContent; +/** 二次隐私协议弹窗按钮按钮背景图片 ,默认高度50.0pt,@[激活状态的图片,高亮状态的图片] */ +@property (nonatomic, copy) NSArray *privacyAlertBtnBackgroundImages; +/** 二次隐私协议弹窗按钮文字颜色,默认黑色, @[激活状态的颜色,高亮状态的颜色] */ +@property (nonatomic, copy) NSArray *privacyAlertButtonTextColors; +/** 二次隐私协议弹窗按钮文字字体,最小10,默认18*/ +@property (nonatomic, strong) UIFont *privacyAlertButtonFont; +/** 二次隐私协议弹窗关闭按钮是否显示,默认显示 */ +@property (nonatomic, assign) BOOL privacyAlertCloseButtonIsNeedShow; +/** 二次隐私协议弹窗右侧关闭按钮图片设置,默认内置的X图片*/ +@property (nonatomic, strong) UIImage *privacyAlertCloseButtonImage; +/** 二次隐私协议弹窗背景蒙层是否显示 ,默认YES*/ +@property (nonatomic, assign) BOOL privacyAlertMaskIsNeedShow; +/** 二次隐私协议弹窗点击背景蒙层是否关闭弹窗 ,默认YES*/ +@property (nonatomic, assign) BOOL tapPrivacyAlertMaskCloseAlert; +/** 二次隐私协议弹窗蒙版背景颜色,默认黑色 */ +@property (nonatomic, strong) UIColor *privacyAlertMaskColor; +/** 二次隐私协议弹窗蒙版透明度 设置范围0.3~1.0之间 ,默认0.5*/ +@property (nonatomic, assign) CGFloat privacyAlertMaskAlpha; +/** 二次隐私协议弹窗蒙版显示动画,默认渐显动画 */ +@property (nonatomic, strong) CAAnimation *privacyAlertMaskEntryAnimation; +/** 二次隐私协议弹窗蒙版消失动画,默认渐隐动画 */ +@property (nonatomic, strong) CAAnimation *privacyAlertMaskExitAnimation; +/** 二次隐私协议弹窗尺寸设置,不能超出父视图 content view,height不能小于50,width不能小于0,默认屏幕居中,宽为屏幕的宽度减掉80,高为200 */ +@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertFrameBlock; +/** 二次隐私协议弹窗标题尺寸,默认x=0,y=0,width=弹窗宽度,最小宽度为100,height=根据文本计算的高度,最小高度为15,不能超出父视图 */ +@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertTitleFrameBlock; +/** 二次隐私协议弹窗内容尺寸,默认为从标题顶部位置开始,最终会根据设置进来的width对协议文本进行自适应,得到的size是协议控件的最终大小。不能超出父视图 */ +@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertPrivacyContentFrameBlock; +/** 二次隐私协议弹窗确认按钮尺寸,默认为父视图的宽度一半,居中显示。高度默认50, */ +@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertButtonFrameBlock; +/** 二次隐私协议弹窗右侧关闭按钮尺寸,默认宽高44,居弹窗右侧15,居弹窗顶部0*/ +@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertCloseFrameBlock; + +/** + * 二次授权页弹窗自定义控件添加,注意:自定义视图的创建初始化和添加到父视图,都需要在主线程!! + * @param superPrivacyAlertCustomView 父视图 + */ +@property (nonatomic, copy) void(^privacyAlertCustomViewBlock)(UIView *superPrivacyAlertCustomView); + +/** + * 二次授权页弹窗布局完成时会调用该block,可以在该block实现里面可设置自定义添加控件的frame + * @param privacyAlertFrame 二次授权页弹窗frame + * @param privacyAlertTitleFrame 二次授权页弹窗标题frame + * @param privacyAlertPrivacyContentFrame 二次授权页弹窗协议内容frame + * @param privacyAlertButtonFrame 二次授权页弹窗确认按钮frame + * @param privacyAlertCloseFrame 二次授权页弹窗右上角关闭按钮frame + */ +@property (nonatomic, copy) void(^privacyAlertCustomViewLayoutBlock)(CGRect privacyAlertFrame, CGRect privacyAlertTitleFrame, CGRect privacyAlertPrivacyContentFrame, CGRect privacyAlertButtonFrame, CGRect privacyAlertCloseFrame); + @end NS_ASSUME_NONNULL_END diff --git a/Libs/ATAuthSDK.framework/Info.plist b/Libs/ATAuthSDK.framework/Info.plist index ecd93c7..0851f87 100644 Binary files a/Libs/ATAuthSDK.framework/Info.plist and b/Libs/ATAuthSDK.framework/Info.plist differ diff --git a/Libs/ATAuthSDK.framework/PrivacyInfo.xcprivacy b/Libs/ATAuthSDK.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..433213e --- /dev/null +++ b/Libs/ATAuthSDK.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,34 @@ + + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeOtherDataTypes + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAnalytics + + + + NSPrivacyTracking + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/Libs/ATAuthSDKUniPlugin.framework/ATAuthSDKUniPlugin b/Libs/ATAuthSDKUniPlugin.framework/ATAuthSDKUniPlugin index b97aa35..a84d75b 100644 Binary files a/Libs/ATAuthSDKUniPlugin.framework/ATAuthSDKUniPlugin and b/Libs/ATAuthSDKUniPlugin.framework/ATAuthSDKUniPlugin differ diff --git a/Libs/ATAuthSDKUniPlugin.framework/Info.plist b/Libs/ATAuthSDKUniPlugin.framework/Info.plist index d365501..b92b60c 100644 Binary files a/Libs/ATAuthSDKUniPlugin.framework/Info.plist and b/Libs/ATAuthSDKUniPlugin.framework/Info.plist differ diff --git a/Libs/CredibleAuthSDK.framework/CredibleAuthSDK b/Libs/CredibleAuthSDK.framework/CredibleAuthSDK deleted file mode 100644 index a2c135a..0000000 Binary files a/Libs/CredibleAuthSDK.framework/CredibleAuthSDK and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@2x.png b/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@2x.png deleted file mode 100644 index f5a369a..0000000 Binary files a/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@2x.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@3x.png b/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@3x.png deleted file mode 100644 index 4d9aec9..0000000 Binary files a/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@3x.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/config/LiveViewConfigure.plist b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/config/LiveViewConfigure.plist deleted file mode 100644 index c7bf98c..0000000 --- a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/config/LiveViewConfigure.plist +++ /dev/null @@ -1,91 +0,0 @@ - - - - - navLabel - - text - 身份检测 - size - 22 - color - #000000 - - navViewColor - - color - #ffffff - - viewBgColor - - color - #ffffff - - progressNormalColor - - color - #004b5e - - progressLoopingColor - - color - #ffa500 - - toastLabel - - faceLightText - 请保持光线良好 - faceYawText - 请摆正姿态 - faceNullText - 请面向摄像头 - faceOutsideText - 请保持脸部在框内 - faceMultiText - 请保持一个人脸 - faceDiscontinuousText - 请不要离开 - faceCloseText - 请远离摄像头 - faceFarText - 请靠近摄像头 - faceMaskText - 请摘掉口罩 - mouthOcclusionText - 请不要遮挡嘴巴 - noseOcclusionText - 请不要遮挡鼻子 - eyeOcclusionText - 请不要遮挡眼睛 - faceBlurText - 请稳定姿态 - size - 18 - color - #ffffff - - remindLabel - - faceGuideText - 请将脸部置于提示框中 - keepStillText - 请注视屏幕 - nodHeadText - 请缓慢点头 - shakeHeadText - 请缓慢摇头 - openMouthText - 请张下嘴 - blinkEyeText - 请眨下眼 - goodNextText - 好的, 下一个 - liveDetectText - 检测中, 请勿移开 - size - 20 - color - #000000 - - - diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/backBtn_n.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/backBtn_n.png deleted file mode 100644 index 2828f23..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/backBtn_n.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/eyesImage_close.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/eyesImage_close.png deleted file mode 100644 index 3063e93..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/eyesImage_close.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@2x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@2x.png deleted file mode 100644 index 2043b7c..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@2x.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@3x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@3x.png deleted file mode 100644 index 1988364..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@3x.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@2x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@2x.png deleted file mode 100644 index c33b17c..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@2x.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@3x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@3x.png deleted file mode 100644 index 77461d5..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@3x.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_loading.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_loading.png deleted file mode 100644 index 7cb3289..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_loading.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/fail.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/fail.png deleted file mode 100644 index 8ff7d91..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/fail.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/gazy.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/gazy.png deleted file mode 100644 index 7198be1..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/gazy.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_down.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_down.png deleted file mode 100644 index c814ae9..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_down.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_guide.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_guide.png deleted file mode 100644 index 2a4ebcf..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_guide.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_left.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_left.png deleted file mode 100644 index a094507..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_left.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_normal.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_normal.png deleted file mode 100644 index f49f23b..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_normal.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_right.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_right.png deleted file mode 100644 index d4b0af8..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_right.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_up.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_up.png deleted file mode 100644 index 0130439..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_up.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/keep.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/keep.png deleted file mode 100644 index cad7187..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/keep.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/light.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/light.png deleted file mode 100644 index b8b6fce..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/light.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/logo.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/logo.png deleted file mode 100644 index d2bfe23..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/logo.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/main.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/main.png deleted file mode 100644 index ee909da..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/main.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mask.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mask.png deleted file mode 100644 index 368d305..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mask.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_blue.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_blue.png deleted file mode 100644 index a41e618..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_blue.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_detect.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_detect.png deleted file mode 100644 index 4c17a4b..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_detect.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_orange.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_orange.png deleted file mode 100644 index 69cfe15..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_orange.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mouthImage_open.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mouthImage_open.png deleted file mode 100644 index ada8522..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mouthImage_open.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@2x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@2x.png deleted file mode 100644 index c46d893..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@2x.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@3x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@3x.png deleted file mode 100644 index 864f378..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@3x.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/optionBtn.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/optionBtn.png deleted file mode 100644 index e5b65a1..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/optionBtn.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/play_btn.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/play_btn.png deleted file mode 100644 index fb1ddc8..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/play_btn.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_0.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_0.png deleted file mode 100644 index 9bc255b..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_0.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_1.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_1.png deleted file mode 100644 index 5e9c34d..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_1.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_2.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_2.png deleted file mode 100644 index 14500ac..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_2.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_3.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_3.png deleted file mode 100644 index aa2231a..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_3.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_4.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_4.png deleted file mode 100644 index 890d7fd..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_4.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_5.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_5.png deleted file mode 100644 index f8c9de5..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_5.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/selectedBtn.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/selectedBtn.png deleted file mode 100644 index 92f5d67..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/selectedBtn.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title.png deleted file mode 100644 index 703ee96..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title2.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title2.png deleted file mode 100644 index c249cae..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title2.png and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live.lic b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live.lic deleted file mode 100644 index 17bdcd2..0000000 --- a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live.lic +++ /dev/null @@ -1 +0,0 @@ -HL-00B26417C87A2CDF9042F4A7593F50D120D28436E89A4CFEB06214C6782ADC8E40F2A44E78DB0F75B1E551CBFB2591800768B70106BBFC4EDED22669B86A1CCE8032E49648FAAC5C10C27427D88A3CE6A05204B50175BF7E30E29546F8AA570EC0723DB5E757C2F92A71C34879BA0C0090E02BDB9A6A3E8A4110E7B7B1A6EA9C \ No newline at end of file diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live_test.lic b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live_test.lic deleted file mode 100644 index d1b8a44..0000000 --- a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live_test.lic +++ /dev/null @@ -1 +0,0 @@ -HL-00AA54FFA852FCA750FAA44FF997A049A04AF49E48F29C46F09A44EE9842EC9640EA942798F35F8DF15D81A35B8DE11887F047A9A653ACF61EAEE15DAC822CD6802AD47E28D27C26D27A24CE7922CC7628CA741ECB1B73B5701AC46F18C26C1DC06A14A40B7DD14877C0177996037CC64E7ED12D7C9F6E36826E359C6B33A92F2C9A \ No newline at end of file diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/hardinfo.txt b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/hardinfo.txt deleted file mode 100644 index 66e7a32..0000000 --- a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/hardinfo.txt +++ /dev/null @@ -1,5 +0,0 @@ -Mobile_Live.lic 为测试 -Mobile_Live_pro.lic 为生产 - -如需要切换将名字改为Mobile_Live.lic 另一个改为其他名字 - diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.bin deleted file mode 100644 index 0044dd9..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.param.bin deleted file mode 100644 index 9bc2bd9..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.param.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.bin deleted file mode 100644 index 9169ca1..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.param.bin deleted file mode 100644 index 45149ca..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.param.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.bin deleted file mode 100644 index 98e8832..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.param.bin deleted file mode 100644 index d1ed93b..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.param.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.bin deleted file mode 100644 index 888ec63..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.param.bin deleted file mode 100644 index 39fecef..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.param.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.bin deleted file mode 100644 index 9e7628f..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.param.bin deleted file mode 100644 index 92c2545..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.param.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.bin deleted file mode 100644 index 29f315c..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.param.bin deleted file mode 100644 index 08766ab..0000000 Binary files a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.param.bin and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignmobileface_120x160_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignmobileface_120x160_nobn.bin deleted file mode 100644 index b95b944..0000000 --- a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignmobileface_120x160_nobn.bin +++ /dev/null @@ -1,616 +0,0 @@ -L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?=<=<=<=<=<=<*><*><*><><><><><><><><><><?<?<?<?<?<?<"""?<"""?<"""?<333?<333?<333?=*>=*>=n>=n>=n>=>=>=>=>=>=>=>=>=>=?=?=?=?=?=?="""?="""?="""?=333?=333?=333?=DDD?=DDD?=DDD?=UUU?=UUU?=UUU?=fff?=fff?=fff?=www?=www?=www?==>=>=>=>=>=>*>>*>>*>>n>>n>>n>>>>>>>>>>>>>>>>>>>>?>?>?>?>?>?>"""?>"""?>"""?>333?>333?>333?>DDD?>DDD?>DDD?>UUU?>UUU?>UUU?>fff?>fff?>fff?>www?>www?>www?>=333>=333>=333>=333>=333>=333>*>333>*>333>*>333>n>333>n>333>n>333>>333>>333>>333>>333>>333>>333>>333>>333>>333>?333>?333>?333>?333>?333>?333>"""?333>"""?333>"""?333>333?333>333?333>333?333>DDD?333>DDD?333>DDD?333>UUU?333>UUU?333>UUU?333>fff?333>fff?333>fff?333>www?333>www?333>www?333>=fff>=fff>=fff>=fff>=fff>=fff>*>fff>*>fff>*>fff>n>fff>n>fff>n>fff>>fff>>fff>>fff>>fff>>fff>>fff>>fff>>fff>>fff>?fff>?fff>?fff>?fff>?fff>?fff>"""?fff>"""?fff>"""?fff>333?fff>333?fff>333?fff>DDD?fff>DDD?fff>DDD?fff>UUU?fff>UUU?fff>UUU?fff>fff?fff>fff?fff>fff?fff>www?fff>www?fff>www?fff>=̌>=̌>=̌>=̌>=̌>=̌>*>̌>*>̌>*>̌>n>̌>n>̌>n>̌>>̌>>̌>>̌>>̌>>̌>>̌>>̌>>̌>>̌>?̌>?̌>?̌>?̌>?̌>?̌>"""?̌>"""?̌>"""?̌>333?̌>333?̌>333?̌>DDD?̌>DDD?̌>DDD?̌>UUU?̌>UUU?̌>UUU?̌>fff?̌>fff?̌>fff?̌>www?̌>www?̌>www?̌>=ff>=ff>=ff>=ff>=ff>=ff>*>ff>*>ff>*>ff>n>ff>n>ff>n>ff>>ff>>ff>>ff>>ff>>ff>>ff>>ff>>ff>>ff>?ff>?ff>?ff>?ff>?ff>?ff>"""?ff>"""?ff>"""?ff>333?ff>333?ff>333?ff>DDD?ff>DDD?ff>DDD?ff>UUU?ff>UUU?ff>UUU?ff>fff?ff>fff?ff>fff?ff>www?ff>www?ff>www?ff>=>=>=>=>=>=>*>>*>>*>>n>>n>>n>>>>>>>>>>>>>>>>>>>>?>?>?>?>?>?>"""?>"""?>"""?>333?>333?>333?>DDD?>DDD?>DDD?>UUU?>UUU?>UUU?>fff?>fff?>fff?>www?>www?>www?>=>=>=>=>=>=>*>>*>>*>>n>>n>>n>>>>>>>>>>>>>>>>>>>>?>?>?>?>?>?>"""?>"""?>"""?>333?>333?>333?>DDD?>DDD?>DDD?>UUU?>UUU?>UUU?>fff?>fff?>fff?>www?>www?>www?>=33>=33>=33>=33>=33>=33>*>33>*>33>*>33>n>33>n>33>n>33>>33>>33>>33>>33>>33>>33>>33>>33>>33>?33>?33>?33>?33>?33>?33>"""?33>"""?33>"""?33>333?33>333?33>333?33>DDD?33>DDD?33>DDD?33>UUU?33>UUU?33>UUU?33>fff?33>fff?33>fff?33>www?33>www?33>www?33>=ff?=ff?=ff?=ff?=ff?=ff?*>ff?*>ff?*>ff?n>ff?n>ff?n>ff?>ff?>ff?>ff?>ff?>ff?>ff?>ff?>ff?>ff??ff??ff??ff??ff??ff??ff?"""?ff?"""?ff?"""?ff?333?ff?333?ff?333?ff?DDD?ff?DDD?ff?DDD?ff?UUU?ff?UUU?ff?UUU?ff?fff?ff?fff?ff?fff?ff?www?ff?www?ff?www?ff?=33?=33?=33?=33?=33?=33?*>33?*>33?*>33?n>33?n>33?n>33?>33?>33?>33?>33?>33?>33?>33?>33?>33??33??33??33??33??33??33?"""?33?"""?33?"""?33?333?33?333?33?333?33?DDD?33?DDD?33?DDD?33?UUU?33?UUU?33?UUU?33?fff?33?fff?33?fff?33?www?33?www?33?www?33?= ?= ?= ?= ?= ?= ?*> ?*> ?*> ?n> ?n> ?n> ?> ?> ?> ?> ?> ?> ?> ?> ?> ?? ?? ?? ?? ?? ?? ?"""? ?"""? ?"""? ?333? ?333? ?333? ?DDD? ?DDD? ?DDD? ?UUU? ?UUU? ?UUU? ?fff? ?fff? ?fff? ?www? ?www? ?www? ?=,?=,?=,?=,?=,?=,?*>,?*>,?*>,?n>,?n>,?n>,?>,?>,?>,?>,?>,?>,?>,?>,?>,??,??,??,??,??,??,?"""?,?"""?,?"""?,?333?,?333?,?333?,?DDD?,?DDD?,?DDD?,?UUU?,?UUU?,?UUU?,?fff?,?fff?,?fff?,?www?,?www?,?www?,?=9?=9?=9?=9?=9?=9?*>9?*>9?*>9?n>9?n>9?n>9?>9?>9?>9?>9?>9?>9?>9?>9?>9??9??9??9??9??9??9?"""?9?"""?9?"""?9?333?9?333?9?333?9?DDD?9?DDD?9?DDD?9?UUU?9?UUU?9?UUU?9?fff?9?fff?9?fff?9?www?9?www?9?www?9?=ffF?=ffF?=ffF?=ffF?=ffF?=ffF?*>ffF?*>ffF?*>ffF?n>ffF?n>ffF?n>ffF?>ffF?>ffF?>ffF?>ffF?>ffF?>ffF?>ffF?>ffF?>ffF??ffF??ffF??ffF??ffF??ffF??ffF?"""?ffF?"""?ffF?"""?ffF?333?ffF?333?ffF?333?ffF?DDD?ffF?DDD?ffF?DDD?ffF?UUU?ffF?UUU?ffF?UUU?ffF?fff?ffF?fff?ffF?fff?ffF?www?ffF?www?ffF?www?ffF?=33S?=33S?=33S?=33S?=33S?=33S?*>33S?*>33S?*>33S?n>33S?n>33S?n>33S?>33S?>33S?>33S?>33S?>33S?>33S?>33S?>33S?>33S??33S??33S??33S??33S??33S??33S?"""?33S?"""?33S?"""?33S?333?33S?333?33S?333?33S?DDD?33S?DDD?33S?DDD?33S?UUU?33S?UUU?33S?UUU?33S?fff?33S?fff?33S?fff?33S?www?33S?www?33S?www?33S?=`?=`?=`?=`?=`?=`?*>`?*>`?*>`?n>`?n>`?n>`?>`?>`?>`?>`?>`?>`?>`?>`?>`??`??`??`??`??`??`?"""?`?"""?`?"""?`?333?`?333?`?333?`?DDD?`?DDD?`?DDD?`?UUU?`?UUU?`?UUU?`?fff?`?fff?`?fff?`?www?`?www?`?www?`?=l?=l?=l?=l?=l?=l?*>l?*>l?*>l?n>l?n>l?n>l?>l?>l?>l?>l?>l?>l?>l?>l?>l??l??l??l??l??l??l?"""?l?"""?l?"""?l?333?l?333?l?333?l?DDD?l?DDD?l?DDD?l?UUU?l?UUU?l?UUU?l?fff?l?fff?l?fff?l?www?l?www?l?www?l?=y?=y?=y?=y?=y?=y?*>y?*>y?*>y?n>y?n>y?n>y?>y?>y?>y?>y?>y?>y?>y?>y?>y??y??y??y??y??y??y?"""?y?"""?y?"""?y?333?y?333?y?333?y?DDD?y?DDD?y?DDD?y?UUU?y?UUU?y?UUU?y?fff?y?fff?y?fff?y?www?y?www?y?www?y?=L==L==L=@>L=@>L=@>L=>L=>L=>L=>L=>L=>L=?L=?L=?L=0?L=0?L=0?L=P?L=P?L=P?L=p?L=p?L=p?L==>=>=>@>>@>>@>>>>>>>>>>>>>>?>?>?>0?>0?>0?>P?>P?>P?>p?>p?>p?>=>=>=>@>>@>>@>>>>>>>>>>>>>>?>?>?>0?>0?>0?>P?>P?>P?>p?>p?>p?>=33>=33>=33>@>33>@>33>@>33>>33>>33>>33>>33>>33>>33>?33>?33>?33>0?33>0?33>0?33>P?33>P?33>P?33>p?33>p?33>p?33>=ff>=ff>=ff>@>ff>@>ff>@>ff>>ff>>ff>>ff>>ff>>ff>>ff>?ff>?ff>?ff>0?ff>0?ff>0?ff>P?ff>P?ff>P?ff>p?ff>p?ff>p?ff>= ?= ?= ?@> ?@> ?@> ?> ?> ?> ?> ?> ?> ?? ?? ?? ?0? ?0? ?0? ?P? ?P? ?P? ?p? ?p? ?p? ?=ff&?=ff&?=ff&?@>ff&?@>ff&?@>ff&?>ff&?>ff&?>ff&?>ff&?>ff&?>ff&??ff&??ff&??ff&?0?ff&?0?ff&?0?ff&?P?ff&?P?ff&?P?ff&?p?ff&?p?ff&?p?ff&?=@?=@?=@?@>@?@>@?@>@?>@?>@?>@?>@?>@?>@??@??@??@?0?@?0?@?0?@?P?@?P?@?P?@?p?@?p?@?p?@?=Y?=Y?=Y?@>Y?@>Y?@>Y?>Y?>Y?>Y?>Y?>Y?>Y??Y??Y??Y?0?Y?0?Y?0?Y?P?Y?P?Y?P?Y?p?Y?p?Y?p?Y?=33s?=33s?=33s?@>33s?@>33s?@>33s?>33s?>33s?>33s?>33s?>33s?>33s??33s??33s??33s?0?33s?0?33s?0?33s?P?33s?P?33s?P?33s?p?33s?p?33s?p?33s?>=>=>=>=>=>= ?= ?= ?=`?=`?=`?=>>>>>>>>>>>> ?> ?> ?>`?>`?>`?>>?>?>?>?>?>? ?? ?? ??`??`??`??>333?>333?>333?>333?>333?>333? ?333? ?333? ?333?`?333?`?333?`?333?>fff?>fff?>fff?>fff?>fff?>fff? ?fff? ?fff? ?fff?`?fff?`?fff?`?fff?L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?,KvؾKd= _I>>, >y>>X=.>&>%=>_?;ju9F+=@=Zݦ=U}3=rT;0>=u[H>ܚ=,3=#=I={3>2/7A =u=P<\<{<=aVVۼEl$.i?L?HҾq)H!4=p?k>u׽ PZx}߭ԽyF{c,t=4=b#)N# B HػI޽(<<<<<\<< = F= VżAU8+ \;D+<`,d<^<=[>(d=>i~??>K%?>>[h8 #3qZ=1 -v6>:dR9 -B=޿>( 808Mx8Z8P8+8_88M8w989C8L8V988c8:8J.88T8@4888"88쨼z>v=oq#>!>1;>=> =Fwe/k7D4%UB>4>o>^6>>c>ܛ.>K>̤>9*!3->~D=􅥾 >L=::S>=1ѕ9=Dq|A[,>/-徽dž=\ 3==>UgG0>f(I$>?$=K>(B=>w7=p>蝾=|A,>;PZ=]kV89L7a8 r8 ~8X8CE8jp==}^=f= f=#P==l=c=Ki ־/Y=|>U}">&R>eUѾFnh">ƊQ>?$H{%H=|̼ƽ6J=LJN D>ЬOa<>??+>&2,?$?B <:z7p>k.59˱?N?& ->#?>%>>`5Zh> >݌:?< ivK=@ +@?!2r G+-;;s[yy1@Fv@Z\2>de@5fmyb@^?+rJ>9X>܎>m>xJ>\ L_=x`K=?|{37ܻStzC8 $9.6}&|R®pþ*@v4PUn徜 ؖyY?j5Q?/_\S -O>ݿ$MX~pݿ i07Y@h2?=-vꤹ ԢkB9 -/~*n[88䒹C!7Zy7>H8u7S(_6?~\7f7K4=>r@ao?t -L?2/B>ZM*j(WDI? -c=&7@>D -=p=q?@DZ~A<89T7۵8[8]T519NK?F?A>.Z<~>?&gZ>޲>V),>Xٹ_NUq>K?t6=G)<8>=vJqa??՜!<#:j: $2a<4!=/꺆g8M>=92l;QHin ;Y7y+ޏU\YC,˳@':K9=b=޼i^Gh JM<;׾9JW+=+*"<9V==F><V&Hᾣ/>ҽEg=G$=`֧>}J2D:zbJ>-~m8 @=>оoL:O?usq/z :2mu=6gps6h{پB>cͽC9xH"L 8KYBM9pѐ9^h>f=?nBH=3Oľ9¸>j⿾򎸩aFu"AG8a$cof=/j>J漙gW>TC3|ؽ 򱽡9'RQ!?U @1>B9 y:I=S(??y9=C|>0 ?9=z]8I4dFm|>A'9>u$f9vU+={>PA{N;0:=,_= =K]=\9}!=޹W8p=С8)]xV>)Bd Ͽ8QQaL?MHb@y>{y8;ѭ9oQϽm˸*𴅹:T/>) >Mָ=7eb:R񚽙$Ɂ:gk:ù]e)9|>$]KY=946V>h]¹v.tہ 9e|e7 g:贓9Չ9 bz=G0Fn]>y)?6i9I=|p9&g;m>55;Xe:/O?\1R?~B}>ɶ=0#:K:*~9=)98:n=M4;NA=?:K>(DQ.̳>J#<<I߾,WZ>8j9#(L n :Ir9e95c75l9B':84Q9iӤ -7^9v9:'--<5='bY<8#_>8HHs_9J -<%2EkIKj=e)=N <]A鲚l}~=}8=D.? 5'\:j?*.>-2?No<佄ļY)G:pZ ==1:ܳ<˖:{8MJ>1|I_x -;Ď= >%>o4=YCgr\><=8zpm;չɸ>E -?C9s͍'?Ma <9=]ϼ{i9 ']8>mS<=?>.I?﫹A^(<=M>,39#o= -mY`=n) ɹ&>Z7UM*!79U=y9et9r &="^>G -=9mm*|!9˻=("7Gὗz6|9?> yK-м.N=˧mǸ)>ٹ -KN8=\ZbRR8D?=!ƭ?&W?d??v>&>>C=Ha?|?PR?CyjgC? -M$>v?q޿:48?? 6?|޾5图h/ >d1=LV>t>jͽ[¿W> f?N׿Dr?>>B>K>?2:> k>>=B$Ol6X4>ka=IOU>w?K>*`=vM3>Ā>=nyM>e>m>j>.T>?=&5>ң=(>TmUqĽi <8׽>S??2>\>(~>RA=j:??0Ne?}]Ȍq)G=>c>A="G>F%?>Z!'G"|4խu=n>c>>S> ->>V>Atݒؾ(dE. %|.AXtAkﺾx%LGӾu1.K'c΀ -87a;ุ*V7l79PӸe$5?ö?$?*EL@)>B>)Ǡ{ԏY'I( Ƥ3jA>>>>>f?"?N=R6>>*g -t˾r#O.oL*?J?+?Ĉ?~+?KUC?"?Ņ> f>ʞ?}?D>n>1>$=(ֿ5'-=6>v>y>G>?:>W==O=JW>ݶ>L>`]>Qn>=9=8"=>ѰϿ\5?AԻ?!|?4;@?J=W;܅?9?_=d_?Wׯ?>>Ԧ?oS??<=ƾ|>?0C?#URu=@&?'=?|? <;lL>;k~=i6{|? ;=3=7:]m=t #ƈ=kOP;3ƽ>m4-ɓ: >I==y>٣>層xp<q<@K&>`;!<=h{L><9?]9CWhZϻVG>}>?7>d} -8=%P7 B&>4j=`=+8>/=%=r=K}0=1~= uN} =pQ>]>KĻ{`U=Ӱ@r>g>hs2ƻ9=w)84P>_;=/*=a7=G H>aMM=A>ȭ:>=6 >fi>c@"=,>Y7=l{Pdg=5z`Ec%>L>ϼ~(=;eG>CPȭ=OQ<ќU}p)z=>m̾`87+ѻ;z{Z_p=ԼFν<y=A;iHV<=ްș=f=W`u=|?!;mZ=;оcV9 _=Rq>* DG<;[1=]7=]~5^zt(q_;v=JR>wfj==7⽹]#HU%<[۾ZA I`Wu>Iܓ=B*}q@k<>%a>>=ٽޟ6Ux,eRĨ䯾 -=G=JS kdd<8 3\Y#>lĨ<*{ts=u$.]l<>Oq璽r/ij^>ޕW9Ѥo;!=ԙ=\*ubu-ѽhֽ =|\3Rk>\ƽթLI> %ō=<8Ĭ+:a+ͼXV7OT`S=E5.<ɋ۽ʾ˖^= 6>]}LB =h䬽&ӽz;'xO2`="b>5#V |=z>J={jO>R;>i.:c=y:>Rt8=:aC<<|%Y=ま4%4>+0=X=ν ?ASSپ"r"=`M;T0>ս=+1J$pؼy=s=1g`9=-#G<=:Z>eLp= {=oT °=͙=A<=9=8=vE1>-#)?̌>JY=m/N҈;URL9=qE<ԀO=Mb'9Blgcrk2$3Nh=+=<=) ȼJ8I{<+E>LN=Ԅ'<,=$8:zBsc Ƽ=S/Ͻ>UԼq#=,ez!<#Ƽ핽'>C<</٫V=qֱ=RFe<<B;)/=u=1>d{ t7=> :u$><;R<~k /d5K_=kL(>U>=i;IV%<2Ma1K>38٪^}ACq>]&a7ƽ6qTT`[j2=:Jq>=/>).Bˮ=V>sDѽYH=I-rcl<>娸+>|>">!i;R(=2N>`>c1 =T`O3>=$:V>Ӏ=%9{>ĪV <=>B2s< d>C>/NQ;Ckʇ\j>q[>>C:/%EP< <U[<}[>}=5=Ml=M=L>j /8><_)> =Ž #T; &F>->E=a';AּN{ k=Q[a>Cbw<'+Hhb=5;$ 6wͼ  8>Ⱥ==I ޽<a>p=>E>'>Hb=@'=">fX;<ռ$*=)=m[>=UŸe`>ճ<3=C?<>ά>-7e=Wս;>Oa=KD=@>x.=ƽ!=b >U>\E[w>>}i=);lRk=>y<ּuY=֑=ݽwz<c-[<;.R=(R8E=TA>+E~f"f!7:L=;R| >md> ?= w>bR&>7K=&>`>R=qȾuv#ؽ^;CS<= -s<ڔ#o>& -*=x; ]=?s <O؉:O=[+,R=A|TnNE6>kGb=Ee=o7^# =.ja.biu/>>ʝXc#=/kV=e=~->λVR =ѽLRz=POr<Ͻ`).=f=D&2YR -=<=cRG8pb5=H"8R<'];oa/=:=fvI -[K=nEOY9/~ 0 I -=<^_H<:3>7=2kj5T2̡{޽t==*E*;<<= - -']:+킽V> ǽ{Υ>>nM^>mx>7ZE -L<䉹ż~?=u<=a ?Y >lO>|=k4xO0?Qb==/<+T>i䫽P>[<=j]}A=Lo;$ӽu(>=c=()b/5>kX=3=Czmw ێ=9> ˾#p?Dܲ?T?(pd?=?~ ->/?pl?ey>Ħ -?j> Z?۾?M?pc/=`>:?t>.?U?( 6=Y>1>9> j3G@`Q׿"t?>eӕ?=e9<ESC#nvBx8>ʶ06>e>$᾵s>?[<V|?[>4*Ax;.d>;?)>i>>ݽ~ >a=>ا?Ԕ_=?G?t*>NJ?n1ɿC=(_?=s>N>?&>s"U?!]2?虼۾>.p?3=Řſ 3H?7>q(̊?O? F> -l[%!=PQ=M=qEn>3uB>rc?w?zsQ=w>2>x>2 @ľ -.gP(]??'Uҿ? >+?>^S\?G[p?K[4>NM5? +?GV?I8VY_;B??Q\L ?J>MtǾg}+žƽf.82Fπ @s@⓳>q[Y>潯LQq5?m<8>;W)?^Za0?w߾=>#=={23IC<ɽ=Gg­=X?nV>̻(?VY6;=C>^n0?v}̾讃?\)kD^ᑿc?A$?56?Uվ NF6ɾwE>`ʧ

~@0\> >j>j_߾| -?/ՠP>AʷqU )?_=8D?Yu=>ۋ?C5>x='?k?DE>?瑿>1n+&- ">4 L@ʼ>[*p?Q>햭?͡~>"۾#>[h?=D?``V>3>?>P)?lľ>?8j߽W>pD< =~h>? v?=~>rwi=w?g? p[;~>_>0H;R:[> > =6 ->Bƽicbjխ׍oiX$>fE>pUþYԼᮼG&=j^<2>PS@<;1=8=R>?k=$Q=º+>Yk<ʼC]^vͼטd=$٭9<=%e,>T.`N >*=!F>5N{A:>WZ>;=+9dv4-T=[=>1b,8=ս -w:2O=%k~=v=uȡ== =\~a<»ϵ=5tp< '_e>#Y $;E[=(>=>a]=D>r,<+=湉u=N==SM=P3<=ian Q?=,_;Ln[>־\<8p˽n\<*N <= +`5:3> >K>b1e >kϾ밨eU4هT~=@8e\=U8k8f |q_\57hPY8B#"88\^ٸ /8-pK08&E$&8 Afȷ 2>R<-<|ೂ>O<=KM=Y^'k=x;*l=*WP>t>>(?=ޕ=&=-,OO1=b>"h]>aj\>Ǟbv/ ){81r=_> J>=> >YN޼y8=H=)Խ8* }ýn>j>GXs<$ڂS>dy>3>=+n>쭽K9F=:X*>=피f>ơż>`=r1=>=Խ=ɘx<eiEAK>:= /"ETHh>!NK>lȼʙr>;LQ_o>rq>Ǡ>Oa=KWS9l|`kE]FD?T=>U.=PH]>B===+>: N34Ka>h9=M=o>KGXN>Uci8o >=e==ʀ>w&?>V><⼻Z<; K:1OR>orS.=_c&>4,=Ek;> ټtɻV=>5뻚l>4=ЬZ>`ht1V4Ͻ-f=6ɼU)~Q>;=,Y x>Mx>N<=c<"{XK=O=]=B< >F޼)H==s=$0V i[=x =;U#>ι>_7m(>ڭ1Hv=*,lVVzػc==>Xjw֜>'R=)D>I -xo4>wK>ԕϻ œ~Z>Γ=>q޼P>=T07=Pͽ|n:f0d3ků=;Ql2𼖒ӼYX-^e?u=|PG=6H[O=F;; >vB;],>x׃> >]=x=ώB=ŴӽI/Ĕ>=}kb*ڽ -b>w%= %킾<>#żm=)R=k=>w=Α=Dž;2=}=#<==뚆=V7i=z9W% _ >Cb=A'ʢ>A[ݽ&wA;q'rLiq=GjʽA>-D>nɽN{!_.ꇜY$>Q=NŽ1ӽ.n>|?>I==k|>.=YehoB.#M=P4=">=v=l>4)3Ѽѽ6)M*y1"5e潂JP=ϟ=hP>=$qF#>5͇>C=#׽$!> ;;.* |/E)QMn=d;6=s=*>Q=D3|;g >< 62=ʽz= B=>g>g1.=S<{,= Xc=5|>]6><=!?Ƚ]w=쀽5x>^"ȽEB=ּk0Έ%<7?I=SLsOsf=R&= >=ŧҽ -[>Z[=&=y;=?=zT"^##{;l=Q2s)ý׺|b=C+4sۆ{=?)#e"#j<1DF=U޼#?p<}򖼈<\zL==@>nwO\=T"X< =sYE#=>ݳ=Jy3(jbxD1ȪTYbҊ.^>ھ=[;+>BCZJL`p+>d@631=j u>@=ޕ#>c04=h]w<6 D> Q%9<KZQ===2=Z ><@!Lӛ*12>=!G'>%=ӂ5ԽA=ܵG>7L.{OP [= -=>vɼtH89ElzxZ>:>r*=1=](DQɪ>RIU y=t%_Խ&<-4J=P--'(@ic=ZSwЯL5=D=N=0G>Qk5f (=Ü>bq=z;C͆<+={=꽽Vҽ==[$@әL>O>K>:W <>,>e>o=!+<2z.>PxE=,=&V$=a>t=RsBh>T=>i=nn`=Ws==β=⼈9>x>\F>I=;nb<-=ji==d>؁6=mH>ʪ>!>/> -=?-m=jk<>T輱.D>H -=e\9D*ͽ -s>vBh>ݽ<6b>oQ+>t7LS<>CҼWTkd4 ^S&>>V'v;|>̻`:׾zۻEνPxrEF=af 崽HbS!R8u劸C7*&w(7wJ87u7;c2e88P7!8iC9M8x$/8838]86ı8676r7 6Su7Ƕ8>N=J=,0>Vgmu=yyN=!żM=5\h{-Ap> ƽ=`3ɋtQ <=>89<ת!sME1~m -?&>=Ey=C}?=Z Od>[7"= [n<~> &=@v3=dh;WSGb'>ŵ=G`=RZ%>û;>E>%7>:=L؜$ p=f~k6<@/>KSDs. lV=7I3;hA>8VY!10TG=>۠2>v >*:`?U/ ˽/==3ڽQ@<|t@=e@(m;;=ۍ^a>J*>1="EptѽҪw;E>=>]&/Bp: >=4bj6>6O>>5=oA>A:'ź>yK=629/>^)'>ƽV>h0`;Y0>MJ 3Iℽ?Z(+r=QcΓdX}χ*^7%.>T>[\#do>s>$<<}TytJ :}-u}@HX󑹽ռ݇9 L3=r)>Ș=W(>6sн+>l=Ƀ=LW6G}?S}: -;Sܽ)J>ݠ=q7>Z >xWB:潮}' -v=+؍=y#dؑ=bs̽D u7 E~.4=$@= ?\uN56H> \Qgҹ>S>YfQhGH> ycl=4X`XIЯ0>{Ϟ&h$˽Y'Y+!뽊)<]K/pq/Th7L<$}L=yoȅ=v>]h;>/Z>>AgX-^i颾=I>L>o1{½Z >S:}>>keW:m>q<)oRIV;{&>죻˟l> ->><>`>$+M9wG>B ya=D=JZ1=s8 @>s>#>6$>7=K* >2\1孽dڽѳ<ڽ -z=?rAC(->k-]'>XJoyb.3!;=s"tOf>Oa=D+h=CB=$>g6=N=ʿڽYv<#=Vx!>F -Ƚ}x>?->I{!>Ҽ>/>i+>o) x%ӽzlfj>1OEf<3>=2=K>r9:b(=aҽQӚڼ6kH< { %'f>(> Z:К:<5y<8a=ֆ<>S<䲨+R>Xl];J,J=νɒw}=Iώ``<8=>V=f>ı\HE=ʱ >$Լu=]'=O=N_z=C`=Wp>f㚼ڻ>=3<Jv>BaM=ӧ=2 ><;=Ћ9Y<9<h=j=ޡc=Mqq$>J&*;)(׽$2>k<bS=4-D>;A>`>"}ɾzh> <}=_T}ڳB -L4roƽ7i;=%0MS\E>_&=ij9->Zj=J#G;="7=jҽj>`gJh>E>#%=.=K_=ⰽM=˷2>ʐ> \cM0=STX>b+wvL>>T=3HQ;MvFyr<Ϋ<ڹ=.Q>w=`>=z=u=GO>{OE=>9=,=Z: -#˽6` =pH'.sm>1=nn=@Ʃg(Y>wW=||=?s%=ΰ=7#=Wn-= =F>'>'upe+M&>PNw> jf=;B*={56="Z<4ʔ>TdX0Z廡:+w=8er7=>X= m>xe1 -><=ؽd>Hf<ʽ2<|R! Dg+WT.>2 >=싼WQ> ;:~>,>k*>G >tMd`а:=AACI>RY>|սu`3=e>EH=;z= <*gy=q=Tz=̄Yk0c -=5ڄ=8pF>,8=kUi> 8>WIX=-h;U=$br;c"JD>A=̽\v>@Д7jx }=L=*R>䷳<<X^D -?21 h>؆mM>kg3?j= c=Z>np== =P>+f=m>i>i --ɻR===﨨`H?=Sջ>WT <3R 7о` -V>v$v>a's8:,j=[h>5~>`N=LQQ?c??.>>n> =Ed苃D>DP=<>YGͽk?>}ZܾrdBx[>U1] ?X0(p-`D>zs>H?ڽ(y>6%>qAeosUcx=O(={~n݀o<½F~mKMq[7+ȾB_3;B7kM*z>{]>=|\:=7%>?> ޽pfAh>Mw?>},-<>>s*uվ=U=t|>$׾J%/=>6>=XH͍e>QG?S?P>}{ m>?X>;w 7$,=<>SPOgg^VH`=5% rU15<>ä;D[]\K,81Ⱦj߻Gv7trLɪlk_6WV) (:="8桾gb>;둩=n&='xl^> >/k>B=> ?ǣ><> ?^^;'k>#j>>]a?> p4=0=?**?zi>'=R56但>›>5/v<߾(_ٟν8\.?f5(?׿>x<[w> ?,?l&>[=&4Hq{>$=B :JkȽiF\h˩d{ wE1'8kٽ Uy`D۾ -0:UMx!h"$I۽ <$;\=zV2V`}$hYMȾ>罾н"J32׾6oGhݽ-u=i>I3a%žג>3s>Q$,BR3,?I?֌ - ؾ=>9[P?1 >IYq 8>?#>LOf=k=9f۾Q?>D>3=((#i>Ԥ>@>jʾ>Em>Yr>`| Y> >:Z*('}*b, ݼ:Z 9˩6*G)1VNܕ&r7ҾD=U౽zy>U.Q>LJ>QPݖFj>Ӟ>?zf gЈb>0?4>v]̩-\=s=S=s=ϻSI;g>O -?~[> Ѽ=6j>jS??=G^r]=;>jh>{;I%Bf=ձj>>>F=o= ?1?/h>A2??{>k*=>p>}=^6\?߾t f>>{> g>ɢS???OJ>S6??y?*l>T?X9( =vKW`?vlb=DqZ -nN#>~q@S\?k J;/]s?ʘr>DȽId>],BDeY>_D>S>ASJ>??Ͻb7`>>C:Mwv!½,-)>>`=>|?C>ԾZ>u}>cҾ:>. 4>+>Ԫ8䝾Onh=澿2ZvC)Ma@6)66EE>ȡԾ=GiL=rF w8H3ڽ ξi݊s1o"C/;N?><ԇ2>`>C?-?co>r=$O=E;'7szpx>Roǽ~[D%{}8qI;p)8"MFQa1 [>󸼜:`> =e=S>?g>= ۽>L?w2>=d=l_Kh>Fƒ=wn;<⽾EMžDЮdȎ=v2\>\y=\5=Ċ=N::O>:2E>8>"E d_"x+>! QpL|xH+l漥 -Ӗ>nD?2A? ,>Q=h?~?ym?S:=}=n>(x?X>F T}aP"џdwM>|k;86 >o>uB8?~?=>Y>4LJ>G>EW>͈=ZhνZ9Q. =^/YE,=Pt;s=y~eִ?yL8\ݾnY8"blDrPm=y=һCʭ=i=>6=?>=+r>qn>`>y>6g=8!>b>=n>=F,߼dr=*s<<11=jNn*} =vq=ْ`xs`3,n}#غo.LlmҾO>'ƽpԽCa-aNZ1'svVz|f4=?u@?hcȆn>v?y@r?N}( 9&9Zl9B9g999 9vՓ9W9b>9[m<{ ?>kR(>5M>h>t=۾Y}=B?d>нQ}>;>ރ[=7 >;[>FIךy?#?9?Dtr>᎐>^*??i9?Y>@<ۙ>#?\>ǔ=P91`]QTڽ=W>h>f$8{OK>4>ؐ4!>0"p=/?A!>YHァi9P~U齊<1=>҅>e=dDλ (Ƭɾ\egΥb=| )׺IAO:=뉽+<> -A"=Z??\>uA=\Z=fi3>&>=ݥF}ac{>^?pE?Do=jξ9?m?,>>)<=emb=>$Zw=b'%>V%>U>>1V<ך8>W*>/?r?Ȫ=H=>>7>r T?I?Q@y?[?\*@(@e?>'@H]?LDc<ȿϿ*a,6Ю>+H=#b>[JQ>r~ l8=etg>>>H7>üyf>9=/>t?> >> s2>._?>"ǯ>í=g;/L5H=3><m";ˉ`>8O=u>jbIU6>{,==ɾFŽb8\QGժDzVoJDL - =,IV󼉨ҽl\6=պ<.>_>~("?|:L?l?8>[ |?=HJ>,???6k ->*?o?=h=Y ftW-(0XKct ^==À=k>ci!>=">n-!>>=!? >&#M2Ty<>>>&54>&F>U>>;OiەI>H^T>w%?3>2KpN>V)#W=/_>%?0羭w>ja?󳾰Bdw=>E$Ev%0{Bsםս*Tt/ gfbG+=|ս'ʽz%>>5z=4r>5S>p?9?>v== g>u)?8?]A>ą>֌e>0?ӽX{!k=<q`= <=b=Gh{,q>q0>j1=->wS?>y˰!B).A=ʆ?L?ld=A7<E<> =`??;<;t=i>=%x:>^$/ۉ_&cl>">%U=ׂyd:X== >6>4?/K4?[>j=q>.K"? -?q>= +>/>!Si{/ZQz0=(þ>d>a8% ?AB>?L*r?1 ?x-=6 -&Q><5>aw=0Tw= >>>E̼4=>>G"=lA+>>A5h>|=%W>uu>QFK> -8> >lp_U޽N;JݔQ!F.=I=,3>@=ǎeº>9?>v>e=%?.|F?m>?>OL>j ?yE,̾=/?X>Sp5k;i޹>&3C>|J?pD?7C D!Q\?*>O>&K>i=EϽߗ).e =od} {r'k@\JH`=4>>mLc=>?ٿ>Š*,>*>S>yblؼU>? нOPyD{>i,SHV=<==>=K<8&X=+_/e/;t޾Թ?cx©0ξ9!iᄈ]ИUCxY=8 Ľy4!=q$ \s<i z(~ž>>m$߈?n %?>; -W;y*?>$&]voB>=kXH?UN"=EP0䉾*噽2,훾"ξ-rȾ0 Mm(b0]jҿ#T D=$:!h=~=> ?B>d>ns> >1?><>d=>u>{~ > ϽҵpQSܽZśd]x 9d?+?-R@|X?W9oz?xjP_O5?>m?1v==ff?&=(5"eb=*=+N>5?|> -?\0=[n?`$=2 >n?_ýnS\?r>}B:𪘼e>9S?(Q<:>ɽDM>8Ǽ=|D5>,,=\˾_>?v?2Fb>Z6?5_>Cg<8;!'>E>l=gwa<=7)e_=>=ǽ7>(9ԅ>;;ک>=k=>[K2] uZ5>b>cki>@C82=e=ئ<)<">!$E0˖<=0O>irjƒ2<5= (7W=-Z=NwOC%G0@>->mr>S=l䡽>{޾¯̾"9h!F>>^9>ҼR -6D>i?;Ľ8 >>>-q9F\=m,0Me>`ڽ?=C&ga\^^D=K.'XR.Xi5= LuʽZ=yWPC>\?= F:=Ō>W%޽a(>fhzWA+= Q=]7S= ߼zӹ=[$;+;8A:VGP$">'qD0=V0k=c>YA=> -9 ǎ;I؁=0VI=gd6>Sy>k罃z<Z>_>ʚu^=φm>1=E>OHܹ> -M=PľDU">H)s>W뻓( >?>͹s>R<H=O> }Y;3x>0=L^4><|p=<8a< = )Nԝl>/=U0X>C &ː8b =qOphMߪ=9j>CC2=9H=q>t>0XTn>T<"=I=;=AII=.=ڼ 5=7ӽI=LW>ݔ>ӼW><}=V M+ >|齽q(X6~!;,gJ{a6<47 >QcR~Gm>LBT*Y:M=:yVH[{ =:>)Q;ν':(Y#4CNlO>N =j牾!=cŻv>= Ĉ=M%l=EwOT=(;yԽ"LvUg=s<õ= ?/=5=i,?serhU=TI:=LȲS=i?x|<<^,*&Z(#<~OOMq1 =Z=JښFv;-^ >~>98[ U::B>R?';<=Cn4a3vHʼnV>&a}߽ZzϽ襾812=TpQ=7GH8G1'>2y -K"/>罳=?kK>b!mھ󬀾ԁf+@$-Y>2%@ENS`9+>A=)dy, -icB*W@>F<>TV`t6=ǐ=C*u=Gy>Ҫֻ$=%U -9==5Ww;C=>=ɸp=m -@==Gǽ'1E >½~< -=O > ,{~^>Bw 0=h<< z,=9[P>.G>}=>=A58x=Vs>=ϼ=2lӻ -ܽ=8=ey>ρǽ5*v>Y=Pi-w{L7 +>=;:C7=`v =b\c=P<5# =7:j:oK< Һ:;4k0С)&@.^r󆽔q- [=Mt>M?v=v+jshMg=<'6ڦ<"%>)*Q>u:"'VԶs|?8H罃r=O$T9>bO<^1@oպ<\rRkm=< =AZ1o{>}L==5nJ=$¼Z吽1'=<=u.J>AR>z@ Z< -4>%=j=xUn=z=Sm>?QػEμ (=>֜ s<ŌvTaQD拾5:A]P 7=zﹸ:ƽ3

kƏ=o@$7>Zcʋ=A)5<5E{Xfҽ,>v>Ɯ;6\< |c_>zb<Ҫ=<ĥ=I!;_=\]u1ĽbB bZ=DDq=|o>;D1>ɋV=)O𹾩>z<>C=1`Y=q𗼈Fr=c=BdpÞԽ*=˹=C;0>2|6CŲ( zeIz -Ys|nz=xqY>E1gdJAQ5:->4?G>'Y c!M=4or͋Kr2=3(=}瓽%~;gv*Vq=+v=?R:zG5U0rL`= f2,SmQ-3="oG=eH&Ҥ3.$]ʽ5ߔ ;=j_*=N>n t1f$<== >/sZ=>?|,T&8>0T̿=!)4=1ð|5F -`qϜln4<=g|>/ݺQ4==3h<3[=#CF4=8ɽEn<_/{E̼~->>.J=zm_ Y; E+o><'yV=]=8aM- mH=FwP>1C˹P&s<ܼ>=y޽YQ=(=0>Jyv=Tҽļy(p= ҋ>0>aE=?^=1-=ﳰzyL>t >=](Y*1>j~]LZJ޾";d' S>Ѿc>:?}a>nZ+ |%>9gKwW>?2/4>Z=o)<+ >=>ʘs>u!t=̖Y -o=< aN=T >wO-:%v=!aԽZA>W>޾*@ <-TlWD">ܕ>oj4> E=7&; [;K>`ܽ䄹=J~j>pU=>zU! -6<$g.=JԀ>U^=">^(A F=>bN6>?e>6=7k p  >SĽ7cLvb9\}Ľ>b>)ӷ33=BÊ=֦p=D>"<~мp[[>ȗI>l=A=>=nͭ1fZ=y`&>-=K=B4p.=j=-4i">A\ ->2Z;Sn54.eZ=(j_I=f8:==oY>\. =ngv퓽0X+;%ē>-=NL/Y:Y;`#A5=<*=7aw&Νb߽J% Ae>̺p)Լ6ѽ N2nD,˾&='M<ҏ]b<#4YOh3mw>j> ;/`& -a|=UAU=,C '#sC= m8:y[1=ʼ;aۼcWUNX;A=稽]/Uu1=V $=*<]"<Ҏ4uk7LE>"['f=0ņ=WHJ+Z6Sf7=jH'Ƚ%ٻ39ڻk =t䉽_ >/qÎ=b,==+Ծ92S9`l= ph;!/=z 5>=۪=+rJ5YKg&kGGE>>:yC /X$+u/<>N9|6QwK>8ݞJi}JS>&$|<T= d<=e>soke>7콎 [=0=5t^֮8b2>o`>iPQ>KΒ:mHs>.O I; -J> ==7Q8J >ل XPR>JK*>",="<̎s=7TR<>~7dܽCŽ/~+>FC=ABa>mx<*<=#fOv=*}x;8dт!9)7HR4'Q߽'D=U_do4N >. e~c>r>U!!~"mؒӾXAd@ k=U ==pi"6>#LX}̅=qK~=qoڍ/==~s=ђ^9VK2>@}<, p= =Æ>!=ޠ9!3=> (tE<D`R0X w9ɼ::S;ֽ=0l|iu">Y: 㲣4z>L=m'R=7Xoq ->UF=$=Յ)=0c=[d@E>M>=)>=N:GD=ҧ=@H= =Ť׬==I=[TѬ|ƔHt>U+ =ԵU;M줱d*g[`>Pt=>{;XUDI>2=@>D_,0Hv>FK<5xL>("8>HoW>0샽/ll7=S<ʻ. -=佦est>=Y9>L;<=ذv @RvY˽:э>B˽bV8<==;&`=i>,=b=I;b {ν!%0 ->^='P)>ޕiV&<þ΄==KA=>43'>Jz_G<$8o9۲=p@=7 g>^;>f(S@=Vl"&5=h8I\?=>N>:2=8]=`M>=p8=j ƙ=<4>VU~I ]S<=lN<d=r>SjhZ -< >0<"v-/5Le=*<>Vibx=׍8>F ~ -N=|%{;9eo=;9d8S=;LS==a= =w Y=>;K{==|yrq= =q=({>w4_c=^E@蹯:e=j@+>q;؅><30=><PS=FE>nX., =sه >Jټ̪=B>{D=ݝxˡ=l>̽]`=3F3>;d=iU3׽qB`Kf>P="v^꽄L;I[\ɽ W>-=./;Ľ1Q>)y>)0$$ި"->^jh;3>B8!5v<3i;<>nq!<^S>(92<(:(~!wCa=R%: ΀s=t2+>[>XP>Cz=>=&7<%9<Ѱ; }> S-뼆X߽;;H;_=5O<~=ڥjڽߗӼ=E'='37;ؽ=Ҽ>x-~=Gsi?=+Puۣ;> ==8}=Fr:Ujr>ǟ4=\I>y=g;3ٽ<>on= Q>$n]i-1+y c-5Fҿ)<D=hf~=x=޵+=d罓]zݽ9+wI!>C=(u=\`<虾E5S>}:=&->=B">h-=)>z*׽_=Pp=<=qn#>=>0\=-=ﰼ;! ;5T>8,˽HOzo>X2>Ô->l(G=({T?> KQ/?M?k ?hf?>j?lh< ?\[?B=/?BǾK5?/5?+7%?^=P?oὌ3a>%>.PUZ?|8;>xp=۔ #I K4=~&= ->~E<6&1C >6\<ߛFU h>Ti;3_[[۾Q_?>>ãg=pbC>'.>dL0+5#̻=g8?/낼L=j>Cjp<'ĉ==<=]s>z=ً=G==>(xD<#d4 /#"=~BI[HBݽR[/l=<>#X=dv=>_?>0>4սH -=QF2?uǽ=Tڽ]O>TR?]>;b(>:RyҚ>?= 0>W=G=uav<=Z@>=>F*{=-|>5=9ھ"Rg_fԴaYJ%V=3d>]z?J >i<=0M>!>8P>Ȗ-ZOȾ Ą<3=hm>E=o,= n=,&3?HϞԽxD[9c>P"߼uPSޙ-ʚrn4_]> L?܀>_U?5X:bD>:A>*1>w=3=!꠽u?=G$A6d?;@=":YL*'2+ ->m<N s=Ңvr>>%>=ϼ=[>2?M@>㌓>GreERӼ/=)H=2?ZϽ큒> FLc>r0>WcD>[==f=! $uQY=%>^bоAټ;з o>e>7 ;\-=mKվF>,>=====Hى~|="=oI=L=Ig; >=w>#脾>G>=?%=$g=93>sڷ?Rm O >˷==~л91!<8d= 0 >?EN.?.A=!L=[5>>1m>>77<2[>4B>+>=RT=1===" J><](J<р9&%=:W>^#>TIvk!>7>xn]>?1>jl>srX8=?_s=`=Jm=8=ˊ,q>v"q>???+!>9#v= ^g^PB?Ja~i?p=Pd$)T< ?>3e>l>*fKD總˜a>uJ>F+>wlqѽ/Ea>a`^,ٕז=K׋!?LMRɗ=|l.PO?l -u=z=1[? b߽M%=uO>C>N$>w<= >4e>$ pLIL;}: zN }=<=,>~‚>|?=k2 $>+4NP?hv {<3=>ݓ?9\>=*t==>y=42V;&=*U=yO=[=>>J=2x>=k=.Xg>1>?P>!QJ=}?>)F>>f>F>i>=(G>c>~=;8W>u%ʄbϾ8i>-h>;d; -U>FD޼>>f>5@?>݋B>b> -,T=E7>o\z~_.j=o"Ǿi6!p.=+M=d۾bxJ'=m>7?>y4<<>&= =}b^;Ҏ=7/=3p=0"c5>Sy>>+6 g,}8=N:=M< cSP>d%7>`#A> ?\>:?=>>E>JO!)Ľ>=>] "O>w?<ktV ->޹H>%1=Jp>p1t>c>4J>[ESŮnՍ߽-%=fbO>"<>\[j< 鐽b>>]½|1.5>[>uؽ=>>C<\Fh>=9>>c~?> ;=tl<'=>eT=?<8i>B^P>ν1y=F>T׽=½wF>À>,0={4=|^=ڛ>GW>c>=j o>1l>uh>;=D=Y=2m<|`V= ? =I>0>r>T+ -C->ͽ;zPڽ@2=d;G律|[ھ x;o)=k ?k~v)=]Ӄ 8[ =ŵ<ĔA弰=6Kڽ?T?l>,^>Ó6}>lӇ=ӡS>0|>[C>3g_<6A>TK0= -v?㘌? ->n(Yv?=f>b=gξ6n=JRz?\̑QU -)@;E̽'4?d})"?ClaH,> .?r}>`cP>#.=B0 z?o>,D=3yVL>־=LZ=^3r'V*|>>oUŽs=: 6cE=DPƻTս>N.=;]i-<=Dž L=轧B>C)>$>FY?/坲~`=wT:=ԜZ-{= nc#>,o>qMTl='RFh񾢭??{t]x>ƾ#>_3K:YL1>$mUF<=+,6>6=% ^>ýG^9J>fr[>'7e>Ӻ+pj>C8+q־c;K>=ݢ>4><=\(o==nD>ʧ>h>1<>2'$>/xB1$vz>=G$]A0>mx?LhǢB۽1>÷9Ư>>f=CC2>=f4?~T^q>r> ̴;i=NH8W.] !=d^ܰ><> ~>i왾<&}ߧpp(Rӏed9>g`S>2Ӄ=ǧp?>½*9{9خ>ynOὠlr=J>n}ծ?ҽui>YѾ&>.>HmB5=EJ>x= H>`,= ;Iq=j?>mUü =A䖼- -=DXk>+ZF>e='be>) ?#wE9QWV= U%֎>>O7B>>5 >B3<)Ƚ(Ʌ=1оP^>a/>)>3sPM`yF={t( ͓>Ǣ/>gUmO9yR>S><6=#/sܾp;Fɢ=\'i<0ml'=xVH譍;xþH7<>ˍ>R齸X=A?H>Q=䬂>zN=ӛ -> -0/;ֽs(]>`=ܾ̺>M=Z>B6?=Fg<=}5>#6(t?I_=> >+C=(=м>W >uj>Qf'='>>2!>k"=ǐkӾ<yоs|r2e߽L=Dž/ʾYƽvH>^=~z^|v>X\[?qz=`@?f(7>[> -FMH_>$^bQD߾[="sO._>iA>o8j,m>R>q:j > -=<羝kdp>P0 ׽ =?>[B=yB6><@}=5(+s<9nlR;;w[%5=_ 3q>틽8>[>B>*?Aae֛R==8DQ>=:v>; >:g;qKzM >}.ӹq=>&⊽S->>+=O> ,{>M=Xx>Y -Nz (ӽP{S1z2>=<=Y=ٳM;' >ԽI%HsK>s^,i{|l\ >MAedYmW>=$׽l=z="᜽ [9=C->-3 * >6>=OOQr>`<13)Xx==wE=o׎;~ve+<ּ{=jռ #?;o;^'Fþ?=E=[K>Zs=1)>vn=9<9(9>>}=[#c>aj:=[:.  L2ŬWm>B:=^ S=M:>O޻<cv1 > GF?{SG;>8%ގq{=!ýS<=.r߽q=;$>&:>mF=+ԡ>==W ӺX>>o?}="=zXi =>ɾQl=,W>v< -4M-7л~Ipx'^q=or^>"ӎ &dD ?GEȸH>Nb YY>>>~%uھ=o=k=սRnzz=$͑= S':ɼw-<|w=M=uzU|p]{=j*/u-?%;dA>`jUY[===>a>UU>I'>@J%=nԲ=F=f~<Lo3T.=_=k_j>_%FX>aQc>7,>nw)P\>3zV=dk>"|޽1/=7>/)>D*>k==\=U@C[>7 =Y6<'I=[UMY=aӽ;zr̽\7=i/?=4+>nU>=d =.ޱYg^=g%|>cn?Ԭ=kDH9=dC? <;S>2|=o:4> <>H׿l$N؃>!!LVè.>[I=x@>/=DL潁 ].5' 箘ߎo3<) Ɲ^\F>T2#>D>(F(_>3*=ɴ=R0DĽ+I|h=<< }<@`ӤT#x~>YP61c :+@Rjp==E<>$}Vϴ=lLg><ɏ.<">.4KI>6`sd2{=f>C=[f=' +>}нQ -=l ->=Wp[E6,>BJ_Sr>9j< 3A ->*>I1)Ajj>)WmU >p5=%g!>=}>?@<>Ы+>K -N98z&>MUG>>ܽ,bS;12Ö̾a5w>g9x=>򴫼/=VJE=wYɼ+r3(-ŽT>oFFk!bnO>-K>v=M;N==K}dw1Ǖ#< (=z<)fk>=G=:b9x׾PnU۝=<W`l>'p>j{_-B;U-C0?# 1wtzʽ?8y?8>N?^?U!??U1l>M׾v>@25>W'M+Rz{?>ٽ? ??? <{>;ѽ|@9V>o?\x>HC=A>95`X =BAxp=>/=0<0C>>bW>(E >]S>#:׉iҽ O=;= >߹0>qI =R2>>=k7J=l>d<>ߐ>~*p>Bb>x?iK> QU>${>.>[.ӏ 1>Vr2P#ryCӣ:-[07G<,<ᑾ~=4/>M-<+ A>]fR=">JEC>z:?w=ʧJvFO+>>=Sj˒f&>6:)f<{g(-+ Y:`<<~#`{ǽM<=H+?Zk=$=h*<=?0>.=،=i== z=|T~dnH0=sb*=܎rZ=T!}<ݭ= >7=5 = =5>tL?K=@=n=L<>c509׽J.u&=N?ԬzF+թ>Tl=V"_s(Sh1>,=9=r!=?=v2 ->?׷=B>w7?E >=&V=sL?ɾҭ+>^R%>A?S>m0t>Dd"=y>K>4> YH)kz >1^> -K=p=7Mx>͵>ҍ<]YN >\>~=M>uY =t]>ן>tEg=`>8νpt8n7?J>,<>5'.?~:NnUuņP?kc=8>n];>O>P=E=ĸ@d>M/?;Vh= Z><=7=D2=>=h<%e>5p+=3>{>>w>0>kfӼIS${r:G=<Θp%սl`f-HŽ᭽pήq!0|, =z*dT"Uѻmt)5Ci>Q=>>o>k>}J>A>o>U/=-Ny=ZX5*/.<%<}6=Yy=>&`ei5>UǽBk> w&=ܲ=> >+QpL?PlG[lU?n>]H==-¾=>I>j=< -52ν^QG>`f:>9P?Oo?$S=:?}?G?ܐ -? e=7ihm%꽧Vt / xt=L!3r=J</?c?>}=j>Olپ#gj >YB>j=g=jBOY=QWʼgYUJn\;>}뼝rM>fzG ;M˱; ˽E>a/=>x> >r}1>?`>O\= >f>QW>=ɭ<=}q=8y>=a +Pz=K[}>Ƿ=9m*>F>9F>O=ގ)>%=)=vm&n?}%QA>Æ>Z[>!uI<<=EvP=^=+Ɯ,^=؏=Y=c^)2zז=H+V=>VYӤȽo>5K>C>r&_>E<>d3/"I=)=S! =l#K)G?2>V"=Y>t0>>,u&a v_m( FW>S=ߋ 6k;>[>g< -c;>"a; -@>ꪽ7ѽ -a>ڥ=܅d{{1>=S=-:nzy=Yl>N<ov3@ʽnb>5ýE  ^b?$v;qݽ2wlFdfih=..>r5>g~ojǣ<>J'{}<:6=N?ݡ1WٽF_ ??F>753=A=w=cQ瀾j2 h=< =eT>p:%7Bn6>=7K -Cq* Cv!UqJ/_h_pa߽4u7ܳ(WB=St+S߽r#; z>!̓>=Ҍ=->%TA/< =$~={P -><>><!`(b=U=l(7n-ڽW>O>ľ+ҽS>${>_>~k/!!<`<ݥ=v?r>۫=M>ӽV~= _l>G-i=P -E>?! >wݡ<1 <++Oe<<=rl>#5>(=䷅FiN==xY>N=\V<=y=7׽s3c< h>*>:"> S.<`m Z=OC]r#P?X_?i/@E? -?M˾Wx 8D? Ahm.=Ԗ>Fվm?v5b?ng3^#H)`y=i?_Y>>O>=dأ> DD<*>D$=4=6=4g>b}=HJ<]J=1b>SX˽>:>3r<>]=JA),Y%D X}ʾCH> F&: ]"L>n;<Ѯq~'>Oz<=SNˍy>P t=IɽAC;齟鮻H%a=R8>6!H_4l8'q:>[n׾Q.g=}|?Ծ R=f޾zzw>>ۏ>':)2|5=MJ%(Be6d=s:ݽY='=tQ>=oe٤=Ǟ=6>5ǼH>H=sV=:_<6/-=*=>#Χܯ<&b0H>=V>:j?W/<[`7W` sXݽD>> m>~!c#=Һ<>5>=ը>`1z=V]=8 .?>•>]:b`<ɌV> p;b>F>t=~ξ-׾$0>4>U=> =f.>[#>X(>Q>4<>$ =$>}W>Z& >*U<=1<_/=l@>c޾^k,/:=#> ?=`=8K->>">[ռX=m;#;W>{lݥݠ6( )P$B=P~#;>X;^>+ٽť1JI8=fK,->5MTGZd=FW >,'͑= -===@>r=?ýE5\ni>tu>[?d>u>N=<=_=Ծ>ޛ>V.>h=ǝn >!>==;m[=Kf>M=Ј>.=>>+6?a>, >>W>z"aҼ/-J>>rA>9>=>R=[F>=>8;<ީ{;ݾ/pӺ"x:=R==vQreq=b|P]> A>@%Kx>dԎgI< -h=h>>[|>1X0t^,=߼v>wVо9=1]=)  =۫5꾱"b.5=Ap>9X$> >aD=s=>"={֊>Jz=->?*>>-l >4>Ժs*>s=$k=+1ƾu{Lۀ>f>{!>:(=,9C>MQ<Ѵ>Щ]u=Zz=ț>='P=X{;;>tm>&>ʙ|>p =N>b=_aXҽ)޷> s>:>^>n>B=غ>==得>ӮY|;D=>:>=Ē=&ڸ<p=ݼ=(Ľ'rb:uqļ!UqbR5}5>=rst4=M>D k= K<$9Nqʋ<0=q>@=x̽$J=T= 7>=<&p|>)Ż }I=Մ>>4!>E>R_:NlIa==GA ><>| >Y`=R6.3ϝ>=M歾==1=/>&G0;[_V=0ʼ>.! ?ʑt> =~*+1>E>zİ]q(>:D&h=i=`l>u_b=R=uGO콛D>WJsr[8|FD>a=qņ=}aF%b=K9=zMP>`K; =}3= &P=JS>JSG񑸾`>li=0G9NAv=6 = =.==0>=<=ZL=;խAW7?WJ.=vU}=)ܽӉҽ5qP>RD= M<--׈>#3;NݼӼ w -1´ܽaEfVU;Q.B=Q~#>˽sz@X>w6,>XJ>6xU>fx/G2žj>n=%!ic= >>=>c9& T/r?S{6 :㾌&=>g}ș}Ol>ϒ<=,Jj>[P=n<=>c;]?cM[NA5C( n潦`Z=<Ļ8k> I>KM5p>fd=1<=eT=ܸý>[i=4sx:k羽,w侖8?b}=A_>LE>np:0>}`=G>L2?bE_y >/=p<ū+)> >B>!ݽ7c4=:=*>Q: yCi>=3齵g4>vB< 80GE =Ȱ>t -#T\N -w>E=t>>(0>S2q=>D$>\tf>03Ť<61> 9TWԾB<7=cS5ªV>̆>G=娽ʿ#R>-g1޽G=>Ϩy>b*f;*>HO<>> Q>l=dܠ>;j?y:ø==-<Ֆ['G==; YGv8|6f[}>+eY=*m=m>;5>M*>'=o^CAkflR>ͣc3>I?">zBrZD.9h>ӕ=j_<_w>QMu=Lҕ$9>^>1,"4:=>柽P=p{RvX^Þ>ArU=+5>v==2 ><7,=[{<S>&>>)e=ym4>>k-=>B=W{>.ZCTV=M==M{>- >tkXҷ4Pk3@>s><3>Z_P> -5M=8Y]>s>ڷ/> e;,c>?s:=0f>cvDؽDu!>"C=8=FdTυO3*TSF+|)cZGM>Qm2C͡F>纾 ҂=w>}B:8=4q=5{?Z?wX>ZOm?k=ƕ<6- ܅s=]?C>? E>h1 -?`=ɒ ???(<$> g>m,J>Ľ8=6>}>.|<;.Za>SmƽjMC`>>i8>b=#j*,>9>v>=xaϽi7-û#Љ='=~=k=E=¼TL<”it -)ͽY1s:^U| (drDŽ ?>>mu_=>%>?=i=o̼i>?`;* x^[K " 4[C=ΰ@<&H>*>Tš=sc<>rps>12`s=rt<4>nq=B 9D=&gHB==;V=>75x,Rk=>>7]i!I>=֮枾;ך~0C{XM|.Վ?a˽%D!R:ս;Zuн@׽= >mԽ(==qҽ!SX=kT=A=$M!%=ē>;=#' K]=TH=ȴ=z-?P> ~=U$=g3>˾i> =f|><Λms>'B=鮾YՊ6 -?E>=#国|=;=& >lkD ^(pI=l<2muf<8=~>+ ?䅐 _G]=s(Lo>Y>]=k>Ʀ2N!>^rWTL1?> 쵾p?=S=?,>n>i=?ߜZ>`1=|#_=u@W=Ѽ_h>ν]ה콄D >(=r<= >\8g!N=&:>c>0m >=Dk=`=qUni;(.x=ɃȜ^I=lw=okG=v - >R VY<,hM[=s},?~~콤V>Ʀr=>L>@>Rx>jT>V>>(&|===?7c/̽D7rྫྷ2.=>+E` =JPH>? Ӓ=Z?p>5h*I>|> -,K>>Cd{: 3>j^lNnЉ0>?=Ͻ\=!=$O?Ǿ<:*=/оBXξ5=^'= >w ~]=>Ƚ;jY>+=NBB!2>5Q!{TA =6b;=<8Gs;=b 3po?[=9 z?=XG<=q=J>Y>2<}V>T>pGl>P<e&=m%g,=`z=ǽサz>Fd~wp=pؽ\>/|<ʘ1= <-9{ s:5r>;o>Jl=N:>ȼ?.\6l0^ -=e{=0n> @>'=;=޳>-h7=-m5>:=A<6Z=>лR ZWօ=-(Tij&!xy()'zA hYpS?&~|Bo>,=2+˽isfZ=;G=bW\X;H>=Z>3 -U=;>˯'wQ= >1> *=9hv=Ⱦ NB={"=}R> >0S6=;|zv ?d\DPue -g<z1>vE>b=2==n>>:s=ټ>wӚ>PI!T>('>G>,㎽f<*&< -䬥;'v(.?0$=#G>6=At>eкH,g=Cqr>g>] 󖼯=w>mqy{\=\;=&1>|5>Q>-;#=в=4 +=$X>*=Ǐ<6#> =k%<8> .j=j5=9=w>KP>ZhX򕉼5zހнm^0 Xw=;,X=#N>;=o">t_;>y=>L= g>֤>=F< \>겼ᥭB3Z >\=f>l>tºwA8>j2>uf> )3t>qپk>i=މA@m -L>;$=9!k=)oT>:L:DP<Ȝ>q>>=A$:J=t>n4>W>xq=:߹^>^_>X*=H=]MDK]=͇Ӿ>rĽ -?V?~a#s>_?V> {X'?L?{>e> X>.&M?2?9<نܣ>u?I4>4>5?FR;x;#d>vF~;72-2<`:7</4;tķ" w0fhߺɹhÓ:OԻ>;< -D ;x<::Z~'*IzkS#>=e轈ɼ"h4ds=&K =q>c<2X>i!>&4 s>o%=Ҧ=Vþ3a~sJO˜Y= k=O,ٯ[<(U>0[4 <,} -D,rd JH"Rߴ;A'CB=M&s>]=hq%=-6tK\>7ZNL>̭=Ѻ=R <^Dýa=-%$>5>I_>1=9#X>:=['> oo>Ǿo\":[bs=A;=] s>!e5Cc,;JK<=}=>oԯ=tL<c>LGW='. ?pJxoĽ ,v==<]>׽YFK.ziz>z?wbnh?H6Z1>\:>>R;C,)>)~z оK>L?5>Dn>Cp$j=~i>Ͼhܪތ>쇿=>^:k>eo~=y$Y᭾3 ->TP]> "M=KJ9\7?@%ྯ>2Ľt==3a ە>֡YvCh0FȽDy>6.kQ2< -2kևX>y=ɦ=rXH ׺]K -ڐ=<ڋ=S>ƕ=]=6 CAƎ== ;=(&`===>żG'?X=an~>&g=QY5>IQE=>>*=>g>P_77oL\tl>LX=4*㨽ID>j>C>ѓ=H=s?gJ>u`>|:'>S>սT=Q9<¼鉽kDҼw#)O36Xa<|;c{>=yp>_F> 96<=_K=u;٩l;+=>=+J`^KԼ4 U)>Ȫ{?>+4<Ѵ;?7^=7mک)0<#<<챼V<ػ=&pIEt<<=ͭhZ=s>YL=ec8>bfF>"i=zBD8"E:>tQ={=L>B_]=~X>XU1%=ib>$>Y>̾%%6?`=@ŸѾó{>1N>ʷ0>a`B?g?zVW6D;=r3?B^A=oɼzHW"UJU>}7-0?N=oxUju=F=86n ==}>>C&>n=# =nB<D2bNG,=N:M '>Խ;P?=h=,=?Nd=w>lxՅ? {jĽoӝw>m]>u3 gi>tH<7J=Ohɓ=)v*>v>_Žv%)=$=pѽrCb|o۾]1>8=FхsMԖ}>G;X>=8`9K=c%>񼄬|=>Y>>Ծr&=,;8}=< a >-j>=Ȅ>U@=?\>5?9@?<:\l>pKݾu>(L>L?)9߬}I<>>sE?>t>3zV>ؽ>RqƾΌ]0{%Jj%,f>(.?i<.i>rSHr|>7jR!/# -v3|?V>=ܾu137;b.?/Ӽ Ӽtj=dmRz<8@潌V >?X@>1u?g^?X0&K=eYգ ZuOC=Z:aS$;,8=緽e"Y=i<Ҋ> -Lɉ ?{(n{<Ź>4[gOF#)>W@>HO>o>AD>A,@TՂ -<˭BH>C*>ԽZ;>f>k?a_<V==[hTj2)>sV?@?>25Q+?'<3PQ=? ->f/E;>=tȒ =du;&a,=84\"Ƚ(%:>D?U`>m>5>t>S.92Ӽ[j >˚"4=܁Q"A?5==*+T`ճ=q>3~?=7ɚ|kk=~;g;>uvB-0?=!"F<%;ጽ7]=,)>"Vjzw>@/ Sɾ>Ե$YM䳾<&Jy>2k2K Г >v6?h>J> Xȳ4ZB~|W@mRsP>*4$>5G=i\Ceł^\ە =ZJ>:<T$=$K>hMS=d>m->x{f{1.=;qgff½;wY>1>9a =3 ->I^4>;?N޼}*䁼,!LaRדM$>?zZSZ?C0vrV7I@Ƚu=Q^YB=92>>=6g4,tҾ=hb, Ƙ>:=*>*>28y>\>u>nx>"ؼ;~3پԎ=|*>$G>">=s9+>I#='[=hZ==kI X>p ^=钾$[Rl>U6A=PX=0iz&@ڈ>N'sSI?>m>ѻ=y?˾޾,̾R8ӋZ>V=λ=ed>Y>c2>g@9*=khӼXٽD~=xպ:켗n=C O z'rǤ;+SJ7O<~Yeb9h/?> )<q?V>6?5>D<ʽ[ݾxxO=t;(K xe)?Z=l>&%>%?)?>g:=ΕO>9&>F+6vƼ>D-ti.<~9H<=V\=V<@ ->61\G>\̾,2q+^'0*C?H:+]?w?>Z#ݾ/=2r=)>?M?> oY??\?i>V?P -I/^H=S=>H>W>% >ȷS>' =ږ=]=c<{l<1=;:== > -)>4=? ܽiIݍJ -s>)Y>k@> -J=.ԓؽ=ԏ/>̽qGh_[=轿> =+2*ýkUtp 3=<]غ>AM=}>M,> - ->e;q=R>!>1>D>7o?ʵ><>qN>h=5=uKK=أ==:W>n>Hv> uoh VL)UuES#=?=}=*Ea>W>[9'>p(>+$kG8 E  g= 4x5> >2jVc=+>4=6mA>$n=6= >H<=k^ĻOq>|>!C>ꭽ "ܸ>U >NCu>g>n@>"5>.>C>X>;d>m >=!^ = =l=z޿GYʽ=F<;!<=4>Onj%V> >!@= ܼf -+>&>Ӱ>ޛ< >=7=>.U=AE@=ܶk9>ƽ_/L>=\"`ڬ%C/=T#@s">㼉8>;VӠc{%gr>x6>> ҽ^E̽Q`cz+ ħ =5w>B>e>>=їx=L>o<2>)!ƾ8=I?R.TWx>ݜ×|-o]̽My[=>As=g)=q.>=6Mܥj`>W 㭽z=9 +8X%u=OA>;n>ʨI>>l=M&d">,> = z>_">f>v>j< >`/=ԽT z<ܽ8q>gǾ>)ǞК͟>;>U= -<}>+ۀ>K>=ת>vf>髾86>ce<9fZ>#"v">Aýw >=><.N2:j=H~*L ->*?0>M/>=N>Y?EB]>H-<r= =FRq-37*f/>#+F=Kp>?Sv><h>t>aɪ>D:P{>h=B `D`k!w>(5=-Pd4wqb X-XP=f>bP>Ɲ @2-s -=ⅾG5f)"A߽"~l>>Cڽ)?f% -?Bֽs> <jyK">?C0ȽzN+>۪!>i!<˷c>y8>_F>B}*=@S>6M($2 -?>F@>؟>b>=d޽1=sQ~>y>g/>B%=Њ༢O[>>.=<%۾CȾa>T>Fh>.o===x4= -=B -=T=Q1>;VG>L=S -<p(s3y>`Nʼ~I>u=>`>I>ZM>>9Sʇ(@U K> -?m>X<+-B 7n=/u>'5=39t>)Y=N=#S=Hl>" >:)>O^r7J>[3=N^>|>b==*4=m}F-U .=eO=+Ѐ7xy 1A) ?Y'P>$>P@<>о:рr>]ޠo4>˓<>[=6<<# -bT&>ֽ>>\><=/= '>|P>X=u >v>'i>LD>E>B>>SlŽg>>{G?0"?="*>>Lf>]w>].=)le3)=].˷>n>+X>n?y>A??zY?L>E> ?>/ūp!= #x+z?|>ۅN?,o?6D?5Ң?nV?v<Z}=.%>D=ҥ>&҃>{s;=;D=e7={>5N>`=V}>s>3)?v>n>.>ݼ>>Bu&>M@?5?=^?}[??c>gy"z -F -hIL>s<xB>1>z<6^Ϋ@L.v;n| :ʲi(":>"=5m>]y>t[ >ux>  >$Vt>QX5>` ;l=gJv=D<*d5>\6¨&GKlP#ܾgþIY=+ =e.>>>>n" ?0?2F?G(?<+A?Oc*>5>s8%8>,O>Ok=[=Ԁ=cPޝ>j>oɀ>b>M>L>1>I>mC=3H/7 >l?>^,?yi?'?GRT5?O?6?)? -?ղҽƽ؄>#Qf=='>==F#>K>e>A>=->O=t7ќKJ<žTjoKaq/KtpC7̽4>?V??>Ok?9:?>?/m?<,}{>oMl3>VSʾ<=)d>n>g -=.>^>x;>X> >>;=kk>?? ?\?1?:?`?ڽZٽn[X{Խ:&`꽲Bp>;޾g ?5:??[)?+ZrTrE='?l}>[m=&}Dub>t}=?„M -5=-=d>@>׺xx/D>=5q>`>; |p悽[m=KK =⽴$>p >>T=p>|>4ve=>1+/= =*ʽ=R<MP==~>n?2?9>S(=^=<;)=={?Λf;8q=G?yw?9>b?& 9?Ⱦ6f 5?týy߾;^?Œ@>L: -~&?U6~==a.RRнV4?OZN<=x%s1=o=I=E<1̽=W=<܆:żD< В1> 5=I'>=n<ק7;:={ϼZ,-oI=gBONOΔh=MV=zg==.r<"je >kC7z_=G%5 <. >='8_ȼ?<ƃ6;Pm7!>N="`(4U= -eo&>N۽y `3e =8<=\ߎ-+=kqr$=UA]S+=(񅾥V@`=R8|.=Ь"=89~t;7 * Uy<삟v?gu!=+_=_+-ͼ><9=D罷9v,ۼ<'U+=7{;<[1DԽɃ?=N9} -|=;=Pν$uu==Ï=ɨ<*yl=z= ( > -=.-,=~B8=]V.lULU=TWkcB J=Q5S=$<$Hv=\VҦ > ۰0|F<:=' 1=ZA=P<&SG(E/= -u'WplHc>: >j=R0>VD>|n<{PƽBKa=A\ ^༼=|ѼqR,?漗x<{v>l)=SͼzXI3j1)skY|==ebu=,=ļy;i=;< Eh=ѩ -L="` -=H=b -KV)a=, =բ1_/6+=:=<==pYMeG#*NR=!}Z1=Tk=k=cc9̼/D=T=U;=I=YJ >U}:<Xi= %=, >;s:Ѽl2=;s<׻t<D=WM;P=Zڋ<n=,_w=cV=X A=1D< $V >ѽ7[<[k===W=FiD4bi,q!= f=`i>'H{==rD%ȼ·F<;>:k899U<_Bgc \:=Ȼ\[н:)=!׽7k`j/-ۜ\tٽ`5`+Q=jIm`}==%` - Kƈ+<ة}', ޽W4K=\=oz=,==9&iH?==uc><6׼i<%`>fI=XuQݻ=2>36=oH<=㝾`e'=i51-=1=n=Zc=ڤ=j= ɽŒ0Zoż3>"=u==t(>=iF->Z[9> W3t==3XͽO64μBZ:+b -S5=!>c=;)ֻ_}>/=~DP>>H=J$<"<7x"=M.Ľ<L>BVW>BO6E>T=sx>"+E>=Mڽ.>uEY>q*=3%^$2 >s;>W8:7= }0ͼ7=/)ID8=X%c^Q4&4@==ab17M7<7ڽ?Ի½u=Y% >+d:;p>bR=~ռ{M>&=:>QD5L`>I=+<QꏾN.̽3ڽ#<1Pk$nr>͐]>>&E=sI=]Ͼoq=@gT=F?=d=A4z= ]<[=[轄+, ubŽv I =C=+$L=r>>D>= $[6>x=% ?>3;>=3sH><(>(;14= =~yӽ=-<5&c7vM=/cB=W X -Ϛ5=л彑>s;i[|=kM:4xSv=@=d=u׽>4;\/>+>=-_>BW>?<<¼N4KD= <!<->o=wɽ2oH =NdpX=#>g=#޽XڽxϽe<>7"}=<68ɽT^>]\Eʊ=+=kZ=|t>~'Y,0=>U>N <ܙ=|=;- xj}>Ir=h,>ISvd: Dnc#==ͫC 0/O=H]=I=<쎼cfq== <(- =$2X=BTk=2=Ȣ=!4.L[>RZ===<<|I =I!Ԃ<zQ=G==n7=͙jx>AMO;QvO Cy<À"G7>~a$C>;۷9O^p=>C\ ;xs̽>ﯽA -=jp=<ؼh(D>>A=X>=Q7H=ho=b;~A;xԽ{t -2Ll'=%׻bҋ>>u=fL+쪼q<=h hspF=Yg>(>+4frF}Љ=X?ئ;jK> (*=ǁ>6=]ВBӼj n=^>S۽i(U< C===ZGW>ɓb=ZtI'>rD>+=<Z>_5>q%><>“= >7 =(J=b_=K=>_ -> >`>=Px8lP`=UJ=@9. >: .Q"Or=Xx˻6g&&ż\=g/l=7=?==29o=1=Ie'c=@to<^4CnH=x=n`gل̻<>L=}<=P;Gy=<Q>A -qĂ9>E]>]?O">g>L=g9Ed>>}⽫r>'>I=L>Z=K>d>[b5~V->)R9XZV<-r=pV=*=Pٙ.,h9=\) ,XP,8:<ތuYW=N>;#ڽ&9{@ͽA>V)0>Խ#;< =ۢ= ->wc<}z=dP! >l[=b"o=6Fֶ=1=<-o -Y;Ȍ=O=椾^9KU>>f3=Y=R'=;X ѽ,2c=m==rT/=2> n=Lf?>$H(v(<=M=ZEr;n*=!;2=5Q-L2+ף<=;iҠ= ܎=g<뾛>6.<h==(=vzv=Jyo=#;glb>|'̼K<%=;hL<ȼu=Bl=m;C=#E =;eu=Ὶ= =v=o<…6 -&+=(rx|<4W/>2;a*&}0 >@ED=vhMnQ=א=,Qi==g=tpQļ -1ai <!Fg;; {<$d =}7=:o<8KƼE,[; AU5uwQ|=MȒ̽R=W]j <`YNǽ:eI*=gQ4 ;Ls;9@G%k=zl>}l*VeƲ2~=Kcv'1Q/&)ƞ<[Rkp,=9=ux=2Խ;E=bM=^'=$m>=2mTPl=dN=\il<楽2=9o4=?=3f=7g0gۼn`:Ĺ-B =<ݸ;; -"f=Ew幠61Ⱦڽ=ʅμ"XW< <.>0l8]L=ӊ\<Á,>U)=Ġ=E<<2怼м軻ռA yt; `<<5==̿<Q -=ie= 5<:x¼F=roJzzG=Ts9-=滼33>v 1]<^=<݁`=-y9>>=s=ʸq ō=:=;+"^;=B=>1#=.=j Ң<ɗK >b>?5o=a=sa<3 8?==1Yt=hS2=_*=W(=9l=/RPdD |=gA}=g=_]_>h4p>q="<@<+_=;QGV$=D,M#q@c=u| C[)ڙ<$"_m񍽎=K= >n&/>az1=-3պ½H=_= -;E&罧)Sq=I[Ľ%ڼ==LD:>1T=[6=Lݹ3I -Y\<-~i=W]UɌ?)ڈi2Kũv=3O=Hr=`in'ؽ4e>>6bP.>Xs?׏>C=ۼ(M>5=bZC><BTy ᬏyj>C+>l1>ఽ@>) GWJZH=f† u=zÔ ƹ=?J=*!;\3w2q=|=3bf==:Q0>爝->ف=m;aΙ ->zEJa=fB=`4b9 =J=V<=/׼ZD:xNjQ2C=lMeлg_8*->x뽙>B:l8񜾡=#.>6Դ>R=d?pP<3i>F=cqӽҐ=`>Zp:Cs=8fꌾ[=QV=̼$Rϫ7H=_=p$=qM=*zW =x|O֗<U>?^Ҽn֫>I嬼ZL<,4)_=wX!=\ϓ9{= -;yMwѼLW<;n.'ǽ _5ԙ=8=-J5=3={~y2Yf=?==;Ԉ;O*h)Uy$>e<] b=y=>=%īҷ)߽8Mf= >M= DQYE<='lJ v<-F=:\=,7=)&=(3sQ5>=yJ ጔh|!>Bbռeq=d ż~HƧ{>0.<݂=w= k=Zw<콝%H=v=V<(Y= WH;@1z<5=˭`=+t./V<<<=o=S(ˣ.=W,Y&=g<v]<@@a<_vX;AE=$-Wv=%?pQ=E<)>}6<&QOꔱQu;807;7)=Ng=R==Y>!==B/=36Q;`d=34"az;̖=Π= =HV0 =.>;AC0>(=m<^=iz l>t=c&m>W=&=y!=:r<=㗕>0,n=|=o!Dнյ=R; >:%.;,>x$,=#2===Bͼ∽*=[>C0<ˠ, v=) >y;Ǜ~Nom;M佽Ol:6->^==?ɾu<ͽus==_T#=# < >[`=%qK<=b~<3{:k]ky2=;==>󿎼|;;<#=e蝽7,>m½$y\j=>=k=f#p:kFfW=4shż<=3=zU>쿽ivL:B->ڼμ!)>?P;>e<>%=| ϽO:I!><؍=N½= ==+ +lX>\tg+e8`oj;hb=E>d󠼸=ɾ" =<=] 팽x=V= ʱs:="·:;4=<)[ #4FY^;lDEB>=d}=;x k¡=BQDDj;~;pM$`mB$=~<=;~ZW`"$=x NY_Q=')ɱ=buX.R ?ӽ73c%u<% b;\$[GDYiUq3y>y=<;!>:8<=D<'<.=g9y;sx⬀5:<ƽ=o@=nݼrW==-x==J>@=<ս|=~3ܥ`=n$c? sB;Uu=G7>vy>!F<=R<uD=;= mb=h8_l%SμTf=J'=E=w‰=}=BR>;y4M.j=p㽅8ۻ6m#XUb=o)l=ȼP퉼;}=2<% z:}Ƽ9ɖN=`eŠB[ '2=x/r=aV=A{J,|(s=V6B>˽=x=(=+~1:$=* Z<C"84<} b>7=g2M>== aMx<=U=^7v=<4=Xz=};)= -Q>-== =x咼LȰ=YR=xx>NCA>><= p?+,>>>i>Xԋ =?S ƾ>Ո>x>>?`>NTX-?|:7w>,ɼVY>!e6>smt>Dq>g=ES;ܾDGa~?┽?B -4ƹw>P5>?A?C?sx ѲJvQ>>P{׆>@с>Z=ݗ<ײ2?=m=y|t^?A>n? >*9>}޽u--V28>5A~/?tH~?p>>g7>v?7?e1??b]= .(k -`{='WQ==m-> x?W?@`J>Ŏ,>@x7C?x=``>=CKؒ> N=>6i`^=s=>E>an-r?suKZE?V>dCN˝=:ҲJ>d/D8O? -G?% ?D xsb2ҞEپG>^[A[3>>cоΘ0>;=`>?$ ->k?H=W>[>9(>&>r=x#?&>>݋>8h>Fd=M -=;vE2g@>]?7>ْ\v$nO>[Ҿ:DSɴR\<> %?8w=gz? >5J?3=%r[>ۑi1ýko,>H6@s>W{,Rq=Lݹ+t̴(=D9?ɕ5;僧?J!]>08H?D=۾AS1 Uщ?#<!j?,q?> I -֌>B8 f?ًM>;&>{X X^ľq$V0ߊ?4 !>w=6?O?B"Bq[]175>˫|@߾~\>Cg We=k<9c>[*Q -a2 =$ ?1(><>?-Bb>K.<\A]꽒{? ?W *?:?2=k=( - =s=>Oe?ڗ1m+i?*AF>y>l)??隻rP?jヤ}?H3A'-c?]$B7{X>){%?ꐅ?@ \ EOOF>h>_%>V3=);{=Z><“2,i5>[/c;">Ku=>P^li>*߾b%OPc9Y=4>'=>6z=~d6TY=.=A==éS==/jhMo>jCȾ`f>6=] n=r -=/]<~<3f>+=3K>Hc >=.]t<;*=i= v>/=ʂ -̻OU$mƼ3)M7>#F,/>-sd?>G8?}5@=Mֻ(;߭g>uYL>ˊ >oQH2J>(='v>V<-<>%>T(ܾ>p=$B>۾5%>n>Լȍ, <^w^$>=SQh=o-Lfɾ >_>ہ=B>d]9>@>u=4p:nLbv>C+?$< -A}` |%T.?$g>+Խ׾’Խ~|,*;dH>)4V>P:>.eֽ>⸐BǾ[yJ=\>w>tþJF =`>-=O>%>Vl&P˾w>eaj z!ƞ;輔 <"+>7%>=ʐڽjA(> =W>ľ6ӭ˽ht==1n;,; -).>7C= = Ly=L)=Ὠ=6=F=vY=;yۈU=P?533=z=.*T O+D)#+x>pMܽ" -=F0wìL*!8>V虾2?>]Iʽ]3=z><j=E%=>G5=X=ڃ>=)'n?k>2R=A#_#2x8>><:U= =R=ӵ;v{*Iaɞ.= K>4>@龏g->=JX>J3>}U>S;ѽ֘> |>ꕾR=_¾ -=@>C>@>#LA >\vA%N>7? !=o=N¢d>??[>=>kۼL;9><>> ӈRZ I' Nʏ=Ծ؏?)y"=qn0|>3>-=O>!=D=C<@>->#=Tފ>˫ >)>I>G>Q<+>'>34|>F&>gC ľ/>?S=Mק>i)>=\?Ͻ5<=vG=8<.; @bISC,5>ʸn`E)R>:<2x@-=SS.>>U6><+>ů pDϕ=Tm>,mȽZ=S>=@B> >P< 14>))c>ŀ==i;=Ķ=a->~=<=e2=COa >Ѡz]K8ִ>,=xٽX>J?ZM"< = -{޾5=kqXϾi"9:=q -?6>kcV*mDjž=3o=1 W=I*=`K\*==Pe>ƾ?>ʾdn=e=*[{㼾=>(>rĺ$>ɫ䀾2k==YWT\6滟><ȾV=c=:[<->x1>:_ޡD<96m> ==-s={žޱ=뼙>:E8Zjv#[=imܼƭ[=1CZq0~ܽPN NE==r=J*>?k5`>=nc >nj<=ߒ> ?> H<:V4>D>@^iC@<E#='o=D=hsy=V=s: #Md>s=8>_> =̬=7|>#i -#.>wR˹~ΝJ4S<-̽Q=ȶX@>Uz=[x߽UzJ=Ѿ=-ע>GG)ji O\#->SGn=`=>]Z\ދv9E=Ծֻ}VǽeoCӭ>H߾<>櫾xT?w>E!>8A>e.>=.w= <-s<25>n ؾ;ſ߻%Ľ[zN=Dn=3=\v1ص=,ڻ>W|==/8L?7 ƀk ;DӒ#.W=e2z=ZHwNōC*;gF=QּD_W/>-t)+:vvCn>%5>^>q]''Q>,AlʾP=t<;y>as;= آɏ>g>Yq5=K=~ Uoc)F=>ga=E6?;09R<н `m&~i+w|<';xT?qC̉R=X0* ->>8> S8>໎HT<⌾C=DX=Yk<7M]W| .k>Tɼ<9=<5ȗ=dLLA?#==o# ->ܠoI6N\ZN=yRS |>z7E7I<ޅ < rQ -%tNH/Z>LEԾ/f=߱= 6rQڶ>y=bG< h*w&L>Z3>N58IGϾ/EA7ک=>=MwU"R^Psc>|3=Vc==(H><)»0J+&<ߔ=O@>Wm>Hm΍P>'>ڍpT©>ʊ|0=dP>84<{"K-=DZ>':2?/>ʽ~^pPþƂ 9>tD??>=U& "aD,<.dSɾ!>>'+Jż jp>qT͐>4,h=Y>b@i*=l0>5 =<->7P:>Ĺ>DM=k;߂`>[= (>=Lt#^er -l ->5qU=EQq>`4 ط>Je>n׽W>7쾺:侻 F6;pJVT>V7(/>m(?ؤv>qdH>>zx>W>S= 1>N>E=}>J>P>4(%?HQ>D{>? V>0m>"?j%}K>!b>0m?1>x?G> t?P=Ta?9?؂9?L ?z% ?C??\?D?K?=-=>:hB O/==.)?$_8(>zvνF^>{?7>>\^%s-f_pt䴽)> x>'N=E= -=ʩx>INC>t@2*#+a8Eo>PSƾgO;,B ? 4@>ö ?ݽc>{=Ҟ>- =FNJrG~S >n!>>o|{==ZY> - ̼cd<#A=PlM>˫>1v>c@(<Fw68MG~\%>!?Q*rȒ>SATig==i<]D?ynmCŃ: >.>ji> >#ty>}=Kۏ8N@v S)bm<+\x>>,?;/2<'> ?>\H"E>̙>DV3>b*d<>e?0p> A =>=𳖽נA{K>-d>~:!:R*<>'<+>fb>G=Z)i8w>M1ؽ?>۽24>C>z%=%=8o$= ->@>=IԼ:g,D̾fM9I5OAGa>S< R?A ѼOu=yk>KԾ`A<ٽ Ӿo, s.>N!?<_>+G>2%k־H 5񌾄5]ŨB^˞>ؠ>H>ӓĽRs&*ħ;jXXya}>=&ܼ)\>[I>ܩ=) >8S>֌>N6=w=]>GŶ>!$u1dнLc+o?lyg.E'T?%f?f߽9A?u?d=4d w?#>3; j>>l)ܟ3=<{Ⱦu>rrm>% |G#aJzOlJq>kf>ɮN=>2?z>9;>>2dv>W>N>%>1=ƖY>1ɾ -?"^5>-=df><`?\e&?cC?-=n|>|?š#ג3>hn>ȼYX =>6?}j=>l$?z>-Bi8c:=Y>:;񽗌kCߩ6->,hj>I:P=S">ǟ=qB? = ,kڽ(e>}'UEeý\UNxw<>ڨYb'<T=&f= mǔ+=>bW=!-{=Q6@==}>T= -x==~s&>H(r>H-?) >$ Xx>.ƻ?==/'>!.{%q%>K3˻h= o >>z=s>>{Y=1!>|I*]3>?>ݾ b-;~ =+gK>91yǽ^@=輆w3=L22=^eȾb=BR20( .VԂ>SѾ?!"=x>2۾ v.%P?KS&O~w:>le}-k;`x<HGF>>'?#~;1=ž|9,>}=$ 8:>iF,>\#>Y9`>ȕ>'J=庣> -?~>5X "=ܧ喐>&=(> =׼4[==4>9 ?=>bf>'bY=phq?>?ٟdJP=qM>=Li>|: ->jϡ<|o+ ۣ@C>RU۾*jbS<46>j0>۽4҆W/>X>cپ<wGOR fD_=s >M>A=qb=qHЅY>eOE%?:V>cý -v>Ӳr>/z5=̷&>g?W֌=/>M+ H7>^IuUp2;>>W>>1 >,>)be.kJ9=9$>˼UZ-f>I?N>,sL>_G =ꇼx6Xk,<C>zn =ܮi>?PYp,G7>g!1Iɾ;ξ$(?h=ս=iZ==s1=|m@">S>1Z5>U>?I>[>砾x>*{>>;?9?̦Pae}ڝ"v=Iֽ.="@|>{`Ͻ92b0M> -:)9"A7>;,p=5([@޽w>gh>;39>E峾g>ؾ=lֈ|x=ޖK+>h=;o3V¾)C޽-L> l>8:E:>P?z>敽=6S-Z/ >?:}=:><\Fw=;D>[>Ŝ> - >i<#W%7 = <<5=2!*+W>'_=A=o>璍>4 -5??M >wҦ?>im ]=Ҿ>~+># z?=;s>?Ys<6>@ -<= PC?[P!CDOƽ>k 0=謾~̽=0?#N@>==>$=;dz=XK,'>DF?\̾l>8F?d&=n> Bx=rPX8ay>}u٧lI>bQ?=.Z>mýchV=Lh+>BĐrgW<1P>r?=6B1͂=̰>S:Dv I=0>=<@}<=-m<%n=7=&=1L=Gg;=^lJ,ګ& =#8xk>>7> ؽO ?_>?;>#C>W؍>O!><,֍>ȵ> =UiԾY> -?^>T۾B9>F>!)>EM>}䝾nFx=/Vپ&Z=Qr =+*?nN쐾â=="=A"i>N&>@?*\9g;>Yʪ뭃=j遾P>Д5= V=ĸ= -=X@)XD>/+>x58`ն"=џr> >/"->D] b=]>B>NH6=\=vP>H;Q> >V,H?=X[=4 >> f;U=[$=0mn<`ӽ­`===.p=O=ؾ=B(}x)=ýƩN?5hg )=L˽\ 5۾<`h>ѐǽ=%)'=汾M!<=_̦==YlC>=ۆY>R@>f >wc>jA?eU(0>ID=9'FRTƻ=x ->ro>uuIN -R?ɓ;>܅>Đ`>>%f=@ ->"8>gb3=A<>:Pc=!aȾ}>_>]>>%޽hv;>{=v>FD"uu)?38>Ձ?Re<=>$>~H-߽LǾD>H ɽus>n> ^>>ɾ ͽe -ž_c6>>*Ǿ X<>DbCb=4>%%ľuOO>^'7lA?xR-v8'9>uS>Fׅ._>k;u> kվq>T? r=~<7PBO/5;L?\>@i>*g,}x->="t'ܽ- }]p>R>oYIо >yO_]> @M> >E˽Ш>!>&>o1W ?Ahdyt8^=I*t\>?s5F 9?:t@s= n>Щ>@_>͌1=)L#>ͻq~ľ5=>"A!%{=>W>X - ?ҾrZ+n>1d<> SE  )37<7.=Jb)=>e{#N c3F-y%=f!>N?phB; 6>Xf=5?ld'=#5`/%>|;i-c>%=4> -s=vT=\8<==%"3:-;yx=I >=YZ>&b0;#@Պ>&ԅ?v?$Ӿ/SvK?? w?S>?(Sy>̏"6_?z>S@t"S?0&>N>j9Ӽi'.>=2-:vc>>=_ >?> -h1>9>`?hFܼfXy3=>lҘ>:GS{܇8'c׾=oC>"N" 5?_>=rK_==.= 2> Ͼ>y?ďf[Am,> {=>X;G*ٽL#?h?G> Ù=`P>=I<\X>;>*t/jr.r\= ->T>L8>{X1|v>˽Be>!b?[B,=EdB?]8? b>3R& ><<|>>J<2b=1 ?6=0ھ)5 =v=l*>W:/=ݛx=ZFouA>>ٚ>jt=o=a>1+=2l;= b=Iڨ>zs;\>>lƽi0 <>9=̺?=YG> >)$>n=%׸=>w>.v>5Q>*1,߱pa>\=ԛ%>~=ږ?=O=i"M)(û='>?qM<=k>H>7:._2>_{̪/`~[>'%o[9 ->6Ak3&8gё=N4o=#>7>6t>?>] ('~> =fQs4>a=E>@">>> -ƿu>=2{7v7 >NT>Z%=<񣾿 ?u?~뫼VP>bz?:pn>jθ; Y> >1i|>z=r_=n=h̕, <ί&Ѩ9g> >yijS>=YĶ>UBc:Ωf B>b>Z(낾p){?8˽ 耆;?Ɣ>Ol>|d-:U= >ޫ>Z>҇=1>'xRT?i?<85ֽ|4^=3P<νnY=F;v8VʾWT>YQƾHƧ?!?=z?;> -2>qj <M?-Ŀ%<>>>l (w>?[?a ~>*y#>[ށ>-O.>>V,>\->b>%?i{5r>]K=0=1oՋ_%lgu>Gs=Vԧ+ =P?88g{l=<]'`ڼ#5꽋=[^Y̾+%(>)N>RA:?pG<==U2Z>=%=F>/=\N76,?>rY}Og勵 -;žfO2=l>~D>h> ½h^>  0rfIQlx(=C>>^.Ntlc:=wk5=bs>Ġl`?J?xP{Uy<>Rξ{>QĜc&)|V>=0@IM\?gg?$K>>Hj=Qz2>6>9K>S?zj>g>E>.+g>)%s̬>>>->Z>? wK7>'=q??t§^">*t0j?ý? -z}!LF>\3)'U!!=Xt?|>o>##`W?ȰA=3Pq?v==顽5=y{=0U =9ٔ.ߪ1={F>c,a>ٞxv=>gZ!;R߾ =3̶b?~o;:^?1M?1+Ͼs=9/ѾⶾR扼*>塼Ľ >;Ǿ7M㼊-US3>R>q>K^EE?(>SfSٽ},D*?M>Lg8U BV=>u"'WcJow^?=? WJ)I?>t6>7xz -l 3w ٵć=K=;>/>>U=AdN ]׽wԾ$0$>}(>Y6b>߽Ekd3>7>>ɽ c@>F>b?#&)7>qB>=g7/=Zj>o/ĝhcF[={iսļY%?;b>>;ALn=^ݽξ4ܽ.JM7<=>q `>>2i΂<۰QS>pZ==ؾ8yd=[O>lо=[>&?!3'>k=s+H>>Y:ͻ=>s*>^GC>{RLimX?U=LE?澸Žjx;x;3$>άv=rA { Ի5>@#T(>XYIP7A/s?뗾4*u˿-i=`Z&=9^½1h>*cla6k.*-E=->]CXPV_=Թܾ> -P?,0== zSmYc.3WV>О=s@>%aO -?=~=GU> >>)>y kz>_>1)=p>x7fU\DJ=4z&GB>I5> (>uf>'T3>?%̾0= jÚL!)G8oI -6=B6=HjŮ?Vݭ=w> >sȾ/wESN\|DKN($G̾f>tew>g6HٯɾJ>)==BWȿ}aj->4S)bH7Ǽ?> ;,/^LBV><%7Ff7= -_ -qHN _0Q= D89?F G>>F=l]Z>ɼX==j>Ś ><>?')>k=g?w==>ie.> I=T:>7cپz+>ȰJ>8?<p>n}<ˌX> ->|2?^ S_= per~M=Oן>C.>HM/E9?5L,>;j=Aƾ㾐<>G?*O>߭M7>xB3Z>MVɤ>N\?V+?v>Xl?> =>ΑX?Qc -Ea>>=PC?7=q{O=?!ٽe|?GG ?ZH?\j\>Kq=r<#=R_잽'g4 j7 ?V??>G!b\W]Px #*>);L n־x?>a?h,?1=VL,Wd>C&=>104 g>=*@~>^g?k{zu^u$GKg<>;Ght4=cO$\x>1h(a`dQ`쾃ڭ]y0]=S=0= tľ5:rc)I!!O=%>Grq=޾A[`I>N>?k?YK?4#x>W>%W=vȾ>'ھѤ)?%3f!>J>̶Kvuq>=a>޽9>\>: >>YV~=e> A:?PHW> UA*j2'>ύ:>>G&*Oͻ=Y^վw>=JʽS֤>8%?qG?=D>p5>v>3Qa>y>?>C9<=f:>UGJ>\-0w=> >̾Ѩ,>2V(?>M=#Dȼf>Ndl>}c>ՇU?KVku?F?R&T>"?{Q=^=$7sU:l4ν4Xͽi&8> T/== ?0I> If'8@%>姾bp֥>NH=>Y?вsI>/qrmc>Z0>ʁܾwc {sQW>OB \ ?mD=i>"ujB<3=>SQ >}U>o>Hc>i߳~n`>ý$?I?j ȿM#?!D>)֙?b?? -N@?l%@)>u?S(Y>u.{?_>;?QV?[#>?=}??p9._6>=l!DR#>Gۣb>3#܀/{Uσ,c@!~=N|>~==n8>0Ɣi <>h})>=B\2 -ԼV,=.=@K>P2+t!>\N('>!>‚ >~м!a\=D"qb>͌{>=>G%==>Ja>i:y=4֚=:= r@=(=J;=">a=;< >=L=hqٲ1><6 G=N)V< Qc߽;yȫ=ký.=g==Wt=kY7~8=ڂd>潿=Mŋ=nfw5>e> >8=cg>+:>N=53=y<s-S@TMW=Y=󉤽G7ʓ >!B>4J0 <<=&5=)>ur}5=kQL>I=5}=0Uj*=w=++=#>E:B;SOZ>=@%=#˟=O>%'֠<4=6>=S;=70H=];`{T>dP½2m:M=K>>f tF@l!==ϺѾ;>ϖ=C=-*>O~ݼP=͕=t<}<=7>=9=[=)=}= ->[7:Pr>޽fS57Zk2=O†==;GA=(Z>"<=7y=d&=4 =^=?ġ==bjE>Bнљ9;=#$= -=[=@>wŕ=̡ɨ=<3;;OjGؽKVV===[=->>%4> >Π==pWH=YּǀL Ϯ5C=joBV>Q:ʼ..>5o>czd<=&>dL>5>u<>Q,=U<=G)W>T䂾7e 0%˽y=|E>F'| UbD>޶>^{5f<%>z]>B5==K=3!=b=R0V==8dR='? <=x~;^$=佺Ky=&k=.='!=d> v !$ȟ -W>4vJ>=ŅuҞ=pg=2 <mm=+0;>t=I=qw=ƨ=qb׼r`rMz lȼ#qʽ=k{=;H>?>߷3.==yq&1]<} -[><\k=:ZS=cg/>V=s==?>ʌ>[==\=L;;1Ǽ$ɽ<=Ӣstf;<5#񽕹?ݰ>=xH=Ų=T>t_=U]Eԑ<H<Z._YO=uǼ3<&>Y!:F!>9=W>oʀ#>*u:B'm="ps>X= =!;` J p>Ժ)>=>=> >%>YJt>Z= M==j=]Y=wU=}JI>9aS=<Du=Q<6 >YK=Agx=*=>݆<*==z=M>Fo =<{]=JOۻ<ɽe&= >*=> ==N>S#@>IʼB_1= -t_D{-kdOӽ+ >V\=;J='m74<< ױgfPE[e=F==Q>?=JN =#߻_ 7><+E&\$X=/D>!nҀ*,ݏϭE=eOeb=j4̚==;>3==&G>3>8=T=Q;$̽z(gO#3=8ɽB:/ / =/>=7='5>7`;"B?>3h<@g >.>.cFVyŽoDp{Bѻu@Z=`/Cw=Gӽ;s>>A>M<<.ip߼oYѼۼ?*6H^<O34!S%P=n=Ou=G> >(+>=w<>><e=żs<=02>==f==E=Ҭ=:0=e=S>0JJ>z ->T%>=>b >"Tݽ= r:bw= d>D)p@>O=zA=2[uE>SR>V6=w>U=+N=>;=uq=<% -/W -8ƫ=em&X*;.=|=5v=Y= D===4ߓ=㎼޽פ=x;$3>C=>/=3_>z%;jս=5Aܳ'q>EN͛<sv:o ==X=;oeBW=%>y++ܪF=ɐ=yܼvͽ ==e)&{=J䖽\=Jx=Rf;л x=W='<8G===1f=3у~q9<f8鳽RȽ73>׼- e?<(<\5>ո˽\>Yd XjwJ N>Y<>0ד>Bc=.">EVp:.07 b!޼ۧȴ6H>iI܍c= >1 -1R> =/A>3:X8= >pv<=G{Is<^> H?1=:p6Pv<=SYiW'>^<ĭ>QA>V;0^>y{>6-j׽K&g=v=>= ->|%=Ǡ>Lbxě^:RV?>[IN&>X<2xH>Tc>vҐ=o>4=` -đGƽB>4E߼V+I=PM*:̽RPca >ds>ֻ;ɼoD'+A#˽v%#kAr+塻%K=GO= = >½^;l=*1i<=7=菽e>d泽 >!=h+mZkkӻ/>RJ=o:%@_Zս=T=օ\w=%Y=S -=ɧ=h{ȿIq>z=64;"< -B=w =]&+ƽ*H9zv\]=Ok:@<}?V<=Ū`=M<^{>NZ=<oL/>;`U?B; Ѽ==WC}=<~a=IB):+ R=G=g=((=:Oh=k"=yq};߶=f;q=YռaԱ=n@= -F}T== y=;:>j#5=:t>;;!&= -aѼkӽO6 {H(r=^.=u<ť8_cGg=}0NFP` ȻbP=#p<F>.f:=s(y:=[ y9<=+bQ<>> J=&fB-ή=p,g=d;>C׽<.=\<=# k:<,!>붽U9.@=;a8 '=m=>3r.=xm=^,=째=J=撼]4]8;p%bm<<(=t:mD߽Rid=T<w<"X=2=rj<;Y=z=?&7ן=aػyOu \L=+jH;=ǞM=f z$;u=ٽE檼 ,= |;\3pɽ?<<۽Ej,=$g瀼ģ=Mc̺===>c¢]=D=&!3=Q=Xf˽ض -( ]=R9==_d=)ϽU ;ؼMB>#t= -Iy=_n=P= =*=m;*;24=4<|U׻ڽ9 Tü!=iW5=[-=$u2=&?=ޫ: -=\,>@<%<Ѡn=ί7;=< <a=y>y< =>R'><>kt 㼌)<*=<hlC*Լtō 8;1&=:9=ź*=?Z=>}ǑJ0h6O=_l1޼@Ǽn>`'vD=ま&=sIb?Y =yAE<5=="p|<6<>T=܍<)=7>?=_ٽPm;;T綠}>@=6;=A= ==kxdcN4=>}jϧ<;w==K Z@>$нj\>a;b=E==f=W=_dz,_S¼>'>}#i=ݬL;=2W=T:"޼ JM=Jy뛾c=i>=γkҙ=}Tgͽ t==qĮm(=q0=uXdžƚe>a̬ 5jpQⳂ=2<+=$=z+ݼc^u*c<=:=>ڼ?:=P)=_Mgy%=>J>r`L><79L j*J+cC^D$q=F"g=">[;w;=R6;qQ=!ĨAt` >P{컌q=8dao SZ< +[&=$><? v=l,ڽkĽ=J<=uB==(ew =l>l=L4,=P|1ֽ; -Kw5͸qڑ=u߽{;='=&n=&do29Ľٳ=|=uٽ95=t=Q>v: P>=?=$'uO=<ލ=ٽ{? -MPNx=E/G=Rּ1DŽ=V1=<" >w0>6b,>egj>m6=э=ew^=gRf --e=c:/>]7=>+u<>b=_T͗<%2=W<=ԲA &=k>N=BeS͸=J>#av=bp0=x= P(Bs -=N:Hcv7Hcʁ̽_EI=Pm8=և'D=>=ad/;=9 >@=Ͻ<,ֽKs_o8>""=h<=8C -w$-4m8= lї==k=+r=pf`p>IDL<\@k:X:P}L)<ӻZj%=]=NJ50=T=i%.T;=|6==--j= >;R%=ckBmb>pSd;c_ͻT|?u+B9=(n0=Pq=~H5=r-{5<f=X+R>s6@MٽD=Dy=O(+=Bҍ=*= > -p;*t ҥ=l޽q_1"yxf#d=0nb=[>SnE>d˻˽sUR==h:JؽK; H,< -I> 1< m=ȽcFБּ#=I'=.=BA<8$=A;R;ޘ!>ýN6.= {&:=^~==_)ں=?㓽E;3 =PpBЙ=o!=;r=$2=0C= )X.]<ѽ =c?=h;9m=ǵ=9;p)k"Ȭ=ԏ=f \6R=G=kΓ<:F<ʻ(@= ~i0TNl6<۽z1C^<=i[Խȼ5<<f=žui=\DI=>62>2=.Jk=%:<S4>m=T3:c:-V9cGRZ:7==;g%;I2h;<|.C4w;pR="к'A< $=⤟>'=-=Â=ʼͤ\=~f(Z=܉!<j=\=Y%":8>vs$>l=5=. ?)!;H`&󼺟P<=a9>m,~Լy=f=m=m=Kd=<s/jҊ=_ܼ5 ۷<<oV=\y3VK/|$= 1:6w>ihX=/2Y0,Ixȼ;/=NJ=*ӽpg=X[;Ud={=ӼI/sX`<jμ +>:ȝ"<>:a=~>b=g"R /=#Y1=? -=G_K(YOwL#=(ͼufM@魁>_n<_t>M= =ʠG<af4=_=tѽRn@>na<#$һ sCۭ;i19=>%D7ļe.>ɒ=4ͽf=k6=$>=Y*zl='=0G¼;b=EpWL%!G=n< -=E-~< '<0>b_=PVvj_=Z*or=f$Ž<`K#=`sg1==Iȃ=vJZ=YX˽="] ",ҽRwb=롽 e#;U= -=>;>OH= ~=Ǔ=<=鞧= =e=d=:9t޽d== =&|=N ->.R:N=qy,Y =@<)"=X=~Ps3=M<"Ig=OlORx= ;F&q=ӽoZˉT,#gz=D) >=Lۛp>[ļs뼚='I g|U>]bʼ.ټ>=P-h@>v=hMܗݽP<&h;w2e"=e0=#+X<(B>Rʽlƽ[x\;zkƽ=w˗ >s3CdYd%aa8_2=,=!Ķ?=;=%衃 <`c<\= *3I`;#;^ -[=>Tҽk=|M=9E:rĽn=2<8Q<; ==b=ļ7< =B!L5>y GJz=j=$k+=i&(=T]=b=Qz= e=9;U=6==Ѽ;kL=w=B~ƶ=}!U;q=n|d{;x<4=k<̼-N)`>^@>ZR=ie<H9C*o=?=Ě(= (ݽ !t%< -!LֽRA̖$>̽=k(%aW=zm<7DtFy.ELbGc<0ϼr*<'-j,=ĽNDv =聽 6>2ĽhzD<߸ѡ=<ŸM4A=돽HL">V \eHؽ9Խ>7=-ϼy= Z=wZk,=[:QF4>r>= {<{6u=o>9[%==<i>I<ڽf:hQ <]!37>Uß| -=ǰ<+>F&?=p=P=.=ζ$=yOuf=虥pv=} =#=Dx$ -D=Ͽ<ؙpD˼%<)6 R =j>x 7=[aN<]N=b\>g'K=.CHļxfYo$9D>K=P&l=.8;-9={=]ʘTԺ=;Ñinc<2l=kji>`?1=[)_ᑽ1<#؛^?=rm==n[@0:Q?-bI;T_0C2X9X1=ZB7Š=TC<[=a>Xm= '=y>4=k=->==,j#=]<Uy=; =^1<=H3=Lqq=*ێ=A=ȯ;IѼi(0Uռp9=Qju55߆=%8Ϻ=zD=>e=qo<'=<==J>Y+%=<_W^=VY=3!==@ -==0>1|KO >x>ZýҊ>Ѭ=~ V& =Ջ(2ܽrxb<$'=i=f^F7=AB2=(AֻH -=D&=Y[7b(<=<; Ԏ;t =fW=Վ|=+Tj=/!t'=<ܝ<=%=k80r=x=i<&+ RE=Җ|ޏ=^<<׵g3=y=f{:YL(=e=Ed==w=&i<<|=@q;Sä=K%M=e>K#o>RlS<敽_a<. >PV<]3υ\B nQb,:=u}>xN]=븽{Y< |.<)=.nC=^Wۼ>N +=fɼ=3YO%;;3 ڄ?x>>1o=*==.<*ͼ %Ͻ'f=V'=l =>;74=0<>/ʽSo˂>%h -l<=ߗeeA\=*=U֋J=K=D;8;$<1L#<0 =)T=$I+f<)yY; -㌽|;V =:h =$K=xt:UG=\.-ne=e<&*U.<䮽q2>3]B<(ͽ?=q>&T< (<= P>N# 9 =>R;=fryR=ml= r=n&3:=$V=`q<=j[ҽź;Լ=܀^<:q-S<{ 9Xؠ=W=rL=3J=m5=+2=hܽ E=ۀ=J ;hF4=$I*8=f =Dy=+B<_l½L>U=a=#m_=ͱ=3zF2IR<@Z=޶=bὫ3+>TZ. > ԽU;^"= n@>+_/=޼*u=V>D=7=(X =4=H=%=y5=}[ -o=|;C ZT=>o6:1Z< =JI<=`;dfc@< -<&=y=OL~^I=N>S>#sǽFvg_=5 ֽn;~.==u==.6=0_hx:6U& ;=KU )仸<=ryMU:ǹ=ƽǔ-Mܽ>^E>:pq0>n">Ɗ=TVv=a:}¼΋>F(=xڈCd/yA<[ r -=O -ri)h=nT={=h5ҽƽ;=9pC -=bmKB<_jlcS=7E<z}KڽrI|=lmŲ((@ׇ=,ؔ3dk@ʻaQ>=亽ă8=H=꼉^=걐Y=<=A&>W<=lֻD=Ja==1=5Qe~6ֆ -yɑ<=V4>ȷ{ ]*&,=O=we;4= L" - -n=E\X=qQ>^_: 0=DQ&>KH2F=q;=I'FV!Ie̩o2.;sN>:n]K =+9%<ĥ:== =6I;Kp=={=GV7=2 )>d >EO߇ W=(=h=5kg;==& zۻ [%K=yӎx=Y>$>ڽCT=O=EW=v=\>Q=MbN;Gy=5u:M,?=pz=u*=G1=Z=h#,=˗=Z> ֽ4o̼=L<}#G=3)w; -=q~; -l>^=IJ<-<)T=!!<_8oE>V-} >ޮiI=u=N=\fIlqE=biM9#=@y]F(rԋ=:4'>-(I<<<ָAZZ=@ˎu=7O=^I??B <ʏ=鼚':lt&=1PKP<L%G&<ԼW@"<3jN=tvd滼#==<p= ==,ǽ =D؆Э=1L lw,M==%=pU<@D==4B=rv -=nI<׏%[<($)c>ʐ߽<3'=> -3< ?F=W= ,=Tȼr.As= -D=-=1J=50<\ȸ!=d?Af:¹ϻ =%M<鋼e>)=-p#A=ݻi -< `=;:d<],'t@pܖ3aG]=<.y!5V=-;1b9X7A>mR _|a秽=i7޼=Ȼyf=2VH&=xWz;M^X xp +¾C b̝=)A^z@by;T*=nD=x=k<>`z@>iu<Ռ<>.WnU=O >= >׽YBN>US= F;ধ=Z9A>u"=JUtԛ<= -(=(ڞi&Ảww\a>z=>սc<׍<{&n&j€=tv𸜽N;{=E6=<*;= ;Tr搽Aj=RU>\ڼ)r<ݼ%H=}Lz=C=1ynK-Ԕ;.H캽$#<=`켓O\<8K=a ->cc.<1Y8ېjр=Ƌ=w=ټ=Xͽ?E=t]D=~_=Nɼ0Uǽ'U<N>!r&=i@k >B=SL=63|=\ЮN=?hH\ly;<(x<}"K=:=І =В=n<$R<ᚽ?ݽ\ۂ=>PټN|Gܞ̼ዯ=:#pnջ+û:Ї=CH>979=4+=P0>< W[*8=A<=@W0T=E`Lj΅]Q==Wd<}NO<7= q`o=ƽ1;|=R‚g=&sZ,#'@:2#> q -=\! a=o[l]N>ѾEj0I*p=q=C;kEU>g<"8M=z>bW%R2{:O>mr=1=<(K~*=ZA<2߼ԙ&Y>=gD=mG=aA>`hb=>}(>'=<"扻=@oڟ -7>L=cv:= ٠=CĽDإk|iJ'>&<_*= >D;<lLҽΩ>H_F=ZWRi)e=ۼ(=UI!on\C =q6<dռC <_'<+Q2= -9=bt7˞!jt;fCI>\J;OMGMKo=fa<;* mFO G==>=X=w"=g;i^:Dv21>=5<=<>i -=<0kVw;>=΀=*P=HXg?/=o>vս{4=)<:>VX`1L =f.==`=<4.>ͷS쩼n0G<c2<]IAAX=t&e .=x=*=N^/=G{=+=G=ƣ/=N~>޼F-S=]>]O;^G'><@>D=t=}<LJ6&7:,>w,f>=Uk[>TnH=`7==#hO}lф>9*;=+f>g>z=E%>>ڽ. -pm>Z?V>F>3\hS^Y}cĦA%(֦FF/ټh>O)V=b$,ټ=Қ=.=->[>>n~6T>tj>[:>x?=KAa>?@RL?8 ,)"-1Ah~*P4;>F{(o!?CQ!?%R=) 8pC?"FqiJ> Y?d/ ?V$9?Pu'j`>S?}-`"?0{Q>lȃ޾>}!H ?2? "ɖs־l>Y=!1a$?Q5L??0ξ` '@ܾ>8{>\= x8=&> >2 -|eq.M;5R Fr8_vC,>5V?{>Kh?N{?o?p2թ#Embry^ <;h> -q E3\>A]'-?ؾNwC5?.T> 2[d"?7o·?ha?yæ?*?J궽kE? ?(2>_? ξ(Rd8wCs>p>Ɂ=?Ac;@=Bb8??A:??B??Mh>nL6`u1`#?tVb* ?|q_Zba_ ?_W>n>RYξֵ佤?Ҭ&>N(?0cSg=fx/ P@5=bG=:P? a>eTH/ &ͽ5">*>E>p/S?⺞9Ͼ(ľ侢K8JW;!=C}C5 -?m3??zN>@Jbk&\v?TK?>$NS>.;7'@i(.?>Ƙdj -=ٽ.>ؽ @ͨ>G?t>% 4k;0+*[>kTQ` @G>Uv>(t>ܐ=x龮 SK?ԗd`7?ӐP>N>hP?S?!?E]̽j:A=>/ =0??+Y>Y?NK>0?=9>9'Ͻq7=U>)ʃ-Rj?9?X=Ҿ -7>Q2>ؾ0]?yP ->!>,?. >ۍ? M.Eʋ?u>`n?Tu/(?T>JՃ?#VYD_?u/\?i_? ?]Ծu -v=<[L>:G>>=Y#gG>9?}?>1ҖҾT/bPpm?ֻ䊾lpPPZ>= ItZ< -?pX>o >M7"=A>(>Ⱦŕ?Oٜ>Qؔ?{y.q?4e>g>^?I?f>?g>HD>N>gA>}wgL??>ZR;(?&\C?h<~/>ڊ>>C?Y? =>OP7)M=" -?=>u@>UY\K >O>Z>/> 佛x>Q>&(>p뵽fG> ܼjm0ٽhx;>(-K=>yO!n<ϐ>s(\E><|2>Kc`l;f!)=6>)X9>ʑ=UrͽL|Ԁ=OxP(A&O9kx -ǻ*z<|ti<Ë?QF /о>C - -=>C#?þa104_=)> lǽy:j"=ZΩ> jfFMS,# Ⱦ0>Ҷ?>A6Lۼ*\>WY>!G`⾇ q=,>A=ۙ=݊=]r+?b!TE=:>=uE޽_f=ԽL>q W?6羫.ؔe=r)^=)t5 -j=<~>%ʾoGօ;q}!0=yI -Q6>0=>{>FZ=徺>)}=@.V+Y aB/SD᛼[>N,BdHsb>?x*DL1I>|n\C> 32=>{u-(u -@>>`>;>Og)μȾξ>M>O =/Z.<20. ̉=Pl;a*kh=v C>Tv8 1>X?C$? G^?ѽ>@>#S>?K澒S5Y>&>:6N;S>M> ?fY>VW?W:ס><%n4 i? -ꨫ?E=_ķ>P_tI?~ߒ>!T\bY><\>f=^V>?!4>Ѐ;̞ -?ڒL>>4=2e{ ?&! >=ae>cd׬{w:>I>Mw>P=>hW>7$>t;Z>Q>lk7ǷArz>f>Va>Kh$? -=gȾĨ:*=ҧ3((쟮P>,fܽ L>}<1==WW{2>惽۵_P?`>56ս?jT> (ױb/';= 7½c>OﵾhCu=I`=@=Ѿgg=ۑ8=~/?JK׾<>S?ByǾr'?>Y> `?=q>Ԁ>*y>lg?.=L?E<>\zɾnUb\?_dl=\>O=?0?߼=I?DƦW V۾%>j>b n=-yJ?? ?'E{{=~l>}E־tiW=1 ?>D|=q>>)??T0>>=qg?DM?v]Id>("w93N>??<0 n?l8>s3wM?致>"E̽d== -o>j>RlS;? |)W۾։58AGOe -1V$=AK޾C1aӋ?־^%;dI*?J>؜* - -Ⱦׅ)˾r. >i>r^?Կ>&Ž$B>p-¾$U>ym=_:yֽr< b-! - ?B=QiR8^>qϵ>J6a>5 -xEny?\X/=[?oi5?D"Q>>tI(H>w*L?_B>o>?>״?Hͪ>h\ϾhUy>hZs4>ݠb?M>Ơ4J=Vhݚ>05O=>`E;hʘmymHnNXV>m޽v#=4/>)nT' -ۨE>>6?<ʽ.g^=f}ʾ#>pNQ U EK?-?DI?׌vع>پ/=z?5?">̮Ǿ㸼^g??b3, -i> ?<>>@*K?&ϾEy?3g꧿xn;?6j5#??/uZs˱>QL?;pE>pV?'(,>W>Ca>ٚm>9/޾!~=y2K~%>* >ـ>>]>ؾᲦ=ٱt==+Z`D>2ʾ+R><{H%9X9?S>is5?:y ?L<> f=->)?ҾOPpK>Ⱦ>ؤ>,c*W.؊?6P>^S)廸 @Nx>/ͽ'?ժ&?N>BBj%?֗"*~ͅX?]Q=>}5Ѿ뾟Q%M?,콫Q=1 >T>3[#ʬ<>['nK%y]u=8/(=]1=GĜs\G=nOr^vּE6q=rEQD.-:U=2=0O!c,E>aA=';GA'>}>e|b=M(>W2J1@@3=m`=Մ=E[:7g;>F4iq8&>&hZ[;I==ưཛ#ԼDs^Žge b=b=+=t<O=)=RД)3;( =kv߇<=oѼm=th2} >̬=.=n."9:h=O>,Y,??޲> >U>Av>qK9?mh[=M?>ى&>ؔ R>+*Ci=-L5 !B?-2Ѿ GM4?? M>4k>;S ;~_|G>$>"n3B? h>{9.bh$U=>Ur=i_?a*It$=iVpz -˾=eX>Ec>ߴ=Zs^(]W>ʹ9|=a@ЇkOU/پ:Ϲ=R?"t4o!}>-`Ycل=l<;4 3D>/CJ:>wý"a!ia>VམP=+L>E(x?Q'b޲>ѻɽKb>`>[p= ƾ,mŽƥa;'3s=_1Ay>V*zX.=\yu|#>xx)ji!=yZ>؊?OUż1>=[uU=ӎ=lV=omW=dRϾe-@j - =&QB/$  ŕ=0?=F'BiXs4ay >=Z=o>YӼU=i =Y lC :ըH߽kD ?V4>8Uw `^b>->#>_ud>04l RLOMR.>ZU< h><\h< v<*oξ߯=o)k ^Iqo ?U>0(>.wμkU, ?! S} )'>q?:i=&NP`Ԙb1T>V_>+EyC=uY==/:L>{yz=׺ڑ_3>:Ny2پ?dc>D;a>>p߾Zg>M(Y0 >>vξ j9?cFa5( %ݼ\¾=?F@nj]>C>l20>c߷:"];62[Tb<2>>s>o>/>,?Uwk<(fegR@2ڽu%W:m6>0->Jx> %3u3W>l6W.[ ->6mx?c:+J>d>̷ =$^Nl>@<>8}>4k_ֈ?JE?>LDmS?PZ:?D>'(>J0?Qi42J=I;㼢|>=D>[?;J=ɾiҾr=>Œ?!"@D>P>DN׾Z󾵁A?אz]~;[:Z{>X=>HW>_>0c=<<>k=?=I=X>{==CI=PmtJ*yBU`q=ik9}>g;=Bj>eν9D;*>6o x==lh=(=*ɫFA=K>)J<66=]?|k=ex= nZfgE;J>Eg>ʔ>ȻП>l=*TZ¾ -ƽ?brY>*>w1m>Ȭ>q=$>O>=u>G>>)*I?t *"X?x>azVY>腾pke -꛿.־>3>Oi>g>T<}) ij -# .7s_l>ZW뀾# ~ <羆>#>$>/G=ַ> X۽` O>P7S[=""ӽLLOtK`>+?QD> >>~>=[1*ٽ.?X=DxK>3*>W<ר{~>6>H RČ=y^=6>A' -ľXFyoL?zm [Ծ!D;$>>ro)ϛ>ZǤ?(м{?כ+ -T};˾'iC>˾g6{eEA0?k>cm=k3`ڼUg2nZ>jQ=U#>S/EED7>Xt>@ ?T>aF> 9<>_2>?>>_d>Ō Ѐ>O+`>[9>۾|4 >֊秅>(>>U=f -=)@d>%=6ƾ<%y~ ,m=1<~ɾit+gs>Ɓq`_Bþi]?s*>!`?Axm7d:=B]~71V?>GWB-6I>tkL%.KmBAF5:? <$>V&== =Ľ"t8>0=M"> -b>ZU8;$PͼI=:4;+><2h k>=k>P#]b - ?O2sľ\TW <`3L;˯6>䆶w`C=3V>>hݤ>&,=6;p2wX`蝾>4[>Q! >,;=a2C3;s<>y;_>Wq;Z)h&<>=׵=v -&>QgȽ#N}}<ƾA">Y=Lܬ=vcKH7>"j:;`Dh%:>>VGs=_<7Bd;f<>ѽ< sOl= -5WmS>ih=)#WL`91>D-#I/>>Z>_=5>> =ׂ1pBڼw>*%p}3OA -.l=|@=P6Ai -;l)s>[#?,_͎#C?r>4HN2?饽;=a=^A>kc=y?,м-+G?Њx̾]"$ ' H(?=(T>wWSʺH>zrU?=ˋ=>kW>~վ9S::ʹ>cc>վ}r7Mwd>R>Y%=,R?⤓Nv͟>06=Z?xپ<_?qi, ʱ>p >#5JV>=`ө2>J>*)ljW>W}>-Pb>̡v22?{=N??ľD> -=(K>?f`^? >?|P>K{>5X>M?؉1\|?lP~> -5?Y =֚=\&^ ?)^>¾j? =#s?{P?W;&^&cܾ͚?O=k5/= >~k=(ݽG>þ*I̽TV=8c=N>^>C=2pB>G>}.9?]>ƽ.d{Ǖ> a=>f a > -=>?7pkC)==G>>p>r=(ƾ8D=A<% p?`G|:_St)>>>>ӃϾ}a?Ne>X>6舱>#>YK/C -L E>zD?I ?8սKJ@2=G5>@<>~Fk?g^t=x=SN4YJx:>>?-q={3<|>>ŧ=n?h=@Z>3X>;#R;n=IU<F=>w<ٝ=|<۽e,=M<; ټ<{Խ:< J; ~.'x;'='Z{==>2H=̪<^hC̀[x==չB7<2=_K=c`,үH<>H&G><`SI>!߻S>X >ʾ3@.'5->CH쾽j3)>ʇ>U>@#><=Kg>>H]~?Nvq?Ǿ Jo=;K -I>1aZ>T>?y?= '<""ھ` k-G?'>廯=T>1K?I>>> -c?3$<(ཊ0A)6;E:#R_4$DEL>Qa>C*0L@>!7x>߽I¾19N>CY>DjZ?]'z #" ?*dX]95<=YlPK?Ѽ>iJXw6>=^5my=`=?I1EJ>B|98߽1>o\ 2>Ce//C,z<LY>'YHH;<>IRؾ g$Bl̾]w>\Lh݁Z>t&%I%:0>9H>&_uE -5@v nv{'/[?Kg8j>K=of=d޾ts=\>,rMƽ,>B7I?qx=D .>&?si>.41)"?+.?+>>2n+pG<{E=k=6v=t}C(?{:Rr2A(9~|gO=9M7=pYp޼lﶼ@jR>aƀ??x}*?pP`?l>?X!ؼ=/<;?~ ?W?7?R?ӕ> (?/1?e? ?h[>'?&?Z>h;D>y>畋F<>lʽFcp??,>{W>'?G=:f?A(uQv?>> F=O`> ὞6c:M .o&*7~<]¼̈{ő}=hڽg6seTd=/W>X(V>=哼X=h~= =S<榼ډT%!v>[:=\G;=2>I$<=+=Y,=xE=l3=';>=k_;\<==T>|$$w=_ae+$;K; \h#mO=ԃ1>qPjYP=1tu=D6>y= -<=Z=c> -VE>gj=o=.>U4=M*>[=-O> <3<7=IDZ=/7->Ew= ]9h>q>ҳ Y\A=s{=UZ.L/F N?uhüe5?>bI0e$[Z;(30A".3ؾcб٤ >+BN?,Xzþz=(O6 --4ͭvHvn9$i_ -( R<}?>D#e=UY >=i~>p|=@3U.9ΌUQ=" 5;EmR>m>=O2=<= -;,,YHK>l켻QD bQ?zň'W?v>>z^><`𿼌+>dI1퍾rV⽘9ɻ={-y<)ْF wL%ڔ{B>=a H>)=꯱;qUy=S38>L ;*!Y]5=}{,=ڽ<ɽ@ٽY02B#d>ٔ=?Vŭ=僾RtP]?ҭмϾ4>˾rheo>M4VkY&t6վ> O_2>< >ۏV<;b=A5>ѝ=u|paۿ`t<2K>N+M"2"=HxJk.=$=ܺ=T=ߵ>/l>&=ۤ>^*>=s"w=*z%Ƽ0.ɽݽl -b?I@?=9z<x]6Axq>[>dϏK>s!-bu=+=#ݽK=k㑽F>Fp=U콺K>Qkc7=l]"I;40>?}[BX̼>~>t=PG:=+{=[w4=c>2y?+TܾM>ML=ou F='FKXP>G gy>:?44r>>e>t4>~w߽B> 9>zXM='Â&>\O>F'=Q(> -9>==" <ƿ>$pLf>dM>s===A|I>>`_p=`^>N2Nxz\>kk>8@V|=Ts4?h`?>'?Ry?Dg?10>H>Pv -R<.:>wi>>7?%!DX>ϿK,Ȅ7?Uw#>&ľ*?4I8JP>U>Α?G>K6žK5V??EҧJeϋ>*:~`>Ď?`>??=ĥUVC>y =A'>u¾R+>Q T?=X9 -80Nza.dCa%ge>Y=?*]֣̾/?TB;>x5N3F==V>nμ3?2>m>]">rkRa'>u헼`>'=?;>Z=;=)>lM!!r>Q>s1>wdCs>>>x>Zؽ>/)x̬#>==۽81u =ЋT0>]ǽI.澽6 -[43tȡ乕 ;89B9Ė9e8Iz HD}86ss`3շ/·85]LvG:::_ع=9M&H9vGVeP9|#9lCj9֛9Ӏa:N:ٷ9 #B,A9QAU!?s%? -̾bC!d%@Vn?CH>憵>><_> ]?m]ߔ^}G?d-GnuD??&6t?ϑ?!?,e>XjbǾ9X?kh)4?Ұo>9==>CI?Z??yҾl>Xo=?(>ǃ mB>+&>喂@x?v3X?u"?E=@n#yX> -; ^;!D/)50(-e&)>K)RU˼@m׽D^Z]>x$e+=Pn>\re ='2tk>D=>j> -羐#;DZ$>,Ǻ>9D8?xU=}>fL>ZT ?^>/%+Djݽ~hP#J+b\Ķ7ָe=9?ñ>?%v^>>?ԁB@EԿ< I+Sz٠0.@:Joq>?@jCt뀾#>Y*4+>_,=?$7=>=m{-A|?s:?RPJ~\  Ak>a m<&@j;>v>Z"> 5 O?ɷ=6Q>G=(?GZJ59;u> -?οY> -a05}Ǿ6+)-S?WLB,XӜ?~;7 ?2M׌ [DFۿᐬ< >~zISM ?q<<׹1m>SUD``??˽X9"??br\2?>kݾ6dP>?+$3Nz >X@>Ԥr>?^;?r$@7m>'?7Gǿ Z > @[|=y򠾫>",7h?W{cd ?? 9=t?fҾ6E!B^?_>?ɾ7>\> $??@+ĐA aZ?7{??{YþέtG>fξR=ve'w1>S?Ͽ8>qm=NR?Gv<?D?1jq?w從FMzK?U?FQ ?+p?Š ?{1?_ >U?q ~>- 6?>~ -:y8YҿK?1:c?R ^?l? ӽý:n>w27;S ?MF>յ?+ >׌>H P&?գ?9>\ٞ -?Lы\09#6?{`ڣԾ+8vEEMvܾʯ,!>;Y)@3 -A$0>? >+F>y@>k>'>'{ӽŽ>?־{2g>B>jK> m>TWԾ[>,&g6ߨ?:/?fo =ׄ>>sۿſDJ״ƽ`0>*('b̽?wJ>B#>*ɽy~?F>. ?L@Ghv0b=Ζr>m!9>??x=([?by[>9W?=䜽Q>B?|?dԾO0>FsP?t]  ?к?T^?tߊ> >18E -?t>6a>L⽩8p\{?r>>.?!Z?l?!‰=;k½{AE>^Z>v;Ҿ=b=򷝾), ؒ>N'<@$f˾>ݾоo~y˧B>55 'w?ƤHDڒ>"?_]̷vŪ?S|?ǽc>R?y/G(/$Y;?F4>~:I>E>\t'3;>im*U?G7E>z(>6BU >ߝ>F,xN2?leϾW/1L>JJS;Oþ0h>x&[>>>q>Hn&Ӿ\,0?F T=?=48 -W>=S?jd:?>=!>{x-;)>⾺{]0>u避 -FD?KUF8ui?uz>Ҍy@?R=e۾}Ӿa=di?`վkD[> ? &>A-#H?5.U7*>{ >OIE? ʉ鋾{B>ʽsQ_{˼CȾ:e!Li۾>,0:V8x>!Ab&r@aM?(8* p!޹۾J⣾-˽3PT>b=!1\>tI.=)?A?&?4?> H>=g>As? ݿ[h>ʾO7S]i=]f˾7T>,wD*4\?H?>ڍ?)>gI>7>k >nXsP>d=?k=}>ؾR?S -r]?p?4[F@l5Xy=3>|nLו/l>GMC9;׿k>粙==??Iw.6:D=4@+IzWD=>> ]?Ќ>6>6芁̾vm >C\?㥂>-??=/ ?vF{Sc5e?^>LMᾜK>7$x&ϊ>þuo -%<2?B?ƾgΠu̵ ? -[ӳ:>&$ۦ H&t< ->!b"QYxe$?I!%sᄈ?]h9> U!0*?"#w>˭0?yMlJ?,/"ٽ!?>@jveJt ZGWG>%F=>úC> e?SI>=4pty+?"=62#?0K N>5CN@6]>>U(*n禾xuR??*f>%νAu=A>2@澖(?M>Ӂ>Cy5>5?~QW6E^(&?,&"1!ؾ>PB"=a0`>uվ jҫ=kU'>>da.[T]ZV?Km>g=?ae:3U=X?.#AC2>`>>Ϫ>@Cq=%lX?h]>*d>lnMU.o!\ %^ 8>*?>5آ`>{.3/ܿѷʽ*)5Eվ=M>p>!,҅?O@𥳐)???ZP= 岛>"+p-LJ >V>?9\_>똾?=SZ>x># P}zR<=y?y?Y)=aȇ8=\Iſ{(=3Elx - R?2>bSGlƿAh༨d2>SLw=d۽s.[̾ӛ%i.h";r ?5w@|>/F?Ib^E=M=I׽V==e>{?_h>+g=Z ^9)|>?xGq!?]> ⾏S*[hE>?m >aV= = ?~B!rBW>!ǫ?@;'gD8W v/>y{?U;`?r> 3sy>O#x@ >{_ >T`=`Bžƌ>A?Rh=iM?JS'?]IL> ?)ZUeHEAh>>>l $R?kZI'1>?#=7_Jp>=bO?sýZ+?:>&>%NSX֪hET@Y>v>1L?>y?h݃i>x>U>356n>?{\z>'!.?'L>DZz>H?QK'f%3)??Ora6=?#?xV>PG?=~8 >&%>ɾ$r?볞K$N#.? ?n>M=K)>J럾%g>41O>a}—D?؍<ԐM?=E-CUXʙFW>l5>Z>.;䗐;jD7]>>g'> セ=ޮ<9?= C=3> xн<p۾<TxPP~ ڽT=׽F0 ?b8?WB»EűoÿW=Q=;WG&fNx>|3I?=2z< >p>;Vjt:ɜUh>f=@R>Ry>@=?$ɇؒ?[?Pƾ:?^̈́{".뽫Ny>2=ޏ?~?Gп{a =2@%> N#kms<ĸ>4(>w!T>w]=b+>E>>}?3-&&j}ɊSu nչ[>zh4?h-YrqA?L5>>z_3?KPDJվ>x>l>d>:< -?(H],cŐsh'Wr3&?ggre¾?\8? k?I LҾ'8 shݿ<3? BC?$ֻruZ/B?7>4o6񁊾.4樾.a;?wE7>E8E0$?Vt<@I /?Cu>x>>tYS<.>="_<*9/??B??p<&>2;uPɾ~߾u?%> -[\?!H= =$n?.0o$!?2!>p;sڽcY>b?D>~f>l$H>?(?7ԾTJ -3?+6>=b`>.`F[>?S%>˹va=2S?ġ*sbj{>ڔ󽌋Hdz?m:þ I<43=㭾$8>#?#>y>#>=2?L l|(?%'?$Є?=:?w>Њ? >\<>65Tk=m厾nL34` b.Z$>>.sC>%P>>>l̤>β='/?o-^hI?ܝ=?#6ʼMqsRP?::%E?$Xپ>?= A51@ʆkn?H)ؿ?FH?zԿܾC=?Tؾ}?3U#>=Y>9X?Sӣ IN?}?V?`m;5tԃg=vס>1,r5=KքXt>j=O^=w>$>㱽2N>'ξiq1dk3>@z>g l=i=UF2CyF?LH9? nn>0% ՘a(?DYP>=Ա>0Ikk߽>?J>58>Lo0>ʎ=@P? \߽>ƿH?"?c پ->q#+?ԿbJSâ ?vﴻ=5?߆12@&&N=b?G?z>6߿q>PJqFOgP>^?"q>45d?¿Z|́Wd=;R3~Z&e?hN?A?Ote0d/JB>8}?No=(п4?Ud}yԽ;;$ջţǺrGR>{b>t{>۽=/#?>e>c>9IX>V>'þUg??&X=}{F>en)>8<3uO #:Oa4>y뾇r>8H=+ʫ>%t rA=Q0>'>)=8=QSv?qw f?>I E>چo ψ00>3t =>Ԥp">ξ.e== ?>$$?(`o -?-=g@ƭ7^>dȽᨕR?2̓)W ?|>? ?Nv?24'?߻)=V+==>'3mw_.?#>C)5=9E.ǽ>+i죾@)Gű?<'L'! -p?@?(?OnA>RFžj?'>Ռ>-6,8l?nN?<>?kLyJ{k`-hr&5? ,!>c?MQ>~?kI>\do>G @K??r@־˰0vp:>/Ǫ>ك?4h?\ϑ=p 2?|*#s^lQC? >,??f$?p!ZW>cw۾;$1??J?A*G?nuq>,T?R1>sk?L>#QPBA?6!?7U ?[Hk>I>?>޵I?xϭ?U`/S0|?iоqL>K>1 -b0?>7?>$5=>kZlvj?-?? (%>@Zۅ?>0>; ?ٽ>dMZ>7so> 7~X>E(]E3?/?Є>Hw?/">-uI?(?VGڧ>=\??lToZW>8?nCkt1?M>M> ZbcĔ?7??>P?Fo?mB>ʱ>Z:b?G?]2?+C=h> B? EB?j??F!K?Od>M6?/R->)?6R= v=lk -u#?qlb %+S;-F>'f=V.H=>>'?->=FF>[.)?=6=1V8 -=}=cøQUQOtkF,wY8ι$w=@==#Ͻ<>־E=0>I>EV)21>XG=鲾B>烾z >b(4=n>%QKȽŽ7 (o su'Ip{2^ -ub]3r.1,VzH|׹Fh7 8zh9lNF8價k}=`>o'><5v>g?a C~Z.>;b wӹQjm﹊-ry[ɹ.%=9HV<h>c=ۤ )>b~/+0~|෵=*ʹ~5繝mN8jmȹ*DR9B91B ":9̥jI702ӹd/Y9 "82 ^>>)2=Ծ(}-!zͼ29 #|- N9﹆Ϙ85ON8B0bu"8J_n8*9S仆n%t޺Ԫ9z8|k#U"⤸W"m۝8'<#_V;(Un[Q>`>w8?>K?>/=z9Ӽ=P==IX>ۢ=碽J>I$>&Y< #^X8s>byսs;l>fK63ٹoFU)tNZܣ='>!+)>2?TQ>7=oJoC{>Q=>ki>'6K߽K=7nV,:3[9{ -uޫ8978ؿ m99Ք8\=R[CC00rS:&zo͸ˡ>Hr⟹K0乘c չy(8#>)h9=H犾6|<(Q>7n6>0=㤓>fD>Qs:>s]=S5*:8A =:H: \{;V(%.ս>=y[> sYpUKcֈ%=,cB8tkL0; ==%=> {k=x@<̟=]}DžO G3$Z54FS>st[a>[>P)P2>@09@or!b[ʸ996Ѹg=t9wG{s๐9c;Qfù,%?0+ߴG|RDF  ?q8__$:8mY:-Dz=R\R僺%rLtΩϹWQOd/'xhȸp*vb8kᵸa 疩6 8\n`4{&M+|Uʹyq'勸z>9;a}>$=#+EK>ç=dgW,9H=?Ul>s+9>%>Ž}>Z;M6u=hr@8=zKg¼&=,8򗹾q¹KnB"˹оξ>wd=?%>G =m`#p> /3T;6ߨm&6faR̼>h4>.?g=yd=Rl!>x8=ùhL' )+)z"[H 9pv8]x%8˹TR(9!4㴹9=VqhCb\w0>>4>'<'r>}==S q8n{鯹.QIqиIUX9e/69=w$e->cй 9θk!ݸȹe 9/ɹL8C[[Jma99)tɹ9&w}Xr98N=i> >qG33T>=1^5[8ްD8t乮u7K98819h-VB}8A8S۹L ~E9kȹݕ5REV'})v"=,>p=YB7M=l(Ъ;;==ι -1J׹M iEҹ+G3Kw榸>:do8ι0[>^87_)K9ˤᶇz 8+u10}K׹>>d>ul>RI>i>ϓ>>->0=5==W >d}>뵀>=~>D>/>*# =.] ?%= &; =p>}nӹӹgR:̏x8,b3@<<>`E7.[X ƶ=K>|81ە߹ ^8۹(hw7&W8rP@8,`ɶ S'G'b2 ?=wP=#> -tL=e(?(:;(k<w&}f)ùݰ&Sxgڹl]&lyZd0Ƹ@AYع3o̹qojڢ#7ueиҍ &H8ӷ&ql=J9>+Fu' T>%1Evx@0s';¨bݞ/>{ܙ'n0tӓ(> ĽX┹΅ -& -|0-7|x":  צ۞?ʝ>> -Ժo3kb+νdǸ ^P߹>KZ?<`D -h|v2w4]?z0>s`slkS𯞺Jt O빱'zȽ )e>g ?wk߼K׹Y=:e4 djt5:\= m¼J>D$|`TLpļ6J40𹳡kzm([<ūtvm3Ji=әeY(*i2onǛ<ԾYbr">-v:9e>%/>(£:L:(>|)@:C:lIY:49 80?i99#I>@:Fȑ;f>f:g=ċ :kK>ֱ>'>s:P~9::>jo|9:7MC>X:z==>9:wP>SU9b98y:F9^e:I2:):]9>TZ>M9;Y : > 8 :KH9YK6:Z->"":\<9z#:y>:ʜ919v:5l> -b:9rh9&>0v>s7= w9sM :kQ>_ka:\%E99K|=0:{ v>,:KR5.=YQyо0 %>/Д4"v)8$CK<)/^f4xoE='ھRGy>R) f5/m U%KױAM'$l#[Zv4i0ʒltCW`=!HԽU9AJ8Ը"IhnعX:l,N<]V0Zݸ治1! ^ ;1?r-p;+AeP8f|7&&+ iμ&pqc uBvxs>b똸)XJ3ȹRnCӧO]AU4v. 2 :J>jFwG `:[>;f57>l:]9Q\=994z:2U9<8#87GE99Aw>Pj:*Ic>:_>9>E>g>*:K8YT:>:6$9E: ?vF:8n>fٛ59%<8K9g:8:̗:|N:oͶ9c9&>F~8>#:U>O:R:7=Of>Ѻ[5c>d9iU:)ۼd*:i9͎19i> :iI=v* :=ƅCw>5z.[!6Yum,)Kt:>+u#]e7F=VXUԹc*rĵ>4*>BV*?Ac_EU–"Etg$ؐ|27>٘ߗy a$֙8>t =LYx",.KLq[U tvp.%527S`wqJ0D h_ZBmO1%=(NUU}Ƕ7fʿܲT-^8NG= qHgv'r57zfǰ>e@JȔ(⹜<5C-d-bI{_I[9t=@t>*Hzv<@/>lG>29T88>̽4M}޹5TZ|9N8oJŽ)*9d=Zy9}d4qո>G0 >P< -$lmϽr!lG$94́я9xb$#9H>)u|U>Zb}8@> -6 6>N] 8OCȹ3 9:> -gm9<8Ah :+B8槾8eb@q*9p?9i9JPխ9m%9rB>d>^?A8u>b[,͹n-8G{8 ùr5LvpH9 -ַݨ9E7=e9P*}ؽݶŹ&=^9e@R$MNd#igg99G4ڹEg>?xn9u˻f{9 ->a#>{9*=s)99~791Đ7\(L8tVT)=PU Bٓ9&891j85Jh<g!M8XPܧ>#8d!0>3ӹJ>gjs`8Bؾdth=x69{uviF\8V>:<[/ = 9ௗ>l8>;m>?my>wܧV>v'&>0@ڼ >d>FrͰ>U=8t> ->⅚6B>9> -<V>J==, .<6>=7Ͻu׽uD>赽^`>=Z`;=)G ̽ɤ;Ҹ?>K&f#QM98 ӹjUkEuǘV[<- >M8}=𽑩C=&=` `>M=](NV>=iPC3^=W=ɾg>sP>ҫħ> ^x>Fՠj=Q> >CQ>K=>>ӓ8C@O,>ƓXn>*Խ CݼkDS>Y VW>T*$1?'O6|< h=[l>*=TX< ?0?r,|>g"<{q=Ve=ʱ>tp >>!>)>OL7JEYUԹV!P9C=V&<  >>=+<]=o;m2Ԇ|w@>%l ?ֲ=d=b&>9=|=17=;= -=9>dBL>Nd=}=!B?&uc;2=< O/bL=t/=3> 귽L+=ľM>%=aڽ= >7N=j3%7i@oz&"La<%[W >.=XeP==j O>-S*=&y=kMϢ<=ok}4> se>:>83=HbL>fHD=>8=|jf=<=5^`7=\󑽸fP齲bL8(?й9#9ݹ.~G=d>Ja(>`Dh>JKn=T=EUw=Fh\%ڄ>*=aʚ>E}YP`>pJ=mD>Y^ -ٽ)*=s><8>> L#q=(<4Y=" >c=/>?5qo޽np;O =¼)U׽h-C=gC>2=q>=#^>: -=H:=U-=}Vضм\>J=p=3>IXR==:=' = =@8==92=u< .==ؼaJyݎV~ Ly)ے!ҸZGй$wtc97ݠFcvw1Z>lɑ=:5<'|>E=n^=;8>/;;;BNN>l>B>7>>v>ո&> ʎ=ܽ`̇>D?m [3 -LT;vHܝ >}g>m<\@S>!_=l,۽:M>G<+7}=aD>-=Z<ڙ=fO>= >ͽa><>%>&<:'OQ;;#?ܽk};ܿ)t]=zQ=_>!$;Λ$= C=7U=C=B<> -a\ ="g>q<m0<>Qv=L?1e>]c->>/=jf>->Eb=xYY۝7;Jj+=_r>==&>=;ᕑ>/<`zG9^uih '>47Ͻy>MIit >56>ŏI=,޼V -{f|=AETT.c>r/;s>(5=W%>WL͞7|>sJy>oB==!=aS~h|i#dR:-=Q$,=pdVk>tLP=Sn==9ݹ =kRCy8mJ 8`jݼy<65`G/<;IW -= Z>a?e> ?>V>>6c;J>i} s=q\` #=2;4;;ɗϺ;];Q +:R]7:/ޠ<`x< ,;ck=)w֪Bѹo`9缂|ϸ|9UB8D~ַz9h9I9!r%չf]QN#9r8;M=8g94Ъt8Tf"bc :rߔ6ظ|5$'!/0>==Jk=N?=h<(> FDԄ9vt\L:k*:6zݹߋ8]:d -W9/j7◅>ývA>]ʽ>C>]y=@0>:b? >T>VU>=c\=ˬ>HŎ=4C9Rh8ː78ֹ}gV>>_=*>{>{ȅ=w=?K==0<#^'=_P=מab:M?=猏W>>A>m//>yٖ=>rA>O>,d= - =29|=9 -:ipe_ cs:ϧ68$><?C}>_ᓽR><> Z2.͹Op7Z8EùF6'*?_>t=>> E;8PN=>8>&K=ԫ]⽨=n=J= >Żg|=(;׽=i;?U϶U9d9^sڬL -9~C>,=7pY>Т @2Z`>q漦>k}i>= z$=pG$M1 =7?U=|xӹK29a7Y9 8ƪNWpnp6=>>ث>C>乃=|;B@;y;R=:b<˺=u?=ͽc<]X^>>f>-a>>=tm>(k>(d*F>j@lp>G=9|`<>r=A%X?=/a=z{S=w=>w>oPg>r=q>y>d>Ծɬ= ->)>E@(?[=F?=J(V۹۹?&m^8xo>碾>U?&V>Y>/axR>eO=VCcH9/*:Ϻ&:]|N;=<<κлuƻ -=4=rhә;lպ7_*MxW$c58;2B0:9TС:<]<96HxQY,9{2=x:xE/8e)ݺ! "pyּ9|Ǽ24=S&=;</};<̗<޺:>>}w<9'5!=QH޺;Q~( ;^R=ӜKr>KVC;v:=XV»F/d=Z>j<촵>U&;BA?~sPŲewi7!6)Zݽr`U>>;=N+Z4.=~JLތ =G!!?%>8? 6Լn>=Qs丂Y<^>=X9Q .!"TJ(ݢ>5+&3n< T>!=LF^=%eK>%9>Ia=1<='A8=k=g>3kt>t==j>4>UYN=ս̬>4ú=r8b-\}:@=q 8#=q=;>=R񌸛e>>_t%_>;0l<,,/,nױ=fm$j>U] JJ8{>cHpҽ*>g8OD{Ⱦ/>l>>3aݴ >gg=tػ[<<= q>Dqw(xe=Y8cM78i68si=pb\8'|/D8SX;_7XԽ` =~T:檍>8) =:t->e<٩ަ)< -<{=d)CGϽe>e= *>) qd8B=>A>.+h)*>9A= -.<='>'>MaҌ>k=>=ϸ <|=L =b:*!Q=FG>p}>1$9==*p>>޾>;>1a=1h%K=l=0> X(><)2ij2 n=縤>`۽=Lե1<Ql!= -l':=~|-7 \8 -|>>(N r8{3==>Zӷp[;R=پ =R\S9>X=սw= = -===n[ľ> =ڈ>A;p۸(=W=Ƙ<ȿ'xϏ> =>/fiPU&==gbYN<=߅;=kD$9~$Tv=a,>Um=);3)K=XKUp9%>[ý&|ƽOD=~S>N=Nj=7E>̦;>_i<>F!=:sI8_9P89ƴsk=~ [b7??G>H;s~k7p=ŽKpYh>G7O0<-n82̽$ ۽Vh>\<Ռ>>x>)8>>=ҕHX>r} l8q>&NJ;6==W˹="=?V־=`5=1N>#>>ܚ'>YB>P8LIr!j<=Ri@8f=%7=<l=Ψ>,{>,|>Wn=p&vսT}P(Jst>p 9'۽T= -=:Z-qǽZ'=;׾a $2>{EmT&>`=2>gK޼ ;|(0=ɥ;/H8>X7#> -r vv]t\,>0=sp= C}=#';J<¼+V>B=! 4o>cmhm=#> {<f[=9ga',>'8 X>=Y=и~y2~bƶx48ƺ=>,;=щ[t½}Z]:<'> =t E&>^#M>3>=&pK=t>=g>> wQG< 0;r*O>'4>9=m=9VqἪ>=9F== - ->>> nN6$<=_>{F>‹=ВI`u -9E<=,ř;=$?E8cy'9=ذ9?;jvC9Cl=>l䡸ja=W&U8>L:)h6>$>9e@= =->zG?k6R>מƽd:?썵>7>A6>~<[J P:u=?Y!tYUrK')=5c=>=D]<ϗ=߉|Yf]4k=>Y$>'<>\J>'/>.v6뼸o>[k=l>νs<[ >Ul۫pހV!>bß`NT;|>~"8>= =T&=6{u==8=?X;?~j=8ͽt -`]* >z>׽M>Oɚ=@>>Y'Ri>ޛٻNmyV u9@9-ʐ8i'xƹ7Lqg9ܼl9ɽ+V=@=Oa@"[=W2u=P >56Mw=_=d=Y\ՂJE= .=%:R)z>M>`3>L=NRWZ>b-=T#8_0>3 =3|>">}0=>K== hpWνX)H= _ʽ5my>={ ^ʊta=80)=3>>W5C|8ƹ/޹x_eŹ67 ٹH^/s6d$"9̸8݅I={EtM=|v=<眗<=w;6>w˸ιꌹe78ͧ 7A:jL<$#hF > ={=L|is=z|@{SzJLi f6=|нH6>CR>l6=*ԑ>(!v>P = ;qn=+gL=">P=~>Eޘ>=V?>UwV;>}Ǿ*<;>!>S>x"5Q=>7=|ˢR8YHIcJ'9(9s8t*}2>k=6>M8=~=.E!T&Z<;0h{k}]>5>)=Zt>>=P Š=A>:;]P>AO& -NVAr@H_O?ww9lL|/:Z ƽ4}+ >===V"_g<2oT<^ͽCM@d>U> -;=7d>e=! L*>78UZ\D4;h@;/MPQ<?}=>wὰ߼.><*>= _=tD!׸ `fj09f>>஼=+>yƷY=FS>OrLs4>p=Ḽu|=F)>F?C;밉>Nh<:˺;VȽn=<1Q[=<>3N>v=<5?htO=A:@}>Sd* ;Q>{촾/>=q<0J=v\b7=j[[ >7VF0P>ԃT+=t>P -=Yˊ@=4=ztYH~A> AY=񴽛Յ=/8ؼ~>u>">Fʽ3Ґb/M>$>U>֬kǽz=҄;=q{="=p>#Z>/2==x=WXF6M_='tH==j=w~<.l@D=(~iE=3>0?S~Y>a%n.dʽz?+ִ=Յ=;N>Eg>tb:>T_>q@>3gL4=>y ?CEv˱]=Qh[JƓ3x{Yc7$󲹾~i+YN=s((>_>qV1;Y tc1:y$ z=l<*3%A"ن;>S>3nD> Sa>"ST5>C!i Ô>w,?IL>(;"?"#>:L ->YS>=ih>QJ>>¼ \=<(>Q=,l<'>9L> һF>=?>뺾?K>;l_]ߠ;>&F=e=]%)Ed>};y==K7%?t)zoS>>ȏIȡ=&,m&=o(Y=-$g>, ->N> q>+D>Yp>}>k>v]5=h>q=F8/n)>V>U>0P +XңaJ>F=Ne>&>r:>ztK,T>pkZ>>>Ag>>>G<=+?=$a@>>)>[> X>l+>kr&=<,>\v>>a\>]M?y> rȓ>E>t}> Ⱦƽa۽62'⾝ o= d&k">\˓g =>nn3,GNN)]p<Ὑp>SrP/-=O?5ʡ<,Q#>޸?UȆB~>[.=>C> /y 4U=Qi> <)¼(-'[q`xS`=HhnJ>߷(<Տ=:=x>'>= >dB;Ҧ}no 0'՛V0pi=ϐb>V2Ľ<>Y;4\>&+>;pC&R66b6@>2r;2d>켦YE?5.x> &&磹4*>>$̽.=\9qXVB+߽wL((X}>>`I?g&LSAAq ARXØ=ٽYFW?7>?$?걽8K@r` ,To Za"Y=N>IN-p>8h=7 H͝p۽yӎg?`Kv!6V7FW"&˽7>i=&XC[/9G>B?H;B8Bݼ@ ?Zt.>(>>?`BY>Y"w>>C@ >E18OO>޼SR=*=؊ݽ^>+ ->~$>YgBp8Ͻ@cF>ڦ5콐:轛=hs>!> .L8v,2;>/>׍>>>Zy=y!F=>60?>O>S<%>6 3>v_z$<=[>C;_>w)  ->M6>rSe>@>vX>ٱ[хA>wg>q@=Rվ>2cu0bu>[>=:T+q%/b>ý>>d;>f=ϐ=0|=q<1ցFL>hi>v.\B>о!=w(& ,P9IOk< ߽=^y7$Eg>3;zӸ=XٿF2>>r=T=iɽss />&8v>4;Hq>iw>> h!>J궽‚hq8꟱~7E!$3T>)(X\ݮD+Ⱦ*)>/ -5?h>sdb7<=\<炉=p?~g?E>.Yc=Web>&u7[R=q=>Bbǯ==龩uv<<>ne -&0=qE=yļN;ۏ1>ۭJ<@>$H>m=_>ㅽ-> >e>=c>N=8͞=w> > o,I56\>+>$, ӽGA07)f=8S=y=V|9?JQΧ%=e>T{bیS=e<>* >xٸ=6J\>7f > @N=g=> =Nhi>ݽ=kI=cn>mض?>k!>[=\V*>[U=rB_g>l_9JY>eq>,>S5Q>4eJ='-{6Ͼf>M>y/>i;>jA,>e6wc;>1!I@y+In/_C= 1 dĸnOn D%;6>\d2;=>8c=)>>̷ MTrk9dQ>%5>D8U>Ěiv b>g=2Ⱦ_{=nc=S8\7> %=F- @>X)= XTivI> ֽ+ntq>?W?># AbV>>qvؾ`>ZUB=(Ng#Z>I=>>8{qd)>=&x5>Db>_J->{=7Bjb;"E,^H=j=s|x>߸,D > >cmA># =K=<=,>>r <$\88ͼP>Tr=eC=9Z==x5=;K&9>=<ڍ8W>*4*x>/ң>L=@<4"8T[ >>>Sg`}Ƈ -6׽HJ2>D=Mu=*>Bt==[>FwPH=]i>z . >g}=>=1= Hqъ>꽾wB> ->|(<ὮuT4,>8 >i,v>>uy>ؽ5?=M:4>ҙˠ>%%>?5<4t>Yx#= 'QNAףҽ!"Ne `#>C<(P|Vi=T)ؾ~1rW:=g~/$]BA7Wr嗀rB=A[U=> R>EE ]>>[qM[>l<8'N=S(I>u>*2 E\u4h׽#\[<]H>< BH .P>+>8BT<>(=u>t4>R8 +>FYa>;Y=25ﱽ!0#4ԣ>8%%5>\<>֣=j᣽,Ž=PU*K+=8=i>ğ֨c>?>⎽ ۚ=P>l$mZPæR7=wzu4=n.!= ؽ3s[M#꾛pj[@pa>AN|߽;u#n<(bĪd>= >= >$>@>)2j~L=s=@L?W6>3=7G=E6=>}Qn=潟Ֆ=AY >e/Қ<=ǽ2h {3+c勿锻c|!4=EI[MB ɍ- 0> >z=D`Rt&VRf9Ž4=':껒"8ٯR=# -g5>޲=ߑ>'=;Ϊ=\>o w=콟q>\F=85I?U*>B,>$>4㐹=&N/@?=0ԗ<W%>WR>,䕽q*>[̆=Ғ7ZD>;lWq7WLNm9*Թ0=Nu<>=Auv.>Hr;R=>ѱ)=S4CuYd6!vFF>~U%>{[=G >>i=e>>|j=(ȽuŽp=䄾O<4W=#dүn=ڧ=Z=<84<"P'c=5>:Q/>d>⽢=1(> $=ފnRC>h>sotb>I>Tt"Z昰> kg=̕<%A=ۼ=UüA@k>k -6=;>2_=& [< -g弒(=MR>. -+I>L>J>L=NZ=>_~Dw< -IWP,,<<;Ќ>=$(>ʫp>o58p<߹9U"'8S/58\Zs2>p&wRIIm=3*#.UgK=٢߾e0I=XA<x>w=+[=>=H>>v:>>+V>1=R/>p>BD>>^Y/>u=%i>*q>qD; R4?D4Oc?j>_Q> =|b=&'V=h="ӽU 7$CB>0 -=SLIC>^W=E7><>n=ݑWk< PٽA?>W<>.=g>"[==S))< =ձ==~䨾ѥQ<<.T31ؽno)c샼GBEi߽nn9> -DѨ>G=[=c ->Oj=(>>h=6u/Zu)]>t5[r/==>*Y>Ȍ=8=Tj>LvFDԽi.>$ P>F;;;4=);2ֽm@pm>A:6>ڢ-hd;TǾ >F626| -Ͼ!!\=h:Jf#< >C6<$n=#M==|@=pQ;>:Z2>S>%Լ>>> :$> x+OSpkDWԷľ̌D6@$jCr=Q= -S> ==^>wy>=;ۆ>+>XԽO~ֽ،|>*>6ف:"缯k=kd5nJk>1>O0B,>S=Z?ܽ3@T>A#QIu(J4Ľ(!7H=d U>%>?>ff> *>8X>"=%j)> q>`WC<[vQV<=T:<;>hżq_>8.>yw j>5νߺ:"#>#%Q?S>|E)H%>F>>w>E>S#)>Ki= m<8нgA>rk˸H٧9OnS6 9㫽RP/Nc_>4!) QɥétǶif4>ƌ=Ag??,=f~O>r-=r!>D >]>%=J=2='y㽋>>B;>)t( >}1> fy0uΆ>Ջ" MA>O4s{=S:9,>dn=aQ>j>]eϾA>=q]I_C"=kb!?)ѽ ^)293xx<; \I>>}>(=i>>>z;IB%E@ļfTAj? >=t> = <,$=}X=d=X!-;V==%=u->J> =Ω> >.=D>rR>f>SQ:=Y<{ PE^N惽UJ>:b>Ɣ3>>0>3>0>_>,Ž DxV$=5꽩ѕ߽콌I=]O즽q==M<ߗ:k$܃_>u>+[=dqLQx=B">0d>-ڽߺF>&=৽f4= 3=1=>=<Ԩ9>J@p=PJp<[D>*A>=!B;<F9(,/*:Y)]96d$TD=Y>ZS,>->̕y>7Y=DT>->Q? P b=ٮP=٠>h/>'4>1 >?QY=u>(Y>]=+~#:c=Z> =}> 6E? ?I7?.G?>YH=|>>N?sȑ9*6VdbH;s>%8.f~>V=<1sj?|?=l

  • Nнͬk: ->O?/9H>8gaR=vA ?* ?戟=DǡR>[?鞽JmA=1CS?{?V=ib=Sv0͈ -=<>E۽MĊ2QZ=11*>iY˽`+q3-?耹p=;=EWi4=<͊;: > 5> -!? -d̼W0サ=>!ܾ͝(No#wzLj=N uҀjWb!e3ƽ˕>E -ʞ 8-GRdɼWJ;>:s>>GG>N>>˽=xnj8t>4s`> T=٧=.3ؼ̥=Ņ`|'")ƾ8H%Z={X$>0s58_6;? -O=[O=Y(?(+!>7;=vE=ߎ_~(.=r9-< if=# ->d>!=e̼!=i=~ ',;Sb1BԽ0oݻH`+T>zE =ܫ>q=.Xj:R9>;N0><3#?!>ɰ*ވ=k>;?=Ыf=νyDmDVr>h>PjȾv;,d?={F==Մ@Q="n>.G!8 =Ybw׽ *O>d>0".ɰ>G?z=&=8 cڏ8~,7>?ɢet#=ȵCz=-L>;:> - -<˧=.aA=ǵB~U=ˋt"?ެ>6>O#)>Y->Q0 l'=ȇ' ʞF%>цþ![>6MzAlP>i1i,)> ><+>p1>{>u= -q<'l>K9;#>Td ==lbB>Rd=Pq=m=Qo$񼅽*L>ya=wE=*s>|><#W%>g>=&>M>>~Q>=P꺽=j/;>=/(8PjK==Ƌ>A [=V<`;JST&|-o=anA7ХA#Jb0 P:N>8>; Z>F{u=>5x>ı`==v>$㾁$==]ȿ=ռ@?7ZPxJ 5>XLޓ>zr?J&= =Uѽ4=9f=C:=u>U6>ϗjE;v?uE>2s?w>X>> e_>%g> >8[>T͡I=)=r;=`x>==Q7>.D=U^->;{>P9cg=D@ G<1W==2*(I>{O.3amp=ڵU=2:=\)==5g>ڪH_v8Q 8>Tl=8'ŃCU>X"^=]½0>+<-=2>:b=xF=[@W=' A0<b沐ӭμ?;rpO>&=Ej1=#a= ]{</@ u2=>N*Cy}SܼTx!>R3> ;=:=߅>ӓn*ݺE$#=WVb=KG>I >-==9 $ g޻5q;7.A7f>Z"Hf<=>@>52#?0PL==Í=hQ<8!MS>?M:8RuѼd/\UM>K#B2ā>.P?ˎ{6=;p!#)@< >Pa&>ޥt( =G\־-׽`>]8[{;A<ýQF2Ae= :>&<=|.+<=%>o-*>W3Fp;ٌs `{=Lq9==F<a=M2+?$0>0žו<[.>G==wϾDd:>y-8ǽh=AB۽>S>='=BT=?>@Xĸ򕶽9׾}N>Aپo潀X> /=ʬqyYt>*>UVY>X>*Tp>-=<~ =߫e=x `<"clYGB=E -I>QA眲پg>>/?<x= [>>Oq m<<D>|/oμ*#>r<A |,Έqu?o۴=?K/=<>h+=C)-a߹=Z6_>=p.kЕo=Mj<7 u8=䷾`>0aܹS=RU=6=]?DŽ=}+>Ih> |I> >z=UZԞ$>[a)0ݾ{=ʆYٽ*4=R }g.<϶EK>\bu=䦻+zG~6η<4 BHa ߼oj5=h:~>ƹ8s;(&%Щ=ٳp>E1kp8@=I׀]༻=qmE=>cF==/t<p%]p=Sm}l8(c=Y>Cn=~̼7b< -N}]=6>D$7 qe˻LFۼ<&8mڲ=BXy|=+W>;>蕾="N"=(=HH^ۼAaͽ.c꽗؂>wk#>]=p=2lg>Y>ͺt6<+>¦>}C_}b=BS=h>ur

    a!<@\= ǽ- >::%=AX=E=:G;!X= - -6ije=' 06Z>mꄽZB>O9ݽ ooA>VFO,>jV#?I -<|w=00>@j=֩< -<_ڽߝ>=y<( <ɜʖ -S>Rh\=yEo<0_2j:% H<>\޼/=0=$=/g=6̭C<=?!=RA? ?[9=xibT2$>b=)t=8/>E%=P-h> *ؽ - - >n;[4>=SqyB섾i='%=J޼.H<*<8ts&=eG>k> ߙ'r>E;=ʻp8<\g ->߾Q>d=Z4oWkQ @a:;&@w=[1>N|{qHE>H> ;=AS>d=;q=53<;̷S[#l=#\AܼE~;==[?=>v ->N`;E=0<#=ŗ4ɼB=(~;ܗ=F>Vl: M>'Y];h4l= 97=nSɹU<v.A== !a<&s=y(1󼓾=*=;<>9jcK-=>m?7=f=aI?4= {i=}ض ʗ:e15:t;j]:Vftir=o4!>L4<<>_;z[z>m7p\.ئK:>] 8 >+ƹk8q=JF>>>(\'>ZkL<>:P7I=>gƽ&Ǔ<|U=¨>Cy<#v="=s>>:{>$>\>'d>)v>+K<0u!H=ɪ Fh8=`oԄS}E=y>ŋu?X;%̤GØ<sقm^Sf=FC=q @<ᘽļ,=N=2X7>K=6߃>^>=ħL>+o*NlBMKzRȼE=>ӳ(L> =т2>2>W?;uI;zm!_[=t>S>+۽Lᶻ=U=,= '>C|gs>_z=Q=|\=濽"?`BgRW=a>}9۹7:;O#I$;d9R1 -!>`F~b>">go1=@xP=I9Ғ9ܹw!蹹YDZ8#ֺab;[發Vi=>E}GH|ΧAB>&ufZD4m·w HYY% e:ɢMS,<=hYMO^<9<}7< <k<)< ~= -,=4Ŷ_d˼Rn}+M'vK ?J=̳"B2(o<Җ*z<+>c>XQ#>(>׼A$ ;/+D;+m]8Dz7;:Rqf9~"+>.>4=+T> ~(cvQ; \9(lz-oDf*HE)k7q'kLξe<=^j=^>ǃ>5j;U49O _-'7:}x :<`P-8=G{_[7<rXNMcP88K-F~^>YǸ<4:_9((胑>X/ǽO=9=Urvݽ!6>>*~8빌¹w:8O`mN>=z=s;朼lDgVUUkxv9%94t_::!ҹМ90Δ: -:^w9,`6|>> >2/p>tR~РH[:;؍0gN<"`?> >پ= s9漱Pn^ 8=O=:ծ9i=<:nGYPcL=9IZ0'>)=|X}>?o> 8>==Ps="=n>a>2!>>+7)>tk7=>o<>!׼a>߆>F;1;<0~=N̽5~ʽG=>2wNٽDȽ$LPZDŽ+Oͼ\nj٨s 䥽҃=dC>rW=$lJ=PY b2=G}= Qw&T`͐@O;rrB0u>A36>RA<0W8<U֤$<^0`Z1=xHz==<k=_B=V~O9;(<5rVK=}ŻRTѻymC>[<>y>hH<&A<4p; -;{}<< =><<1=A$d=_ u=>Y>84(=#N[p/4JMױ8]R;I\)x: x˼'Լ dMLC2tgyW6H=+>K> =;x;Ta;rqΏ;<;^:6B\== -׽y - ׼Z!==> Dێ> >b-@=⊼PO>:v%t>Ƚ>>0=TPνA?<U>ʹ1e:R?=wd$¯Mcg;T=1l=>?.ӽju=k=JX9 ڶ9@P 9tz">A =>!֭=֝p>p0Ut&ts>ES>=%!>J)>m':< Q'&=׌>,=,><*y<4!DF>9> -Z=FAMMe>>h>e=PXj'>/~=w= ->l w>z_ŋ6佈+q>g}t'yyq<ܧ>@ -T==< >vM -> -l>Af>c< l_x<=?\Py1>ЀQ<_'8=pNf>F4p>>T=O ? _9M>ԹoT' w锼 =VQ>GK<%>^%Hȃ?^Z8 Y?WGoV| =ĸ6=F6>{:ؽΨY\8}?G= t:i;gB8wW>qO#>,>݀E>7>G=nô>Ȣsͼc<%3l>ht4>ѝh14S,%>QmM>͏=ur)>iBK>> >>D> T>-D>V?>0Q_ч99:q>F=->aZ>y=[>t3>Lо[໸C>>a!6eg=<-5Yd>Y G̕~: Y8>uн`B>ݹ>8=37E/_="/<=\2]>lWC>-½7 ;~B~;$E&>b΅<<*V:8(\= -eƼD>=J ={߽ ;;-=<(=ZH[<H| 9~>KY潐:Z:>p=CQAhɃ< >/8/iK>aT۠ j>K;TDG>(?%Q=/>Yن>;:JavTq.[􂽊kLt>:kf>? I;?>>a>vgoݼ6>md&>h&R(8>==\:;| 9WtG@>71ݽY=]>Bľ1W>t>7=븻k&kLeȺ \|r2㼒C>)8 ~H= C8:RA>R\ oo= =>Z>YAb=2]=]>i>+E(=>帽tϽ23o`Miͺφ9osk>==˰>O<"m>UV̓>yȺ;W8d, kvc80=Ő<6Q>`n!Z,:6>jߏtJ> ɸ+YXH5頯< d]zA\=Q^cff>Ih\(><=;\> -B5<քM<%>S}5?=x=m 9o>FnZ¥/O>>?:K >8^xrb.ؽ[žV6(>=M=8(3>}:d: Șk3G뽤mN%ƼlrpV>縃:I>yx )<ٞ>vk>e#}>yP[`>$EhL>?6x=8>9傾 9MX>0yy?x1F:iz>\l^<]fhg= (h;>h>+ ->4i/L,$9;($9$8ɐY> <1нI)R;ve=PF>>>TyQon>7>'D> -Ovtr=b#>#> K=M>7]>~>J!b=dɾR4;L=ϦX<j=fR>-.>^ֹ;=@,ɶ4H+@`}ͯa:k>*7 9X`-><3i^+8dz=1J*Sh=JY>2c]?>;e}/ ">xht"<=g>=弼r|*&9#<>J*=8ѼL=r>C=c>);p֍̙4 )>A*>u>sx>::94v >>ĕ=$o>,7=:콪k>A#}M0~=/+|a#<ǻ8]>XT<"!=敻|iQ: F{~XmaR>pF.?E:՝<`;"8-;x== ѯ4mX>$rQ>`XTF; >?j.< >?[-]۶^>dlۭN1:Ƌ>5J>Fac>5e>=0= =PCX,u<^=d%hs&HX< Z:Iܸ3<<}w>(l4>])*9Ap8 -x΀>$:4& a@/o'R.>.cV>`V>>:xzM;;V{;_;<$-vH(SyT$<,U'*= N=|m{.ɫ&? -F'>>) yh>>[8"B>;lq[> [J=QbڼD=[+ Q=Q%cd<B=ӼwG=_=V>ˆE>Q<>r>. >t[q>Z >΁=GUu26;s), .(}< >NJ/>.==>y8>>"l>^,=k>}eWM=-<+=ܞ¼lC>RȼnU>&>>xʗ>-I=Oe>,z`>uïLT2tӔf>VX>g=]=T==*˼+7Q*<=ۚ>g\g>v>J.> <Ż] 5(8VbηYSSʹȼ}:"N;n9:9< e:ʻX:K h+x9/;]<&G;`U2;=c?'_0 ->?n>")Ghw#>>` >S->AU> >Ƿ>>n? >>>*HsO<.F>ث>{>L!n>5>{;+F>zC>#s1ֻ=̺y_5>Qƽ[왽>d}:׻o02nz>饑y>Ww'M}6f>ս!=߁=><>bkѽ~L=Y PX>o<'= -u>漏X<<\=A=4=b~>>G&->R==VbAr`>< >̊=y;=Gbl=c:I9p9rNAr776w>y>Z|f;'Ha=0===;=ѡ(<};1~x\ӽ#O<= -sM>Ĥ>񱽑j>?sA=>m`R]W NI.4f>~>ȴ֑>>^y~= >rp>5>WM=y֦DE>_^bL<9]<Ӱ>ǽ>=tr/>S>6>)>>E>ᠹO9Bytȥo9#H9[&9V h=o= >B=2J@ܽb8D9"c&97c9pYù -bfݹнQ7oB=U6H"=@NN/h=j6a>G=>>@>UB>.;ڹn9M拢7bB9(Ʒ8Y8Y8B:8;| ;OH Z9:%xtyw >gM<%B=\fV>H]HK@SX>g.Ɯ_>i2;*0x=" R'>>>5>XT>?6 >o>w>;c>g8; -=}?Q{4>6 ec>="ټ]9R=DD==N; 4aMtD>'>=={>a[/M;9;'>==,f=_S??z>>!@%<> >_w4c>`ܽMiq39ֹ:9) Dalx!Q:᧹;=5;>@ӗ(?@07>W=>- -?bV>c^=;P<=<{>*] :cN>J:= -Yvq3=N>!1< -:;]>ٽ;˼|伺>=`M>S> ~P+*>s]>7="]:NK=!>TA)==;c>>>Sc>D)$=>p<>ٲf;Z/>>H <$V:;Tw<>".DĊ>2=;>}=O>vTE> a->~A>Bɂ=x83Ke@'OGNK2"+DrS8_2=*e=" < XQ<-<ڝ9༏z=>&l>{>%=pZ=>5=r߼tS@}3K6_<Ȧ>,?a>{ >Qg(>HVɼW *2<}L>Ͻّ<]F>$e޼\$=ϭ=8G<ϽK=I=TKȽ= N=7>ɼJ?G=i>R=>| O=`=z[> >p=\>%/>ѻ,.>-[;3J=/=n:l=>->>]==8= > 0>T>`>H""&=];_ Q6>.C#=PlPH={f9JӹlU3C9qLN%588`»ֽ3_nek$}b 뗽=Yɹ%D-g:P4T:WjH<9_CԻ<ۏ'(d>y< )<=z?>v= b=|=};9=t<%>GЏ.ҳ;9L9;C;v:;;P=>ȿ<ج=#= >< -A<.?=>ٵ=^Z 9%J=G>:b>G^K=s0e;FF8#>u='hV=9[, >;=k=e6×8 ^:4^:Ms>}<\=>;= <@p= >">q*>u<@|=S_>Fo>J>}K= oؼ==NLAv+*Z>r{:@0=Y$=r=`>fa;+?ξҰ>>Α½0;c9@=O>/M=ּ='9?_㩾<2<Q%>:"< -D>=5h8}{-*>-:=B8Ja:>^ 7 1S>ǽh8oX9X:D>1<H:u4= >;?% w߷!~=ety=<{>k]>6">22P:60Ot;I>H=C>=}/=g<"<_=h_8~]>D:.H͸Hhp:ӻݺ?溧k+I>f#>zVA?;;b q>ojk=-޶<=8=Ҹe=n><_>>7KKļ ؑ y>Nn8AT58߅J3>jDWP2x >F!u=h3<{׻Y=¼"m;,9(6:ŷ>.D I-d0֐ ~KU;l@=;>An=iB\Ӳ߾<,ܾM;/Mk8=z1"<ù:{2iRZ:W˽kpκ!`y< -zAQnAU,M>pQ={weiH7f6_>Q=HN -(^==bO=fN=OvR>+<`漁|)>r8$՟d.@PuŽ6b;ͧ>>;\2<1L۾vrt罡^@; =(]i>;5 -=258*=9(==b=HQ=<%<f>O=Pss=K*-(*8L;a9pT tB">*= @>hzm=ʂڒA:>K׽Ӿ;=/}<2/=׽L8ǃy[>(1>c8~;k=>(&}Aj9=U(^>]=z0l=0kupʻE߾h=r]7ιF;<=;;s,>,;:Įy+ѹ~B<\>=x=ϡt=.=>I5C=]=Q -5ӹP^= =1< pm2;2sao馜>g'>5N:M`(=6%=D6= =9q67C,zi+yo<=rlCQ8 Bb<#6ԁ:U(>K҆8= -ӝS9~Ey>)=%=fY),@Gn2SG;>_ 48o2:`6=9% 8Zs:y̼*|>T 8#䣣<=yriq@=*5 ->p|PM< >+>/>6lc=RK;VX;Un,B^]1GGm={< [=ފw>ؼSpwқ= e*>8<,=R1}v>oU; d;(> P<L;>w>Nm;;xvC½2l>]V8ME)uvqO됼e'>쓏7@a>=,>">X=G ?=-TJy=y$"ϓQ -90Bi>ǀi*/.zע -O -U,S;@<>=yվ;R;[_#!68<4StؼaR7T-Pf۾`施4Hޡ)}ANv>bgE5 >ǻ7c;>9QȺ:Ké⽊l{<5Q-eںbwJ @!w%CR?^8z=n>X#ս雺Y>H8_KQ@=)=I8=¼ŗi?~iT].6¼fUtqe>U?󺢽i׼Q4<8B>9"`=]>$j\= ː=X`8Kw9-qj8] &RJ>>=qM>C2>;=:O -D;=o>((`s[As9m7=%d̶:= -Շ>]Y>=e)=~gAFlD'=sڈ=V=ɼc(@>눺<懾;phh=>.=k%ƽ?h= ->=!现A/h+b9j;嚊*9:Cc >-=YR:{ǺU=<=z= ǼP=Ti8Y8Vmf;Q<滭ȽkSN ^`>2|BЁ=5v$EfQ`9Af>\]Wr<;8ڹ=;}+h>$| P68]u=B֬b5C;캤b>f>~AY;ӌI="fÜX㗽=~;R>ٸ<[i=b=*>e>4=699k<=lLV>V0Ύ<4窼l>:v[.մ;#=\ =a;=$';f]a=gQg1[>3e&8Ei;p;+uTZ>L=SY>Sj쌻:9&=$9$YьY] >g_>90w_IYg|AA>J8Ľ{9+ּ,>l7~nTS>౉ >Z<-=kv=LTPcMڼ9 fZ6>bhn ,䧼O] ,+C -vM Cm=J>;=SOF<7Qrm, -c=ñ?8׻A4 8h-:bv^aH= -۽ny٤ɽ7M1&t.D92^\S8B==U9s;VF>xnm4v8/.[پJ'R׻L>~YzH:;0>u0XH`Ahi=WO>'==Kc*=w-G=g'i>:ӻصK=f<[Q=`2;1S^8Q=;t= %< ->lֽOG1;w;G-F>`p&0>\9HY<>I';: !>$\82>]$`> -4=:RIa뗼;o6y1=z={<8><{LxdI!R^= >at=?T[e=~qS=>jO=F8(»coI Յ=싩=<U>c=l -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol AFaceDetectDelegate -@required - -/// 活检失败回调 -/// - Parameters: -/// - code: 错误码 -/// - message: 错误描述 -- (void)onFailed:(int)code withMessage:(NSString *)message; - -/// 活检成功回调 -/// - Parameters: -/// - live: 是否活体 -/// - imageData: 采集到的图像 -/// - faceRect: 人像框 -- (void)onCompleted:(BOOL)live withData:(NSData *)imageData rect:(CGRect)faceRect; -@end - -@interface AFaceDetectManager : NSObject -/// 单例 -+ (instancetype)sharedManager; -/// 获取授权文件有效期 -+ (NSString *)getLicExpiration; - -/// 设置代理,用于处理活体检测结果 -/// - Parameter delegate: 代理对象 -- (void)setDelegate:(id )delegate; - -/// 活体检测控制器 -- (UIViewController *)getDetectVC; -@end - -NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/CAAppInfoUtil.h b/Libs/CredibleAuthSDK.framework/Headers/CAAppInfoUtil.h deleted file mode 100644 index bbb2b28..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/CAAppInfoUtil.h +++ /dev/null @@ -1,148 +0,0 @@ -// -// CAAppInfoUtil.h -// Aspects -// -// Created by yixiang on 2018/4/15. -// - -#import -#import -//@import YYModel; -#import "YYModel.h" -//#import -//@protocol YYModel; - -NS_ASSUME_NONNULL_BEGIN -typedef void(^locationBlock)(NSString *_Nonnull, NSString *_Nonnull, NSString *_Nonnull); //使用myBlock1定义参数类型为NSString的block - - -@interface Objc_CertLoginParam : NSObject -/// 真实姓名 -@property (nonatomic, strong) NSString *pin; -/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) -@property (nonatomic, strong) NSString *mobile; -/// 人企关联关系类型代码,可为空,为空则按从高处理 -@property (nonatomic, strong) NSString *relatedType; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, strong) NSString *appToken; -/// 统一社会信用代码(注:纳税人识别号) -@property (nonatomic, strong) NSString *creditCode; -/// 介质类型 0:介质(税务UKey) 1:非介质(App) -@property (nonatomic, strong) NSString *post_type; -/// 人员类型 0:税务人 1:纳税人 -@property (nonatomic, strong) NSString *user_type; -/// 登录类型 0:企业业务 1:代理业务 -@property (nonatomic, strong) NSString *login_type; - -@end - -@interface CAAppInfoUtil : NSObject -//定义属性 -@property (nonatomic, copy) locationBlock locationCallback; - -+ (instancetype)shared; - -+ (NSString *)appName; - -/** - DeviceInfo:获取当前设备的 用户自定义的别名,例如:库克的 iPhone 9 - - @return 当前设备的 用户自定义的别名,例如:库克的 iPhone 9 - */ -+ (NSString *)iphoneName; - -/** - DeviceInfo:获取当前设备的 系统名称,例如:iOS 13.1 - - @return 当前设备的 系统名称,例如:iOS 13.1 - */ -+ (NSString *)iphoneSystemVersion; - -+ (NSString *)bundleIdentifier; - -+ (NSString *)bundleVersion; - -+ (NSString *)bundleShortVersionString; - -+ (NSString *)iphoneType; - -+ (BOOL)isIPhoneXSeries; - -+ (BOOL)isIpad; - -+ (NSString *)locationAuthority; - -+ (NSString *)pushAuthority; - -+ (NSString *)cameraAuthority; - -+ (NSString *)audioAuthority; - -+ (NSString *)photoAuthority; - -+ (NSString *)addressAuthority; - -+ (NSString *)calendarAuthority; - -+ (NSString *)remindAuthority; - -+ (NSString *)bluetoothAuthority; - -/// 设备是否模拟器 -+ (BOOL)isSimulator; - -//获取设备当前网络IP地址 -+ (NSString *)getIPAddress:(BOOL)preferIPv4; - -+ (BOOL)isLocationAuthed; - -+ (void)getCurrentLocation:(locationBlock)callback; - -/*! - * - * @abstract 获取运营商信息 - */ -+ (NSString *)getCarrierInfo; - -/* - * 获取设备物理地址 - */ -+ (nullable NSString *)getMacAddress; - -/* - * 获取IMSI - * IMSI:International Mobile Subscriber Identification Number 国际移动用户识别码 - IMSI分为两部分: - 一部分叫MCC(Mobile Country Code - 移动国家码),MCC的资源由国际电联(ITU)统一分配,唯一识别移动用户所属的国家,MCC共3位,中国地区的MCC为460 - 另一部分叫MNC(Mobile Network Code 移动网络号码),用于识别移动客户所属的移动网络运营商。MNC由二到三个十进制数组成,例如中国移动MNC为00、02、07,中国联通的MNC为01、06、09,中国电信的MNC为03、05、11 - 由1、2两点可知,对于中国地区来说IMSI一般为46000(中国移动)、46001(中国联通)、46003(中国电信)等 - */ - -+ (NSString *)getIMSI; -/* - * MCC(Mobile Country Code 移动国家码) - */ -+ (NSString *)getMCC; - -/* - * MNC(Mobile Network Code 移动网络号码) - */ -+ (NSString *)getMNC; - -+ (NSString *)getCPUType; - -+ (NSString *)DeviceIDFV; - -+ (BOOL)supportTouchID; - -+ (BOOL)supportFaceID; - -typedef void(^ BiometricsAuthBlock)(BOOL success, NSString *errorMsg); - -+ (void)biometricsAuth:(BiometricsAuthBlock)completion; - -+ (void)objc_certLogin:(Objc_CertLoginParam *)param finish:(XTQMDataResponseSuccessBlock)finish fail:(ResponseFailBlock)fail; -@end - -NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/CAErrorCode.h b/Libs/CredibleAuthSDK.framework/Headers/CAErrorCode.h deleted file mode 100644 index 5a5cf39..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/CAErrorCode.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// CAErrorCode.h -// CredibleAuthSDK -// -// Created by PublicJoker on 2021/12/11. -// Copyright © 2021 PublicJoker. All rights reserved. -// - -// CredibleAuthSDK定义的错误码 -#ifndef CAErrorCode_h -#define CAErrorCode_h - -/** - * 成功 - */ -#define CA_CODE_SUCCESS 0 - -/** - * 网络异常 -*/ -#define CA_CODE_NET_ERROR -1000 - -/** - * 网络请求结果异常 - */ -#define CA_CODE_DATA_ERROR -1001 -/** - * 接口已停用 - */ -#define CA_CODE_DEPRECATED_API -1002 -/** - * 参数错误 - */ -#define CA_CODE_PARAM_INVALID -2000 - -/** - * SDK未初始化 - */ -#define CA_CODE_NOT_INITIALIZED -2001 - -/** - * 初始化错误 - */ -#define CA_CODE_INIT_ERROR -2002 - -/** - * 活体检测结果为空 - */ -#define CA_CODE_LIVE_EMPTY -3001 - -/** - * 未找到证书 - */ -#define CA_CODE_CERT_NOT_FOUND -4001 - -/** - * 协签登录失败 - */ -#define CA_CODE_CERT_LOGIN_FAILED -4000 - -#endif /* CAErrorCode_h */ diff --git a/Libs/CredibleAuthSDK.framework/Headers/CAUserDefine.h b/Libs/CredibleAuthSDK.framework/Headers/CAUserDefine.h deleted file mode 100644 index a55f536..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/CAUserDefine.h +++ /dev/null @@ -1,67 +0,0 @@ -// -// CAUserDefine.h -// CredibleAuthSDK -// -// Created by Tony on 2022/8/16. -// Copyright © 2022 PublicJoker. All rights reserved. -// - -#import -//@import XMGSqlite; -#import - -NS_ASSUME_NONNULL_BEGIN - -//recordId uid identity loginTime -@interface CAIndividualLoginRecord : NSObject -/// 三合一(用户名/手机号/身份证号) -@property (nonatomic, copy) NSString *identity;//主键 -/// 自然人网络身份id -@property (nonatomic, copy) NSString *uid; -/// 登录时间 -@property (nonatomic, assign) double loginTime; -/// 数据库记录id -@property (nonatomic, copy) NSString *recordId; - -@end - -//recordId uid identity loginTime enterpriseName creditCode -@interface CAEnterpriseLoginRecord : NSObject -/// 三合一(用户名/手机号/身份证号) -@property (nonatomic, copy) NSString *identity;//主键 -/// 自然人网络身份id -@property (nonatomic, copy) NSString *uid; -/// 企业名称 -@property (nonatomic, copy) NSString *enterpriseName; -/// 社会信用代码/纳税人识别号 -@property (nonatomic, copy) NSString *creditCode; -/// 登录时间 -@property (nonatomic, assign) double loginTime; -/// 数据库记录id -@property (nonatomic, copy) NSString *recordId; - -@end - -// uid mobile password realName -@interface CABiometricAuth : NSObject -/// 手机号 -@property (nonatomic, copy) NSString *mobile; -/// 自然人网络身份id -@property (nonatomic, copy) NSString *uid;//主键 -/// 登录时间 -@property (nonatomic, copy) NSString *password; -/// 自然人姓名 -@property (nonatomic, copy) NSString *realName; - -@end - -// uid bioFlag -@interface CABiometricRemind : NSObject -/// 是否跳过提示 -@property (nonatomic, assign) BOOL bioFlag; -/// 自然人网络身份id -@property (nonatomic, copy) NSString *uid;//主键 - -@end - -NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK-Swift.h b/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK-Swift.h deleted file mode 100644 index c94373d..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK-Swift.h +++ /dev/null @@ -1,884 +0,0 @@ -#if 0 -#elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51) -#ifndef CREDIBLEAUTHSDK_SWIFT_H -#define CREDIBLEAUTHSDK_SWIFT_H -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgcc-compat" - -#if !defined(__has_include) -# define __has_include(x) 0 -#endif -#if !defined(__has_attribute) -# define __has_attribute(x) 0 -#endif -#if !defined(__has_feature) -# define __has_feature(x) 0 -#endif -#if !defined(__has_warning) -# define __has_warning(x) 0 -#endif - -#if __has_include() -# include -#endif - -#pragma clang diagnostic ignored "-Wduplicate-method-match" -#pragma clang diagnostic ignored "-Wauto-import" -#if defined(__OBJC__) -#include -#endif -#if defined(__cplusplus) -#include -#include -#include -#else -#include -#include -#include -#endif - -#if !defined(SWIFT_TYPEDEFS) -# define SWIFT_TYPEDEFS 1 -# if __has_include() -# include -# elif !defined(__cplusplus) -typedef uint_least16_t char16_t; -typedef uint_least32_t char32_t; -# endif -typedef float swift_float2 __attribute__((__ext_vector_type__(2))); -typedef float swift_float3 __attribute__((__ext_vector_type__(3))); -typedef float swift_float4 __attribute__((__ext_vector_type__(4))); -typedef double swift_double2 __attribute__((__ext_vector_type__(2))); -typedef double swift_double3 __attribute__((__ext_vector_type__(3))); -typedef double swift_double4 __attribute__((__ext_vector_type__(4))); -typedef int swift_int2 __attribute__((__ext_vector_type__(2))); -typedef int swift_int3 __attribute__((__ext_vector_type__(3))); -typedef int swift_int4 __attribute__((__ext_vector_type__(4))); -typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); -typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); -typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); -#endif - -#if !defined(SWIFT_PASTE) -# define SWIFT_PASTE_HELPER(x, y) x##y -# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) -#endif -#if !defined(SWIFT_METATYPE) -# define SWIFT_METATYPE(X) Class -#endif -#if !defined(SWIFT_CLASS_PROPERTY) -# if __has_feature(objc_class_property) -# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ -# else -# define SWIFT_CLASS_PROPERTY(...) -# endif -#endif - -#if __has_attribute(objc_runtime_name) -# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) -#else -# define SWIFT_RUNTIME_NAME(X) -#endif -#if __has_attribute(swift_name) -# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) -#else -# define SWIFT_COMPILE_NAME(X) -#endif -#if __has_attribute(objc_method_family) -# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) -#else -# define SWIFT_METHOD_FAMILY(X) -#endif -#if __has_attribute(noescape) -# define SWIFT_NOESCAPE __attribute__((noescape)) -#else -# define SWIFT_NOESCAPE -#endif -#if __has_attribute(ns_consumed) -# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) -#else -# define SWIFT_RELEASES_ARGUMENT -#endif -#if __has_attribute(warn_unused_result) -# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) -#else -# define SWIFT_WARN_UNUSED_RESULT -#endif -#if __has_attribute(noreturn) -# define SWIFT_NORETURN __attribute__((noreturn)) -#else -# define SWIFT_NORETURN -#endif -#if !defined(SWIFT_CLASS_EXTRA) -# define SWIFT_CLASS_EXTRA -#endif -#if !defined(SWIFT_PROTOCOL_EXTRA) -# define SWIFT_PROTOCOL_EXTRA -#endif -#if !defined(SWIFT_ENUM_EXTRA) -# define SWIFT_ENUM_EXTRA -#endif -#if !defined(SWIFT_CLASS) -# if __has_attribute(objc_subclassing_restricted) -# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA -# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# else -# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# endif -#endif -#if !defined(SWIFT_RESILIENT_CLASS) -# if __has_attribute(objc_class_stub) -# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) -# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) -# else -# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) -# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) -# endif -#endif - -#if !defined(SWIFT_PROTOCOL) -# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA -# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA -#endif - -#if !defined(SWIFT_EXTENSION) -# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) -#endif - -#if !defined(OBJC_DESIGNATED_INITIALIZER) -# if __has_attribute(objc_designated_initializer) -# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) -# else -# define OBJC_DESIGNATED_INITIALIZER -# endif -#endif -#if !defined(SWIFT_ENUM_ATTR) -# if defined(__has_attribute) && __has_attribute(enum_extensibility) -# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) -# else -# define SWIFT_ENUM_ATTR(_extensibility) -# endif -#endif -#if !defined(SWIFT_ENUM) -# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type -# if __has_feature(generalized_swift_name) -# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type -# else -# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) -# endif -#endif -#if !defined(SWIFT_UNAVAILABLE) -# define SWIFT_UNAVAILABLE __attribute__((unavailable)) -#endif -#if !defined(SWIFT_UNAVAILABLE_MSG) -# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) -#endif -#if !defined(SWIFT_AVAILABILITY) -# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) -#endif -#if !defined(SWIFT_WEAK_IMPORT) -# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) -#endif -#if !defined(SWIFT_DEPRECATED) -# define SWIFT_DEPRECATED __attribute__((deprecated)) -#endif -#if !defined(SWIFT_DEPRECATED_MSG) -# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) -#endif -#if __has_feature(attribute_diagnose_if_objc) -# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) -#else -# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) -#endif -#if defined(__OBJC__) -#if !defined(IBSegueAction) -# define IBSegueAction -#endif -#endif -#if !defined(SWIFT_EXTERN) -# if defined(__cplusplus) -# define SWIFT_EXTERN extern "C" -# else -# define SWIFT_EXTERN extern -# endif -#endif -#if !defined(SWIFT_CALL) -# define SWIFT_CALL __attribute__((swiftcall)) -#endif -#if defined(__cplusplus) -#if !defined(SWIFT_NOEXCEPT) -# define SWIFT_NOEXCEPT noexcept -#endif -#else -#if !defined(SWIFT_NOEXCEPT) -# define SWIFT_NOEXCEPT -#endif -#endif -#if defined(__cplusplus) -#if !defined(SWIFT_CXX_INT_DEFINED) -#define SWIFT_CXX_INT_DEFINED -namespace swift { -using Int = ptrdiff_t; -using UInt = size_t; -} -#endif -#endif -#if defined(__OBJC__) -#if __has_feature(modules) -#if __has_warning("-Watimport-in-framework-header") -#pragma clang diagnostic ignored "-Watimport-in-framework-header" -#endif -@import CoreFoundation; -@import Foundation; -@import ObjectiveC; -#endif - -#import - -#endif -#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" -#pragma clang diagnostic ignored "-Wduplicate-method-arg" -#if __has_warning("-Wpragma-clang-attribute") -# pragma clang diagnostic ignored "-Wpragma-clang-attribute" -#endif -#pragma clang diagnostic ignored "-Wunknown-pragmas" -#pragma clang diagnostic ignored "-Wnullability" -#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" - -#if __has_attribute(external_source_symbol) -# pragma push_macro("any") -# undef any -# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="CredibleAuthSDK",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) -# pragma pop_macro("any") -#endif - -#if defined(__OBJC__) -@class NSString; - -/// 代理机构业务人脸认证参数类 -SWIFT_CLASS("_TtC15CredibleAuthSDK16AgencyLoginParam") -@interface AgencyLoginParam : NSObject -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 姓名 -@property (nonatomic, copy) NSString * _Nonnull full_name; -/// 国籍 例如:156-中国 -@property (nonatomic, copy) NSString * _Nonnull nationality; -/// 身份证件类型 示例:201-居民身份证 -@property (nonatomic, copy) NSString * _Nonnull card_type; -/// 身份证件号码 -@property (nonatomic, copy) NSString * _Nonnull id_card; -/// 代理机构社会信用代码/纳税人识别号 -@property (nonatomic, copy) NSString * _Nonnull agencyCreditCode; -/// 社会信用代码/纳税人识别号 -@property (nonatomic, copy) NSString * _Nonnull creditCode; -/// 人企关联关系类型代码 -@property (nonatomic, copy) NSString * _Nonnull relatedType; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -/// 二次认证参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK27AppSecondCertificationParam") -@interface AppSecondCertificationParam : NSObject -/// 用户令牌 -@property (nonatomic, copy) NSString * _Nonnull access_token; -/// 应用令牌 -@property (nonatomic, copy) NSString * _Nonnull appToken; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -SWIFT_CLASS("_TtC15CredibleAuthSDK10CAResponse") -@interface CAResponse : NSObject -@property (nonatomic) NSInteger code; -@property (nonatomic, copy) NSString * _Nonnull msg; -@property (nonatomic, copy) NSDictionary * _Nonnull data; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -@end - - -/// 企业业务协同签名认证参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK14CertLoginParam") -@interface CertLoginParam : NSObject -/// 真实姓名 -@property (nonatomic, copy) NSString * _Nonnull pin; -/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) -@property (nonatomic, copy) NSString * _Nonnull mobile; -/// 人企关联关系类型代码,可为空,为空则按从高处理 -@property (nonatomic, copy) NSString * _Nonnull relatedType; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 统一社会信用代码(注:纳税人识别号) -@property (nonatomic, copy) NSString * _Nonnull creditCode; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - -@class RealPersonCheckParam; -@class SecondCertificationParam; -@class UseQrCodeLoginParam; -@class EnterpriseLoginParam; -@class NaturalLoginParam; -@class DeviceParam; -@class DeviceInfoResult; -@class SDKVersionInfo; -@class RegisterParam; -@class UseQrCodeSecondCertificationParam; -@class ElevateParam; -@class EnterpriseIdentityLoginParam; -@class NaturalIdentityLoginParam; -@class VerifyWithPictureTokenParam; -@class H5LoginParam; -@class H5SetParam; -@class VerifyWithPictureRequestParam; -@class GetApplicationTokenParam; - -SWIFT_CLASS("_TtC15CredibleAuthSDK15CredibleAuthSDK") -@interface CredibleAuthSDK : NSObject -@property (nonatomic, copy) NSString * _Nullable appCode; -+ (CredibleAuthSDK * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT; -/// 4.2 初始化SDK -/// \param encryptKey 加密密钥,由App向可信后台申请 -/// -/// \param signKey 签名密钥,由App向可信后台申请 -/// -/// \param requestURI 可信后台环境, 格式为: “地区.环境类型” 如: 北京预生产对应requestURI为 beijing.pre -/// (dev:公有云 pre:预生产 pro:生产 test:测试) 如参数不合法, 使用默认值quanguo.dev -/// -+ (void)registerAppWithEncryptKey:(NSString * _Nonnull)encryptKey signKey:(NSString * _Nonnull)signKey requestURI:(NSString * _Nonnull)requestURI; -/// 4.3 实人认证(实名采集场景) -/// \param param 实人认证参数, 详见RealPersonCheckParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)realPersonWithParam:(RealPersonCheckParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -/// 4.4 二次认证(停用) -/// \param param 二次认证参数, 详见SecondCertificationParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)secondCertificationWithParam:(SecondCertificationParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(useQrCodeSecondCertification/appSecondCertification )实现业务功能"); -/// 4.5 扫码登录消费二维码接口 -/// \param param 消费二维码参数, 详见UseQrCodeLoginParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)useQRCodeLoginWithParam:(UseQrCodeLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -/// 4.6 企业业务人脸认证接口(停用) -/// \param param -/// -/// \param finishBlock -/// -+ (void)enterpriseLoginWithParam:(EnterpriseLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); -/// 4.7 自然人业务人脸认证接口(停用) -/// \param param -/// -/// \param finishBlock -/// -+ (void)naturalLoginWithParam:(NaturalLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); -/// 4.8 代理机构业务人脸认证接口(停用) -/// \param param -/// -/// \param finishBlock -/// -+ (void)agencyLoginWithParam:(AgencyLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); -/// 4.9 环境信息获取接口(停用) -/// \param param 获取环境信息参数, 详见DeviceParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)deviceWithParam:(DeviceParam * _Nonnull)param block:(void (^ _Nonnull)(DeviceInfoResult * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(deviceEncWithParam)实现业务功能"); -+ (void)sdkVersionWithBlock:(void (^ _Nonnull)(SDKVersionInfo * _Nonnull))finishBlock; -/// 4.10 自然人身份注册接口(自然人实名)(停用) -/// \param param 自然人身份注册参数, 详见RegisterParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)registerWithParam:(RegisterParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); -/// 4.11 扫码实人认证消费二维码接口 -/// 可信 WEB 端的一些操作,例如二次认证、注册、找回密码、修改密码、修改手机号等,会弹出二维码,需要进行扫码认证,扫描二维码触发调用此消费接口。 -/// \param param 扫码二次认证接口请求参数, 详见UseQrCodeParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)useQRCodeSecondCertificationWithParam:(UseQrCodeSecondCertificationParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -/// 4.12 实名等级提升(停用) -/// 办理涉税业务过程中,需要实名等级提升时,通过税务端 APP 扫描实名等级提升二维码,触发调用此接口,唤起活体检测并通过可信后端完成实人认证,返回认证结果。 -/// \param param 实名等级提升参数, 详见ElevateParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)elevateWithParam:(ElevateParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(appSecondCertification)实现业务功能"); -/// 4.13 企业业务协同签名认证(停用) -/// \param param 企业业务协同签名认证参数, 详见CertLoginParam类 -/// -/// \param finishBlock 请求完成回调 -/// @objc(certLogin: finishBlock:)//OC方法重命名 -/// -+ (void)certLoginWithParam:(CertLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); -+ (void)h5CertLoginWithParam:(CertLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -/// 4.14 企业业务刷脸登录接口(停用) -+ (void)enterpriseIdentityLoginWithParam:(EnterpriseIdentityLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); -/// 4.15 自然人业务人脸认证接口(停用) -+ (void)naturalIdentityLoginWithParam:(NaturalIdentityLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); -/// 4.16 异步实人认证(停用) -+ (void)verifyWithPictureTokenParam:(VerifyWithPictureTokenParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -/// 4.17 APP 集成可信 H5 登录接口 -/// 税务 APP 点击登录按钮时,调用此接口,唤起可信 H5 登录页面,可信 H5 页面提供 -/// 企业业务登录、自然人业务登录、自然人注册、自然人找回密码、自然人找回手机号等功能。 -/// 用户完成登录,获得用户令牌信息。 -+ (void)h5Login:(H5LoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -/// 4.18 APP 集成可信指纹/面容设置接口 -/// 税务 APP 登录后,在设置中可以通过指纹/面容设置入口,调用此接口,唤起可信 H5 -/// 页面,可信 H5 页面提供指纹/面容设置开启与关闭,以及取消不再提醒是否开启指纹的设置。 -+ (void)h5Set:(H5SetParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -/// 4.19 环境信息获取(新)接口 -/// \param param 获取环境信息参数, 详见DeviceParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)deviceEncWithParam:(DeviceParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -/// 4.20 APP 二次认证 -/// 在 APP 端进行业务事项办理时,如果需要满足登录等级达到 4 级才可以办理时,就可以由 APP -/// 发起调用此接口,触发活体检测,完成登录等级与实名等级的提升,接口返回成功时,APP后台 -/// 应该重新调用 userinfo 接口重新获取会话信息,将更新登录等级与实名等级 -/// \param param 二次认证参数, 详见AppSecondCertificationParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)appSecondCertificationWithParam:(AppSecondCertificationParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -/// 4.21 实人认证申请 -/// 通过税务 APP 进行实人认证功能时,触发调用此接口 -/// 唤起活体检测并通过可信后端完成实人认证,返回用于查询结果的唯一标识。 -/// 通过唯一标识,由后台服务调用可信接口,查询实人认证的结果。 -/// \param param 二次认证参数, 详见VerifyWithPictureRequestParam类 -/// -/// \param finishBlock 请求完成回调 -/// -+ (void)verifyWithPictureRequestParam:(VerifyWithPictureRequestParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -+ (void)getApplicationTokenWithParam:(GetApplicationTokenParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -@end - - -@class RegisterCertParam; - -@interface CredibleAuthSDK (SWIFT_EXTENSION(CredibleAuthSDK)) -+ (void)registerCert:(RegisterCertParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; -@end - -@class NSData; - -@interface CredibleAuthSDK (SWIFT_EXTENSION(CredibleAuthSDK)) -- (void)onFailed:(int32_t)code withMessage:(NSString * _Nonnull)message; -- (void)onCompleted:(BOOL)live withData:(NSData * _Nonnull)imageData rect:(CGRect)faceRect; -@end - - - -SWIFT_CLASS("_TtC15CredibleAuthSDK16DeviceInfoResult") -@interface DeviceInfoResult : NSObject -/// 经度(需要定位权限) -@property (nonatomic, copy) NSString * _Nonnull longitude; -/// 纬度 -@property (nonatomic, copy) NSString * _Nonnull latitude; -/// 反地理编码信息 -@property (nonatomic, copy) NSString * _Nonnull reverseGeocode; -/// 手机品牌 -@property (nonatomic, copy) NSString * _Nonnull deviceBrand; -/// APP名称 -@property (nonatomic, copy) NSString * _Nonnull srcAppName; -/// APP版本 -@property (nonatomic, copy) NSString * _Nonnull srcAppVersion; -/// IP -@property (nonatomic, copy) NSString * _Nonnull srcIp; -/// MAC地址 需要本地网络权限, 否则返回 @“02:00:00:00:00:00” -@property (nonatomic, copy) NSString * _Nonnull deviceIdent; -/// 操作系统名称 -@property (nonatomic, copy) NSString * _Nonnull deviceSystem; -/// 设备名称 -@property (nonatomic, copy) NSString * _Nonnull deviceName; -/// 设备型号 -@property (nonatomic, copy) NSString * _Nonnull deviceModel; -/// 设备识别号 -@property (nonatomic, copy) NSString * _Nonnull deviceIdentyNo; -/// 设备制造商 -@property (nonatomic, copy) NSString * _Nonnull deviceManufacturer; -/// 系统版本 -@property (nonatomic, copy) NSString * _Nonnull systemVersion; -/// 运营商名称 -@property (nonatomic, copy) NSString * _Nonnull isp; -/// 移动国家码 -@property (nonatomic, copy) NSString * _Nonnull countryCode; -/// 移动网络码 00-中国移动TD 01-中国联通 02-中国移动GSM 03-中国电信CDMA -@property (nonatomic, copy) NSString * _Nonnull networkCode; -/// CPU型号 -@property (nonatomic, copy) NSString * _Nonnull cpuModel; -/// SDK版本信息 -@property (nonatomic, readonly, strong) SDKVersionInfo * _Nonnull sdkVersionInfo; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -@end - - -/// 获取设备信息参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK11DeviceParam") -@interface DeviceParam : NSObject -/// 是否已获取定位权限 -@property (nonatomic) BOOL locationAuthed; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -@end - - -/// 实名等级提升参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK12ElevateParam") -@interface ElevateParam : NSObject -/// 真实姓名 -@property (nonatomic, copy) NSString * _Nonnull full_name; -/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) -@property (nonatomic, copy) NSString * _Nonnull card_type; -/// 国籍(详见附件国家代码表 示例:156-中国) -@property (nonatomic, copy) NSString * _Nonnull nationality; -/// 身份证件号码 -@property (nonatomic, copy) NSString * _Nonnull id_card; -/// 二维码编号 -@property (nonatomic, copy) NSString * _Nonnull qrcode_id; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 统一社会信用代码(注:纳税人识别号) -@property (nonatomic, copy) NSString * _Nonnull creditCode; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -/// 企业业务刷脸登录参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK28EnterpriseIdentityLoginParam") -@interface EnterpriseIdentityLoginParam : NSObject -/// 用户名/手机号/身份证号 -@property (nonatomic, copy) NSString * _Nonnull identity; -/// 人企关联关系类型代码,可为空,为空则按从高处理 -@property (nonatomic, copy) NSString * _Nonnull relatedType; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 统一社会信用代码(注:纳税人识别号) -@property (nonatomic, copy) NSString * _Nonnull creditCode; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -/// 企业业务人脸认证参数类 -SWIFT_CLASS("_TtC15CredibleAuthSDK20EnterpriseLoginParam") -@interface EnterpriseLoginParam : NSObject -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 姓名 -@property (nonatomic, copy) NSString * _Nonnull full_name; -/// 国籍 例如:156-中国 -@property (nonatomic, copy) NSString * _Nonnull nationality; -/// 身份证件类型 示例:201-居民身份证 -@property (nonatomic, copy) NSString * _Nonnull card_type; -/// 身份证件号码 -@property (nonatomic, copy) NSString * _Nonnull id_card; -/// 社会信用代码/纳税人识别号 -@property (nonatomic, copy) NSString * _Nonnull creditCode; -/// 人企关联关系类型代码 -@property (nonatomic, copy) NSString * _Nonnull relatedType; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -SWIFT_CLASS("_TtC15CredibleAuthSDK24GetApplicationTokenParam") -@interface GetApplicationTokenParam : NSObject -/// 用户令牌 -@property (nonatomic, copy) NSString * _Nonnull client_id; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -@end - - -/// H5登录参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK12H5LoginParam") -@interface H5LoginParam : NSObject -/// 应用令牌 -@property (nonatomic, copy) NSString * _Nonnull appToken; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -@end - - -/// H5设置快捷登录参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK10H5SetParam") -@interface H5SetParam : NSObject -/// 应用令牌 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 用户令牌 -@property (nonatomic, copy) NSString * _Nonnull access_token; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -@end - - -/// 个人业务刷脸登录参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK25NaturalIdentityLoginParam") -@interface NaturalIdentityLoginParam : NSObject -/// 用户名/手机号/身份证号 -@property (nonatomic, copy) NSString * _Nonnull identity; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -/// 自然人业务人脸认证参数类 -SWIFT_CLASS("_TtC15CredibleAuthSDK17NaturalLoginParam") -@interface NaturalLoginParam : NSObject -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 姓名 -@property (nonatomic, copy) NSString * _Nonnull full_name; -/// 国籍 例如:156-中国 -@property (nonatomic, copy) NSString * _Nonnull nationality; -/// 身份证件类型 示例:201-居民身份证 -@property (nonatomic, copy) NSString * _Nonnull card_type; -/// 身份证件号码 -@property (nonatomic, copy) NSString * _Nonnull id_card; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -/// 实名认证参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK20RealPersonCheckParam") -@interface RealPersonCheckParam : NSObject -/// 真实姓名 -@property (nonatomic, copy) NSString * _Nonnull fullName; -/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) -@property (nonatomic, copy) NSString * _Nonnull idCardType; -/// 国籍(详见附件国家代码表 示例:156-中国) -@property (nonatomic, copy) NSString * _Nonnull nationality; -/// 身份证件号码 -@property (nonatomic, copy) NSString * _Nonnull idCard; -/// 身份证有效期起(yyyyMMdd) -@property (nonatomic, copy) NSString * _Nonnull effDate; -/// 身份证号有效期止(yyyyMMdd) -@property (nonatomic, copy) NSString * _Nonnull expDate; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -SWIFT_CLASS("_TtC15CredibleAuthSDK17RegisterCertParam") -@interface RegisterCertParam : NSObject -/// 应用令牌 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 用户类型 -@property (nonatomic, copy) NSString * _Nonnull userType; -/// 用户名称 -@property (nonatomic, copy) NSString * _Nonnull userName; -/// 纳税人名称 -@property (nonatomic, copy) NSString * _Nonnull taxpayerName; -@property (nonatomic, copy) NSString * _Nonnull taxpayerCode; -@property (nonatomic, copy) NSString * _Nonnull taxBureauName; -@property (nonatomic, copy) NSString * _Nonnull taxBureauCode; -@property (nonatomic, copy) NSString * _Nonnull mobilePhoneNumber; -@property (nonatomic, copy) NSString * _Nonnull password; -@property (nonatomic, copy) NSString * _Nullable identifyCard; -@property (nonatomic, copy) NSString * _Nullable email; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -@end - - -/// 自然人注册参数类 -SWIFT_CLASS("_TtC15CredibleAuthSDK13RegisterParam") -@interface RegisterParam : NSObject -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 姓名 -@property (nonatomic, copy) NSString * _Nonnull fullName; -/// 性别 0.女 1.男 -@property (nonatomic, copy) NSString * _Nonnull gender; -/// 国籍 例如:156-中国 -@property (nonatomic, copy) NSString * _Nonnull nationality; -/// 身份证件类型 示例:201-居民身份证 -@property (nonatomic, copy) NSString * _Nonnull idCardType; -/// 身份证件号码 -@property (nonatomic, copy) NSString * _Nonnull idCard; -/// 联系电话 -@property (nonatomic, copy) NSString * _Nonnull mobile; -/// 短信验证码编号 -@property (nonatomic, copy) NSString * _Nonnull smscode_id; -/// 短信验证码内容 -@property (nonatomic, copy) NSString * _Nonnull smscode; -/// 税务机关代码(固定11位) -@property (nonatomic, copy) NSString * _Nonnull taxauthorityCode; -/// 纳税所在地 参考附录:地区编码字典 -@property (nonatomic, copy) NSString * _Nonnull taxPlace; -/// 出生日期, 格式为yyyyMMdd -@property (nonatomic, copy) NSString * _Nullable birthdate; -/// 证件有效期起始时间, 格式为yyyyMMdd -@property (nonatomic, copy) NSString * _Nonnull startDate; -/// 证件有效期终止时间, 格式为yyyyMMdd -@property (nonatomic, copy) NSString * _Nullable endDate; -/// 住址 -@property (nonatomic, copy) NSString * _Nullable address; -/// 电子邮箱 -@property (nonatomic, copy) NSString * _Nullable email; -/// 身份管理协议, 该值为协议版本号 数字格式,例如:1.0 -@property (nonatomic, copy) NSString * _Nonnull agreementA; -/// 个人信息保护告知同意书, 该值为协议版本号 数字格式,例如:1.0 -@property (nonatomic, copy) NSString * _Nonnull agreementB; -/// 人脸识别协议, 该值为协议版本号 数字格式,例如:1.0 -@property (nonatomic, copy) NSString * _Nonnull agreementC; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -SWIFT_CLASS("_TtC15CredibleAuthSDK14SDKVersionInfo") -@interface SDKVersionInfo : NSObject -/// 主版本号 -@property (nonatomic, copy) NSString * _Nonnull majorVersion; -/// build版本号 -@property (nonatomic, copy) NSString * _Nonnull buildVersion; -/// 服务器地址 -@property (nonatomic, copy) NSString * _Nonnull serverDomain; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -@end - - -/// 二次认证参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK24SecondCertificationParam") -@interface SecondCertificationParam : NSObject -/// 真实姓名 -@property (nonatomic, copy) NSString * _Nonnull full_name; -/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) -@property (nonatomic, copy) NSString * _Nonnull card_type; -/// 国籍(详见附件国家代码表 示例:156-中国) -@property (nonatomic, copy) NSString * _Nonnull nationality; -/// 身份证件号码 -@property (nonatomic, copy) NSString * _Nonnull id_card; -/// 二维码编号 -@property (nonatomic, copy) NSString * _Nonnull qrcode_id; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 统一社会信用代码(注:纳税人识别号) -@property (nonatomic, copy) NSString * _Nonnull creditCode; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - - -/// 消费二维码接口请求参数对象 -SWIFT_CLASS("_TtC15CredibleAuthSDK19UseQrCodeLoginParam") -@interface UseQrCodeLoginParam : NSObject -/// 用户令牌 -@property (nonatomic, copy) NSString * _Nonnull access_token; -/// 二维码编号 -@property (nonatomic, copy) NSString * _Nonnull qrcode_id; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -/// 二维码消费参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK14UseQrCodeParam") -@interface UseQrCodeParam : NSObject -/// 身份证号 -@property (nonatomic, copy) NSString * _Nonnull id_card; -/// 人企关联关系类型代码 -@property (nonatomic, copy) NSString * _Nonnull relatedType; -/// 真实姓名 -@property (nonatomic, copy) NSString * _Nonnull full_name; -/// 二维码编号 -@property (nonatomic, copy) NSString * _Nonnull qrcode_id; -/// 证件类型(如: 201-身份证) -@property (nonatomic, copy) NSString * _Nonnull card_type; -/// 统一社会信用代码(注:纳税人识别号) -@property (nonatomic, copy) NSString * _Nonnull creditCode; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 国籍(详见附件国家代码表 示例:156-中国) -@property (nonatomic, copy) NSString * _Nonnull nationality; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -/// 二次认证参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK33UseQrCodeSecondCertificationParam") -@interface UseQrCodeSecondCertificationParam : NSObject -/// 二维码编号 -@property (nonatomic, copy) NSString * _Nonnull qrcode_id; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -/// 实人认证申请参数 -SWIFT_CLASS("_TtC15CredibleAuthSDK29VerifyWithPictureRequestParam") -@interface VerifyWithPictureRequestParam : NSObject -/// 应用令牌 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 证件号码 -@property (nonatomic, copy) NSString * _Nonnull idCard; -/// 证件类型 -@property (nonatomic, copy) NSString * _Nonnull idCardType; -/// 真实姓名 -@property (nonatomic, copy) NSString * _Nonnull fullName; -/// 国籍 -@property (nonatomic, copy) NSString * _Nonnull nationality; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - - -/// 企业业务人脸认证参数类 -SWIFT_CLASS("_TtC15CredibleAuthSDK27VerifyWithPictureTokenParam") -@interface VerifyWithPictureTokenParam : NSObject -/// 真实姓名 -@property (nonatomic, copy) NSString * _Nonnull fullName; -/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) -@property (nonatomic, copy) NSString * _Nonnull idCardType; -/// 国籍(详见附件国家代码表 示例:156-中国) -@property (nonatomic, copy) NSString * _Nonnull nationality; -/// 身份证件号码 -@property (nonatomic, copy) NSString * _Nonnull idCard; -/// 身份证有效期起(yyyyMMdd) -@property (nonatomic, copy) NSString * _Nonnull effDate; -/// 身份证号有效期止(yyyyMMdd) -@property (nonatomic, copy) NSString * _Nonnull expDate; -/// 身份凭据,通过token获取接口生成。 -@property (nonatomic, copy) NSString * _Nonnull appToken; -/// 核验唯一标识(令牌) -@property (nonatomic, copy) NSString * _Nonnull verifyToken; -- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; -+ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; -@end - -#endif -#if defined(__cplusplus) -#endif -#if __has_attribute(external_source_symbol) -# pragma clang attribute pop -#endif -#pragma clang diagnostic pop -#endif - -#else -#error unsupported Swift architecture -#endif diff --git a/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK.h b/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK.h deleted file mode 100644 index 7131f6e..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// depend_sdk_ios.h -// depend-sdk-ios -// -// Created by PulicJoker on 2021/12/8. -// - -#import - -//! Project version number for depend_sdk_ios. -FOUNDATION_EXPORT double depend_sdk_iosVersionNumber; - -//! Project version string for depend_sdk_ios. -FOUNDATION_EXPORT const unsigned char depend_sdk_iosVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - -#import //错误码定义 - -// 外部依赖 -#import //活体检测 -#import //协同签名 - -//内部使用 -#import -#import -#import -#import - -#import -#import -#import - - -#import -#import diff --git a/Libs/CredibleAuthSDK.framework/Headers/NSObject+YYModel.h b/Libs/CredibleAuthSDK.framework/Headers/NSObject+YYModel.h deleted file mode 100644 index 82032ec..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/NSObject+YYModel.h +++ /dev/null @@ -1,430 +0,0 @@ -// -// NSObject+YYModel.h -// YYModel -// -// Created by ibireme on 15/5/10. -// Copyright (c) 2015 ibireme. -// -// This source code is licensed under the MIT-style license found in the -// LICENSE file in the root directory of this source tree. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -/** - Provide some data-model method: - - * Convert json to any object, or convert any object to json. - * Set object properties with a key-value dictionary (like KVC). - * Implementations of `NSCoding`, `NSCopying`, `-hash` and `-isEqual:`. - - See `YYModel` protocol for custom methods. - - - Sample Code: - - ********************** json convertor ********************* - @interface YYAuthor : NSObject - @property (nonatomic, strong) NSString *name; - @property (nonatomic, assign) NSDate *birthday; - @end - @implementation YYAuthor - @end - - @interface YYBook : NSObject - @property (nonatomic, copy) NSString *name; - @property (nonatomic, assign) NSUInteger pages; - @property (nonatomic, strong) YYAuthor *author; - @end - @implementation YYBook - @end - - int main() { - // create model from json - YYBook *book = [YYBook yy_modelWithJSON:@"{\"name\": \"Harry Potter\", \"pages\": 256, \"author\": {\"name\": \"J.K.Rowling\", \"birthday\": \"1965-07-31\" }}"]; - - // convert model to json - NSString *json = [book yy_modelToJSONString]; - // {"author":{"name":"J.K.Rowling","birthday":"1965-07-31T00:00:00+0000"},"name":"Harry Potter","pages":256} - } - - ********************** Coding/Copying/hash/equal ********************* - @interface YYShadow :NSObject - @property (nonatomic, copy) NSString *name; - @property (nonatomic, assign) CGSize size; - @end - - @implementation YYShadow - - (void)encodeWithCoder:(NSCoder *)aCoder { [self yy_modelEncodeWithCoder:aCoder]; } - - (id)initWithCoder:(NSCoder *)aDecoder { self = [super init]; return [self yy_modelInitWithCoder:aDecoder]; } - - (id)copyWithZone:(NSZone *)zone { return [self yy_modelCopy]; } - - (NSUInteger)hash { return [self yy_modelHash]; } - - (BOOL)isEqual:(id)object { return [self yy_modelIsEqual:object]; } - @end - - */ -@interface NSObject (YYModel) - -/** - Creates and returns a new instance of the receiver from a json. - This method is thread-safe. - - @param json A json object in `NSDictionary`, `NSString` or `NSData`. - - @return A new instance created from the json, or nil if an error occurs. - */ -+ (nullable instancetype)yy_modelWithJSON:(id)json; - -/** - Creates and returns a new instance of the receiver from a key-value dictionary. - This method is thread-safe. - - @param dictionary A key-value dictionary mapped to the instance's properties. - Any invalid key-value pair in dictionary will be ignored. - - @return A new instance created from the dictionary, or nil if an error occurs. - - @discussion The key in `dictionary` will mapped to the reciever's property name, - and the value will set to the property. If the value's type does not match the - property, this method will try to convert the value based on these rules: - - `NSString` or `NSNumber` -> c number, such as BOOL, int, long, float, NSUInteger... - `NSString` -> NSDate, parsed with format "yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd HH:mm:ss" or "yyyy-MM-dd". - `NSString` -> NSURL. - `NSValue` -> struct or union, such as CGRect, CGSize, ... - `NSString` -> SEL, Class. - */ -+ (nullable instancetype)yy_modelWithDictionary:(NSDictionary *)dictionary; - -/** - Set the receiver's properties with a json object. - - @discussion Any invalid data in json will be ignored. - - @param json A json object of `NSDictionary`, `NSString` or `NSData`, mapped to the - receiver's properties. - - @return Whether succeed. - */ -- (BOOL)yy_modelSetWithJSON:(id)json; - -/** - Set the receiver's properties with a key-value dictionary. - - @param dic A key-value dictionary mapped to the receiver's properties. - Any invalid key-value pair in dictionary will be ignored. - - @discussion The key in `dictionary` will mapped to the reciever's property name, - and the value will set to the property. If the value's type doesn't match the - property, this method will try to convert the value based on these rules: - - `NSString`, `NSNumber` -> c number, such as BOOL, int, long, float, NSUInteger... - `NSString` -> NSDate, parsed with format "yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd HH:mm:ss" or "yyyy-MM-dd". - `NSString` -> NSURL. - `NSValue` -> struct or union, such as CGRect, CGSize, ... - `NSString` -> SEL, Class. - - @return Whether succeed. - */ -- (BOOL)yy_modelSetWithDictionary:(NSDictionary *)dic; - -/** - Generate a json object from the receiver's properties. - - @return A json object in `NSDictionary` or `NSArray`, or nil if an error occurs. - See [NSJSONSerialization isValidJSONObject] for more information. - - @discussion Any of the invalid property is ignored. - If the reciver is `NSArray`, `NSDictionary` or `NSSet`, it just convert - the inner object to json object. - */ -- (nullable id)yy_modelToJSONObject; - -/** - Generate a json string's data from the receiver's properties. - - @return A json string's data, or nil if an error occurs. - - @discussion Any of the invalid property is ignored. - If the reciver is `NSArray`, `NSDictionary` or `NSSet`, it will also convert the - inner object to json string. - */ -- (nullable NSData *)yy_modelToJSONData; - -/** - Generate a json string from the receiver's properties. - - @return A json string, or nil if an error occurs. - - @discussion Any of the invalid property is ignored. - If the reciver is `NSArray`, `NSDictionary` or `NSSet`, it will also convert the - inner object to json string. - */ -- (nullable NSString *)yy_modelToJSONString; - -/** - Copy a instance with the receiver's properties. - - @return A copied instance, or nil if an error occurs. - */ -- (nullable id)yy_modelCopy; - -/** - Encode the receiver's properties to a coder. - - @param aCoder An archiver object. - */ -- (void)yy_modelEncodeWithCoder:(NSCoder *)aCoder; - -/** - Decode the receiver's properties from a decoder. - - @param aDecoder An archiver object. - - @return self - */ -- (id)yy_modelInitWithCoder:(NSCoder *)aDecoder; - -/** - Get a hash code with the receiver's properties. - - @return Hash code. - */ -- (NSUInteger)yy_modelHash; - -/** - Compares the receiver with another object for equality, based on properties. - - @param model Another object. - - @return `YES` if the reciever is equal to the object, otherwise `NO`. - */ -- (BOOL)yy_modelIsEqual:(id)model; - -/** - Description method for debugging purposes based on properties. - - @return A string that describes the contents of the receiver. - */ -- (NSString *)yy_modelDescription; - -@end - - - -/** - Provide some data-model method for NSArray. - */ -@interface NSArray (YYModel) - -/** - Creates and returns an array from a json-array. - This method is thread-safe. - - @param cls The instance's class in array. - @param json A json array of `NSArray`, `NSString` or `NSData`. - Example: [{"name","Mary"},{name:"Joe"}] - - @return A array, or nil if an error occurs. - */ -+ (nullable NSArray *)yy_modelArrayWithClass:(Class)cls json:(id)json; - -@end - - - -/** - Provide some data-model method for NSDictionary. - */ -@interface NSDictionary (YYModel) - -/** - Creates and returns a dictionary from a json. - This method is thread-safe. - - @param cls The value instance's class in dictionary. - @param json A json dictionary of `NSDictionary`, `NSString` or `NSData`. - Example: {"user1":{"name","Mary"}, "user2": {name:"Joe"}} - - @return A dictionary, or nil if an error occurs. - */ -+ (nullable NSDictionary *)yy_modelDictionaryWithClass:(Class)cls json:(id)json; -@end - - - -/** - If the default model transform does not fit to your model class, implement one or - more method in this protocol to change the default key-value transform process. - There's no need to add '' to your class header. - */ -@protocol YYModel -@optional - -/** - Custom property mapper. - - @discussion If the key in JSON/Dictionary does not match to the model's property name, - implements this method and returns the additional mapper. - - Example: - - json: - { - "n":"Harry Pottery", - "p": 256, - "ext" : { - "desc" : "A book written by J.K.Rowling." - }, - "ID" : 100010 - } - - model: - @interface YYBook : NSObject - @property NSString *name; - @property NSInteger page; - @property NSString *desc; - @property NSString *bookID; - @end - - @implementation YYBook - + (NSDictionary *)modelCustomPropertyMapper { - return @{@"name" : @"n", - @"page" : @"p", - @"desc" : @"ext.desc", - @"bookID": @[@"id", @"ID", @"book_id"]}; - } - @end - - @return A custom mapper for properties. - */ -+ (nullable NSDictionary *)modelCustomPropertyMapper; - -/** - The generic class mapper for container properties. - - @discussion If the property is a container object, such as NSArray/NSSet/NSDictionary, - implements this method and returns a property->class mapper, tells which kind of - object will be add to the array/set/dictionary. - - Example: - @class YYShadow, YYBorder, YYAttachment; - - @interface YYAttributes - @property NSString *name; - @property NSArray *shadows; - @property NSSet *borders; - @property NSDictionary *attachments; - @end - - @implementation YYAttributes - + (NSDictionary *)modelContainerPropertyGenericClass { - return @{@"shadows" : [YYShadow class], - @"borders" : YYBorder.class, - @"attachments" : @"YYAttachment" }; - } - @end - - @return A class mapper. - */ -+ (nullable NSDictionary *)modelContainerPropertyGenericClass; - -/** - If you need to create instances of different classes during json->object transform, - use the method to choose custom class based on dictionary data. - - @discussion If the model implements this method, it will be called to determine resulting class - during `+modelWithJSON:`, `+modelWithDictionary:`, conveting object of properties of parent objects - (both singular and containers via `+modelContainerPropertyGenericClass`). - - Example: - @class YYCircle, YYRectangle, YYLine; - - @implementation YYShape - - + (Class)modelCustomClassForDictionary:(NSDictionary*)dictionary { - if (dictionary[@"radius"] != nil) { - return [YYCircle class]; - } else if (dictionary[@"width"] != nil) { - return [YYRectangle class]; - } else if (dictionary[@"y2"] != nil) { - return [YYLine class]; - } else { - return [self class]; - } - } - - @end - - @param dictionary The json/kv dictionary. - - @return Class to create from this dictionary, `nil` to use current class. - - */ -+ (nullable Class)modelCustomClassForDictionary:(NSDictionary *)dictionary; - -/** - All the properties in blacklist will be ignored in model transform process. - Returns nil to ignore this feature. - - @return An array of property's name. - */ -+ (nullable NSArray *)modelPropertyBlacklist; - -/** - If a property is not in the whitelist, it will be ignored in model transform process. - Returns nil to ignore this feature. - - @return An array of property's name. - */ -+ (nullable NSArray *)modelPropertyWhitelist; - -/** - This method's behavior is similar to `- (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic;`, - but be called before the model transform. - - @discussion If the model implements this method, it will be called before - `+modelWithJSON:`, `+modelWithDictionary:`, `-modelSetWithJSON:` and `-modelSetWithDictionary:`. - If this method returns nil, the transform process will ignore this model. - - @param dic The json/kv dictionary. - - @return Returns the modified dictionary, or nil to ignore this model. - */ -- (NSDictionary *)modelCustomWillTransformFromDictionary:(NSDictionary *)dic; - -/** - If the default json-to-model transform does not fit to your model object, implement - this method to do additional process. You can also use this method to validate the - model's properties. - - @discussion If the model implements this method, it will be called at the end of - `+modelWithJSON:`, `+modelWithDictionary:`, `-modelSetWithJSON:` and `-modelSetWithDictionary:`. - If this method returns NO, the transform process will ignore this model. - - @param dic The json/kv dictionary. - - @return Returns YES if the model is valid, or NO to ignore this model. - */ -- (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic; - -/** - If the default model-to-json transform does not fit to your model class, implement - this method to do additional process. You can also use this method to validate the - json dictionary. - - @discussion If the model implements this method, it will be called at the end of - `-modelToJSONObject` and `-modelToJSONString`. - If this method returns NO, the transform process will ignore this json dictionary. - - @param dic The json dictionary. - - @return Returns YES if the model is valid, or NO to ignore this model. - */ -- (BOOL)modelCustomTransformToDictionary:(NSMutableDictionary *)dic; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/NSString+KYSM4.h b/Libs/CredibleAuthSDK.framework/Headers/NSString+KYSM4.h deleted file mode 100644 index 67a0003..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/NSString+KYSM4.h +++ /dev/null @@ -1,57 +0,0 @@ -// -// NSString+KYSM4.h -// Hug -// -// Created by WJT on 2018/6/11. -// Copyright © 2018年 WJT. All rights reserved. -// - -#import - -@interface NSString (KYSM4) - -/** - * 使用密钥和初始化向量生成CBC模式的SM4加解密对象 - * - * @param secretKey 密钥 - * @param iv 初始化向量 - * - * @return SM4加密字符串 - */ -- (nullable NSString *)encryptionWithSM4Key:(nonnull NSString *)secretKey iv:(nonnull NSString *)iv; - -/** - 在CBC模式下,利用给定的密钥,初始化向量,对字符串解密 - - @param secretKey 密钥 - @param iv 初始化向量 - @return SM4解密字符串 - */ -- (nullable NSString *)decryptionWithSM4Key:(nonnull NSString *)secretKey iv:(nonnull NSString *)iv; -/** - * 使用密钥生成ECB模式的SM4加解密对象 - * - * @param secretKey 密钥 - * - * @return SM4加解密对象 - */ -- (nullable NSString *)encryptionWithSM4Key:(nonnull NSString *)secretKey; - -/** - * 在ECB模式下,利用给定的密钥,对字符串解密 - * - * @param secretKey 密钥 - * - * @return SM4解密字符串 - */ -- (nullable NSString *)decryptionWithSM4Key:(nonnull NSString *)secretKey; - -/** - * hmacSM3加密 - * - * @param secretKey 密钥 - * - * @return hmacSM3加密字符串 - */ -- (nullable NSString *)encryptionWithSM3Key:(nonnull NSString *)secretKey; -@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/SimpleIFAAProcess.h b/Libs/CredibleAuthSDK.framework/Headers/SimpleIFAAProcess.h deleted file mode 100644 index f983978..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/SimpleIFAAProcess.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// EtasProcess.h -// esand_ios_demo -// -// Created by ReidLee on 2018/6/15. -// Copyright © 2018年 esandinfo. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SimpleIFAAProcess : NSObject - -// 是否在界面上打印日志 -@property (nonatomic) BOOL writeLog; - -typedef void (^Callback)(BOOL success, NSString *msg, NSString* code); - -- (id)initWithAuthtype:(int)authtype; -- (void)auth:(Callback)callback; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/WKWebViewJavascriptBridge.h b/Libs/CredibleAuthSDK.framework/Headers/WKWebViewJavascriptBridge.h deleted file mode 100644 index 4e3404f..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/WKWebViewJavascriptBridge.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// WKWebViewJavascriptBridge.h -// -// Created by @LokiMeyburg on 10/15/14. -// Copyright (c) 2014 @LokiMeyburg. All rights reserved. -// - -#if (__MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_9 || __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_1) -#define supportsWKWebView -#endif - -#if defined supportsWKWebView - -#import -#import "WebViewJavascriptBridgeBase.h" -#import - -@interface WKWebViewJavascriptBridge : NSObject - -+ (instancetype)bridgeForWebView:(WKWebView*)webView; -+ (void)enableLogging; - -- (void)registerHandler:(NSString*)handlerName handler:(WVJBHandler)handler; -- (void)removeHandler:(NSString*)handlerName; -- (void)callHandler:(NSString*)handlerName; -- (void)callHandler:(NSString*)handlerName data:(id)data; -- (void)callHandler:(NSString*)handlerName data:(id)data responseCallback:(WVJBResponseCallback)responseCallback; -- (void)reset; -- (void)setWebViewDelegate:(id)webViewDelegate; -- (void)disableJavscriptAlertBoxSafetyTimeout; - -@end - -#endif diff --git a/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridgeBase.h b/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridgeBase.h deleted file mode 100644 index 54d80ac..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridgeBase.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// WebViewJavascriptBridgeBase.h -// -// Created by @LokiMeyburg on 10/15/14. -// Copyright (c) 2014 @LokiMeyburg. All rights reserved. -// - -#import - -#define kOldProtocolScheme @"wvjbscheme" -#define kNewProtocolScheme @"https" -#define kQueueHasMessage @"__wvjb_queue_message__" -#define kBridgeLoaded @"__bridge_loaded__" - -typedef void (^WVJBResponseCallback)(id responseData); -typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback); -typedef NSDictionary WVJBMessage; - -@protocol WebViewJavascriptBridgeBaseDelegate -- (NSString*) _evaluateJavascript:(NSString*)javascriptCommand; -@end - -@interface WebViewJavascriptBridgeBase : NSObject - - -@property (weak, nonatomic) id delegate; -@property (strong, nonatomic) NSMutableArray* startupMessageQueue; -@property (strong, nonatomic) NSMutableDictionary* responseCallbacks; -@property (strong, nonatomic) NSMutableDictionary* messageHandlers; -@property (strong, nonatomic) WVJBHandler messageHandler; - -+ (void)enableLogging; -+ (void)setLogMaxLength:(int)length; -- (void)reset; -- (void)sendData:(id)data responseCallback:(WVJBResponseCallback)responseCallback handlerName:(NSString*)handlerName; -- (void)flushMessageQueue:(NSString *)messageQueueString; -- (void)injectJavascriptFile; -- (BOOL)isWebViewJavascriptBridgeURL:(NSURL*)url; -- (BOOL)isQueueMessageURL:(NSURL*)urll; -- (BOOL)isBridgeLoadedURL:(NSURL*)urll; -- (void)logUnkownMessage:(NSURL*)url; -- (NSString *)webViewJavascriptCheckCommand; -- (NSString *)webViewJavascriptFetchQueyCommand; -- (void)disableJavscriptAlertBoxSafetyTimeout; - -@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridge_JS.h b/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridge_JS.h deleted file mode 100644 index 9c857f1..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridge_JS.h +++ /dev/null @@ -1,3 +0,0 @@ -#import - -NSString * WebViewJavascriptBridge_js(void); diff --git a/Libs/CredibleAuthSDK.framework/Headers/XMGModelTool.h b/Libs/CredibleAuthSDK.framework/Headers/XMGModelTool.h deleted file mode 100644 index e42f8cd..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/XMGModelTool.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// XMGModelTool.h -// sqlite的基本封装 -// -// Created by 王顺子 on 16/12/5. -// Copyright © 2016年 小码哥. All rights reserved. -// - -#import - -@protocol XMGSqliteModelToolDelegate - -- (NSString *)primaryKey; - -- (NSArray *)ignoreIvarNames; - -- (NSDictionary *)renameDic; - -@optional -- (NSArray *)combinedPrimaryKeys; - -@end - -@interface XMGModelTool : NSObject - -/** - 获取表格名称 - */ -+ (NSString *)getTableNameWithModelClass: (Class)cls; -/** - 获取临时表格名称 - */ -+ (NSString *)getTempTableNameWithModelClass: (Class)cls; -/** - 获取模型会被创建成为表格的 成员变量名称和类型组成的字典 - {key: 成员变量名称,取出下划线 value: 值} - 类型: runtime获取的类型 - */ -+ (NSDictionary *)getModelIvarNameIvarTypeDic: (Class)cls; -/** - 获取模型里面, 需要创建表格的所有字段/类型, 组成的数组 - */ -+ (NSDictionary *)getModelIvarNameSqlTypeDic: (Class)cls; -/** - 获取模型里面所有的字段 - */ -+ (NSArray *)getModelIvarNames: (Class)cls; - -@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/XMGSqliteModelTool.h b/Libs/CredibleAuthSDK.framework/Headers/XMGSqliteModelTool.h deleted file mode 100644 index c98400e..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/XMGSqliteModelTool.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// XMGSqliteModelTool.h -// sqlite的基本封装 -// -// Created by 小码哥 on 2016/12/3. -// Copyright © 2016年 小码哥. All rights reserved. -// - -#import - -typedef enum : NSUInteger { - XMGSqliteModelToolRelationTypeEqual, - XMGSqliteModelToolRelationTypeGreater, - XMGSqliteModelToolRelationTypeLess, - XMGSqliteModelToolRelationTypeEG, - XMGSqliteModelToolRelationTypeEL, - XMGSqliteModelToolRelationTypeNE, -} XMGSqliteModelToolRelationType; - - -typedef enum : NSUInteger { - XMGSqliteModelToolNAONot, - XMGSqliteModelToolNAOAnd, - XMGSqliteModelToolNAOOr, -} XMGSqliteModelToolNAO; - - - - -@interface XMGSqliteModelTool : NSObject - -// runtime 获取更多的信息, 让用户, 尽可能少的, 给我们提供信息 -+ (BOOL)createTableWithModelClass: (Class)cls withUID: (NSString *)uid; - - -// 保存/ 已经存在, 更新 -+ (BOOL)saveModel: (id)model uid: (NSString *)uid; - -+ (NSArray *)queryAllModels:(Class)cls uid: (NSString *)uid; -+ (NSArray *)queryModels:(Class)cls key: (NSString *)key relation: (XMGSqliteModelToolRelationType)relation value: (id)value uid: (NSString *)uid; -+ (NSArray *)queryModels:(Class)cls keys: (NSArray *)keys relations: (NSArray *)relations values: (NSArray *)values nao: (NSArray *)naos uid: (NSString *)uid; -+ (NSArray *)queryModels:(Class)cls sql: (NSString *)sql uid: (NSString *)uid; - - -+ (BOOL)deleteModel: (id)model uid: (NSString *)uid; -+ (BOOL)deleteModel:(Class)cls key: (NSString *)key relation: (XMGSqliteModelToolRelationType)relation value: (id)value uid: (NSString *)uid; -+ (BOOL)deleteModel:(Class)cls keys: (NSArray *)keys relations: (NSArray *)relations values: (NSArray *)values nao: (NSArray *)naos uid: (NSString *)uid; -+ (BOOL)deleteWithSql: (NSString *)sql uid: (NSString *)uid; - -//+ (void)xxxx; - -@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/XMGTableTool.h b/Libs/CredibleAuthSDK.framework/Headers/XMGTableTool.h deleted file mode 100644 index 5afa8ff..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/XMGTableTool.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// XMGTableTool.h -// sqlite的基本封装 -// -// Created by 王顺子 on 16/12/5. -// Copyright © 2016年 小码哥. All rights reserved. -// - -#import - -@interface XMGTableTool : NSObject - -+ (BOOL)deleteTable: (NSString *)tableName uid: (NSString *)uid; - -/** 判断表格是否存在 */ -+ (BOOL)isTableExists: (NSString *)tableName uid: (NSString *)uid; - -/** 获取表格里面所有的字段 */ -+ (NSArray *)getTableAllColumnNames: (NSString *)tableName uid: (NSString *)uid; - -@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/XTQMData.h b/Libs/CredibleAuthSDK.framework/Headers/XTQMData.h deleted file mode 100644 index 20a3abd..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/XTQMData.h +++ /dev/null @@ -1,53 +0,0 @@ -// -// XTQMData.h -// bymsSDK -// -// Created by swxa@saas on 2021/3/30. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XTQMData : NSObject - - -/// 方法返回错误码 0为成功 -1为失败 -@property (nonatomic,assign) NSInteger code; -/// 具体错误码 -@property (nonatomic,copy) id errCode; -/// 0代表扫码身份认证,1代表扫码签名, -@property (nonatomic,assign) NSInteger flag; -/// 错误信息 -@property (nonatomic,copy) NSString *msg; -/// 当前业务标识 -@property (nonatomic,copy) NSString *key; -/// 签名值 -@property (nonatomic,copy) NSString *sign; -/// 明文 -@property (nonatomic,copy) NSString *plain; -/// 密文 -@property (nonatomic,copy) NSString *cipher; -/// 签名证书 -@property (nonatomic,copy) NSString *signCert; -/// 身份认证返回clientHello -@property (nonatomic,copy) NSString *clientHelloHex; -/// 身份认证返回clientInfo -@property (nonatomic,copy) NSString * clientInfo; - -@property (nonatomic,copy) NSString * sessionKey; -/// 身份认证返回clientAuth -@property (nonatomic,copy) NSString * clientAuth; -/// 证书信息 -@property (nonatomic,copy) NSDictionary *certInfo; -/// 验签结果 -@property (nonatomic,assign) bool verifyResult; -/// 随机数 -@property (nonatomic,copy) NSString * random; -/// 设备号 -@property (nonatomic,copy) NSString * deviceId; -///获取当前设备证书列表 -@property (nonatomic,copy) NSArray * data; -@end - -NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/YYClassInfo.h b/Libs/CredibleAuthSDK.framework/Headers/YYClassInfo.h deleted file mode 100644 index 6b87458..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/YYClassInfo.h +++ /dev/null @@ -1,200 +0,0 @@ -// -// YYClassInfo.h -// YYModel -// -// Created by ibireme on 15/5/9. -// Copyright (c) 2015 ibireme. -// -// This source code is licensed under the MIT-style license found in the -// LICENSE file in the root directory of this source tree. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -/** - Type encoding's type. - */ -typedef NS_OPTIONS(NSUInteger, YYEncodingType) { - YYEncodingTypeMask = 0xFF, ///< mask of type value - YYEncodingTypeUnknown = 0, ///< unknown - YYEncodingTypeVoid = 1, ///< void - YYEncodingTypeBool = 2, ///< bool - YYEncodingTypeInt8 = 3, ///< char / BOOL - YYEncodingTypeUInt8 = 4, ///< unsigned char - YYEncodingTypeInt16 = 5, ///< short - YYEncodingTypeUInt16 = 6, ///< unsigned short - YYEncodingTypeInt32 = 7, ///< int - YYEncodingTypeUInt32 = 8, ///< unsigned int - YYEncodingTypeInt64 = 9, ///< long long - YYEncodingTypeUInt64 = 10, ///< unsigned long long - YYEncodingTypeFloat = 11, ///< float - YYEncodingTypeDouble = 12, ///< double - YYEncodingTypeLongDouble = 13, ///< long double - YYEncodingTypeObject = 14, ///< id - YYEncodingTypeClass = 15, ///< Class - YYEncodingTypeSEL = 16, ///< SEL - YYEncodingTypeBlock = 17, ///< block - YYEncodingTypePointer = 18, ///< void* - YYEncodingTypeStruct = 19, ///< struct - YYEncodingTypeUnion = 20, ///< union - YYEncodingTypeCString = 21, ///< char* - YYEncodingTypeCArray = 22, ///< char[10] (for example) - - YYEncodingTypeQualifierMask = 0xFF00, ///< mask of qualifier - YYEncodingTypeQualifierConst = 1 << 8, ///< const - YYEncodingTypeQualifierIn = 1 << 9, ///< in - YYEncodingTypeQualifierInout = 1 << 10, ///< inout - YYEncodingTypeQualifierOut = 1 << 11, ///< out - YYEncodingTypeQualifierBycopy = 1 << 12, ///< bycopy - YYEncodingTypeQualifierByref = 1 << 13, ///< byref - YYEncodingTypeQualifierOneway = 1 << 14, ///< oneway - - YYEncodingTypePropertyMask = 0xFF0000, ///< mask of property - YYEncodingTypePropertyReadonly = 1 << 16, ///< readonly - YYEncodingTypePropertyCopy = 1 << 17, ///< copy - YYEncodingTypePropertyRetain = 1 << 18, ///< retain - YYEncodingTypePropertyNonatomic = 1 << 19, ///< nonatomic - YYEncodingTypePropertyWeak = 1 << 20, ///< weak - YYEncodingTypePropertyCustomGetter = 1 << 21, ///< getter= - YYEncodingTypePropertyCustomSetter = 1 << 22, ///< setter= - YYEncodingTypePropertyDynamic = 1 << 23, ///< @dynamic -}; - -/** - Get the type from a Type-Encoding string. - - @discussion See also: - https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html - https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtPropertyIntrospection.html - - @param typeEncoding A Type-Encoding string. - @return The encoding type. - */ -YYEncodingType YYEncodingGetType(const char *typeEncoding); - - -/** - Instance variable information. - */ -@interface YYClassIvarInfo : NSObject -@property (nonatomic, assign, readonly) Ivar ivar; ///< ivar opaque struct -@property (nonatomic, strong, readonly) NSString *name; ///< Ivar's name -@property (nonatomic, assign, readonly) ptrdiff_t offset; ///< Ivar's offset -@property (nonatomic, strong, readonly) NSString *typeEncoding; ///< Ivar's type encoding -@property (nonatomic, assign, readonly) YYEncodingType type; ///< Ivar's type - -/** - Creates and returns an ivar info object. - - @param ivar ivar opaque struct - @return A new object, or nil if an error occurs. - */ -- (instancetype)initWithIvar:(Ivar)ivar; -@end - - -/** - Method information. - */ -@interface YYClassMethodInfo : NSObject -@property (nonatomic, assign, readonly) Method method; ///< method opaque struct -@property (nonatomic, strong, readonly) NSString *name; ///< method name -@property (nonatomic, assign, readonly) SEL sel; ///< method's selector -@property (nonatomic, assign, readonly) IMP imp; ///< method's implementation -@property (nonatomic, strong, readonly) NSString *typeEncoding; ///< method's parameter and return types -@property (nonatomic, strong, readonly) NSString *returnTypeEncoding; ///< return value's type -@property (nullable, nonatomic, strong, readonly) NSArray *argumentTypeEncodings; ///< array of arguments' type - -/** - Creates and returns a method info object. - - @param method method opaque struct - @return A new object, or nil if an error occurs. - */ -- (instancetype)initWithMethod:(Method)method; -@end - - -/** - Property information. - */ -@interface YYClassPropertyInfo : NSObject -@property (nonatomic, assign, readonly) objc_property_t property; ///< property's opaque struct -@property (nonatomic, strong, readonly) NSString *name; ///< property's name -@property (nonatomic, assign, readonly) YYEncodingType type; ///< property's type -@property (nonatomic, strong, readonly) NSString *typeEncoding; ///< property's encoding value -@property (nonatomic, strong, readonly) NSString *ivarName; ///< property's ivar name -@property (nullable, nonatomic, assign, readonly) Class cls; ///< may be nil -@property (nullable, nonatomic, strong, readonly) NSArray *protocols; ///< may nil -@property (nonatomic, assign, readonly) SEL getter; ///< getter (nonnull) -@property (nonatomic, assign, readonly) SEL setter; ///< setter (nonnull) - -/** - Creates and returns a property info object. - - @param property property opaque struct - @return A new object, or nil if an error occurs. - */ -- (instancetype)initWithProperty:(objc_property_t)property; -@end - - -/** - Class information for a class. - */ -@interface YYClassInfo : NSObject -@property (nonatomic, assign, readonly) Class cls; ///< class object -@property (nullable, nonatomic, assign, readonly) Class superCls; ///< super class object -@property (nullable, nonatomic, assign, readonly) Class metaCls; ///< class's meta class object -@property (nonatomic, readonly) BOOL isMeta; ///< whether this class is meta class -@property (nonatomic, strong, readonly) NSString *name; ///< class name -@property (nullable, nonatomic, strong, readonly) YYClassInfo *superClassInfo; ///< super class's class info -@property (nullable, nonatomic, strong, readonly) NSDictionary *ivarInfos; ///< ivars -@property (nullable, nonatomic, strong, readonly) NSDictionary *methodInfos; ///< methods -@property (nullable, nonatomic, strong, readonly) NSDictionary *propertyInfos; ///< properties - -/** - If the class is changed (for example: you add a method to this class with - 'class_addMethod()'), you should call this method to refresh the class info cache. - - After called this method, `needUpdate` will returns `YES`, and you should call - 'classInfoWithClass' or 'classInfoWithClassName' to get the updated class info. - */ -- (void)setNeedUpdate; - -/** - If this method returns `YES`, you should stop using this instance and call - `classInfoWithClass` or `classInfoWithClassName` to get the updated class info. - - @return Whether this class info need update. - */ -- (BOOL)needUpdate; - -/** - Get the class info of a specified Class. - - @discussion This method will cache the class info and super-class info - at the first access to the Class. This method is thread-safe. - - @param cls A class. - @return A class info, or nil if an error occurs. - */ -+ (nullable instancetype)classInfoWithClass:(Class)cls; - -/** - Get the class info of a specified Class. - - @discussion This method will cache the class info and super-class info - at the first access to the Class. This method is thread-safe. - - @param className A class name. - @return A class info, or nil if an error occurs. - */ -+ (nullable instancetype)classInfoWithClassName:(NSString *)className; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/YYModel.h b/Libs/CredibleAuthSDK.framework/Headers/YYModel.h deleted file mode 100644 index e1154ee..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/YYModel.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YYModel.h -// YYModel -// -// Created by ibireme on 15/5/10. -// Copyright (c) 2015 ibireme. -// -// This source code is licensed under the MIT-style license found in the -// LICENSE file in the root directory of this source tree. -// - -#import - -#if __has_include() -FOUNDATION_EXPORT double YYModelVersionNumber; -FOUNDATION_EXPORT const unsigned char YYModelVersionString[]; -#import -#import -#else -#import "NSObject+YYModel.h" -#import "YYClassInfo.h" -#endif diff --git a/Libs/CredibleAuthSDK.framework/Headers/bymsSDK.h b/Libs/CredibleAuthSDK.framework/Headers/bymsSDK.h deleted file mode 100644 index 446eaba..0000000 --- a/Libs/CredibleAuthSDK.framework/Headers/bymsSDK.h +++ /dev/null @@ -1,270 +0,0 @@ -// -// bymsSDK.h -// bymsSDK -// -// - -#import -#import "XTQMData.h" - -//控制台日志打印 0不打印 1打印 -#define KcontrolLogPrint @"1" - -@interface bymsSDK : NSObject - - -typedef void(^ ResponseSuccessBlock)(NSDictionary *responseObject); - -typedef void(^ XTQMDataResponseSuccessBlock)(XTQMData *data); -typedef void(^ ResponseJsonSuccessBlock)(NSString *responseObject); -typedef void(^ ResponseFailBlock)(NSError *error); - -///获取设备号 -+(XTQMData *)getDeviceId; -#pragma mark - 管理接口 -/// 初始化服务 -/// @param serverId 服务id 应用ID规则:不能为空,且为2位; -/// @param szHostAddress 服务地址 http//:ip:port -+ (XTQMData *)initServerAddress:(NSString *)serverId szHostAddress:(NSString *)szHostAddress; - -///获取证书列表 -+ (XTQMData *)getCertList; - -+(NSString * )SM3:(NSString *)pwd username:(NSString *)username; - - -#pragma mark - 2.3证书申请 -#pragma mark 1.纳税人、自然人接口 - -/// 本接口用于申请协同签名用户证书,并自动写入本地移动终端。税务信息系统APP调用SDK证书申请接口,SDK与后台进行数据交互,完成协同签名证书签发并返回给客户端,自动写入移动终端。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) applyCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - -#pragma mark 2.税务人员、运维人员接口 - -/// 本接口用于申请协同签名用户证书,并自动写入本地移动终端。税务信息系统APP调用SDK证书申请接口,SDK与后台进行数据交互,完成协同签名证书签发并返回给客户端,自动写入移动终端。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 税务人员代码|用户手机号 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) applyCert:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - - -#pragma mark - 2.4证书查看 -#pragma mark 1.纳税人、自然人接口 - -/// 本接口用于查看用户对应的证书。税务信息系统APP调用SDK证书查看接口,查看用户对应的证书详细信息。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) getCertInfo:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - -#pragma mark 2.税务人员、运维人员接口 - -/// 本接口用于查看用户对应的证书。税务信息系统APP调用SDK证书查看接口,查看用户对应的证书详细信息。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 税务人员代码|用户手机号 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) getCertInfo:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - -#pragma mark - 2.5证书下载 -#pragma mark 1.纳税人、自然人接口 - -/// 本接口用于申请证书后证书没有写入客户端本地,通过下载证书将证书再次下载自动写入客户端本地。税务信息系统APP调用SDK证书下载接口,SDK与后台进行数据交互,完成协同签名证书下载并返回给客户端,自动写入移动终端。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) downloadCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; -#pragma mark 2.税务人员、运维人员接口 - -/// 本接口用于申请证书后证书没有写入客户端本地,通过下载证书将证书再次下载自动写入客户端本地。税务信息系统APP调用SDK证书下载接口,SDK与后台进行数据交互,完成协同签名证书下载并返回给客户端,自动写入移动终端。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 税务人员代码|用户手机号 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) downloadCert:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - -#pragma mark - 2.6证书更新 -#pragma mark 1.纳税人、自然人接口 -/// 本接口用于用户信息发生变更时更新协同签名证书。税务信息系统APP调用SDK证书更新接口,SDK与后台进行数据交互,完成协同签名证书更新。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) updateCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; -#pragma mark 2.税务人员、运维人员接口 -/// 本接口用于用户信息发生变更时更新协同签名证书。税务信息系统APP调用SDK证书更新接口,SDK与后台进行数据交互,完成协同签名证书更新。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 税务人员代码|用户手机号 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) updateCert:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; -#pragma mark - 2.7证书注销 -#pragma mark 1.纳税人、自然人接口 -/// 本接口用于注销协同签名证书并同步删除本地证书数据。税务信息系统APP调用SDK证书注销接口,SDK与后台进行数据交互,完成协同签名证书注销并返回给客户端。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) logoutCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; -#pragma mark 2.税务人员、运维人员接口 -/// 本接口用于注销协同签名证书并同步删除本地证书数据。税务信息系统APP调用SDK证书注销接口,SDK与后台进行数据交互,完成协同签名证书注销并返回给客户端。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 税务人员代码|用户手机号 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) logoutCert:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - - -#pragma mark - 2.8 证书是否存在 -#pragma mark 1.纳税人、自然人接口 -/// 本接口用于检查本地是否存在协同签名证书,即用户是否申请协同签名证书,在做具体业务之前可以调用此接口判断用户是否申请证书,如果证书不存在则调用申请证书接口进行证书申请。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) checkCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; -#pragma mark 2.税务人员、运维人员接口 -/// 本接口用于注销协同签名证书并同步删除本地证书数据。税务信息系统APP调用SDK证书注销接口,SDK与后台进行数据交互,完成协同签名证书注销并返回给客户端。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 税务人员代码|用户手机号 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) checkCert:(NSString *)ryType userNumber:(NSString *)userNumber successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - -#pragma mark - 2.9 修改pin码 -#pragma mark 1.纳税人、自然人接口 -/// 用户调用修改PIN码接口实现对PIN码的修改。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param oldPin pin码 -/// @param newPin 新pin码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) changePin:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh oldPin:(NSString *)oldPin newPin:(NSString *)newPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - -#pragma mark 2.税务人员、运维人员接口 -/// 用户调用修改PIN码接口实现对PIN码的修改。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 税务人员代码|用户手机号 -/// @param oldPin pin码 -/// @param newPin 新pin码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) changePin:(NSString *)ryType userNumber:(NSString *)userNumber oldPin:(NSString *)oldPin newPin:(NSString *)newPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; -#pragma mark - 2.10 协同签名 -#pragma mark 1.纳税人、自然人接口 -/// 本接口用于检查本地是否存在协同签名证书,即用户是否申请协同签名证书,在做具体业务之前可以调用此接口判断用户是否申请证书,如果证书不存在则调用申请证书接口进行证书申请。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param userPin 用户设置的PIN码 -/// @param original 待签名的原文数据,需要是UTF8字符集的,并转换为16进制串形式(1个字节转换为2个16进制字符)。 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) callSM2Sign:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin original:(NSString *)original successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; -#pragma mark 2.税务人员、运维人员接口 -/// 本接口用于实现协同签名操作并返回签名结果。税务信息系统APP调用SDK协同签名接口,SDK与后台进行数据交互,完成协同签名,得到签名结果。 -/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 -/// @param userNumber 税务人员代码|用户手机号 -/// @param userPin 用户设置的PIN码 -/// @param original 待签名的原文数据,需要是UTF8字符集的,并转换为16进制串形式(1个字节转换为2个16进制字符)。 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) callSM2Sign:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin original:(NSString *)original successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - -#pragma mark - 2.11身份认证clientHello -#pragma mark 1.纳税人、自然人接口 -/// 本接口用于生成用于身份认证的clientHello。税务信息系统APP调用SDK身份认证clientHello接口,生成clientHello结果。 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) clientHello:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; -#pragma mark 2.税务人员、运维人员接口 -/// 本接口用于生成用于身份认证的clientHello。税务信息系统APP调用SDK身份认证clientHello接口,生成clientHello结果。 -/// @param userNumber 税务人员代码|用户手机号 -/// @param userPin 用户设置的PIN码 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) clientHello:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - - -#pragma mark - 2.12身份认证clientAuth - -/// 本接口用于生成用于身份认证的clientAuth。税务信息系统APP调用SDK身份认证clientAuth接口,SDK与后台进行数据交互,生成clientAuth结果。 -/// @param serverHello 服务端生成的serverHello -/// @param random 服务端返回的随机数 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) clientAuth:(NSString *)serverHello random:(NSString *)random successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - - -#pragma mark - 2.13协同解密 -#pragma mark 1.纳税人、自然人接口 - -/// 本接口用于对加密数据的解密,并返回解密结果。税务信息系统APP调用SDK协同解密接口,SDK与后台进行数据交互,完成协同解密,得到解密结果。 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param userPin 用户设置的PIN码 -/// @param data 待解密的加密数据 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) callDecrypt:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin data:(NSString *)data successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; -#pragma mark 2.税务人员、运维人员接口 -/// 本接口用于对加密数据的解密,并返回解密结果。税务信息系统APP调用SDK协同解密接口,SDK与后台进行数据交互,完成协同解密,得到解密结果。 -/// @param userNumber 税务人员代码|用户手机号 -/// @param userPin 用户设置的PIN码 -/// @param data 待解密的加密数据 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) callDecrypt:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin data:(NSString *)data successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - -#pragma mark - 2.14扫码处理 -#pragma mark 1.纳税人、自然人接口 - - -///本接口用于扫码身份认证和扫码数字签名。税务信息系统APP扫描二维码后调用SDK扫码处理接口将扫描结果传入,SDK解析二维码数据,判断二维码用途(扫码数字签名、扫码身份认证),得到扫码处理结果,然后根据返回结果去协同签名安全管理中心获取身份认证或签名结果。 -/// @param ryType 人员类型 -/// @param userNumber 用户手机号 -/// @param userSbh 纳税人识别号 |身份证号码 -/// @param userPin 用户设置的PIN码 -/// @param scanResult 二维码数据 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) resolvingScanV1:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin scanResult:(NSString *)scanResult successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - -#pragma mark 2.税务人员、运维人员接口 -///本接口用于扫码身份认证和扫码数字签名。税务信息系统APP扫描二维码后调用SDK扫码处理接口将扫描结果传入,SDK解析二维码数据,判断二维码用途(扫码数字签名、扫码身份认证),得到扫码处理结果,然后根据返回结果去协同签名安全管理中心获取身份认证或签名结果。 -/// @param ryType 人员类型 -/// @param userNumber 税务人员代码|用户手机号 -/// @param userPin 用户设置的PIN码 -/// @param scanResult 二维码数据 -/// @param successBlock 成功回调 -/// @param failBlock 失败回调 -+(void) resolvingScanV1:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin scanResult:(NSString *)scanResult successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; - - -@end diff --git a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo deleted file mode 100644 index 4f11a10..0000000 Binary files a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.abi.json b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.abi.json deleted file mode 100644 index dc109fc..0000000 --- a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.abi.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ABIRoot": { - "kind": "Root", - "name": "TopLevel", - "printedName": "TopLevel", - "json_format_version": 8 - }, - "ConstValues": [] -} \ No newline at end of file diff --git a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftdoc b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftdoc deleted file mode 100644 index b07fafe..0000000 Binary files a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftdoc and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftmodule b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftmodule deleted file mode 100644 index 6f074e5..0000000 Binary files a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftmodule and /dev/null differ diff --git a/Libs/CredibleAuthSDK.framework/Modules/module.modulemap b/Libs/CredibleAuthSDK.framework/Modules/module.modulemap deleted file mode 100644 index 73545c9..0000000 --- a/Libs/CredibleAuthSDK.framework/Modules/module.modulemap +++ /dev/null @@ -1,11 +0,0 @@ -framework module CredibleAuthSDK { - umbrella header "CredibleAuthSDK.h" - - export * - module * { export * } -} - -module CredibleAuthSDK.Swift { - header "CredibleAuthSDK-Swift.h" - requires objc -} diff --git a/Libs/CredibleAuthSDK.framework/Modules/module.private.modulemap b/Libs/CredibleAuthSDK.framework/Modules/module.private.modulemap deleted file mode 100644 index 5ed0906..0000000 --- a/Libs/CredibleAuthSDK.framework/Modules/module.private.modulemap +++ /dev/null @@ -1,8 +0,0 @@ -// module.modulemap 文件 -module CredibleAuthSDK_Private { -// requires objc -// header "CredibleAuthSDK/Tool/3rd/WebViewJavascriptBridge/WKWebViewJavascriptBridge.h" -//// header "YYModel/YYModel.h" -// export * -} -///Users/tony/Desktop/depend_sdk_ios/depend-sdk-ios/CredibleAuthSDK/Tool/3rd/WebViewJavascriptBridge/WKWebViewJavascriptBridge.h diff --git a/Libs/GZSWUniPlugin.framework/GZSWUniPlugin b/Libs/GZSWUniPlugin.framework/GZSWUniPlugin index bafee4d..ebf9efe 100644 Binary files a/Libs/GZSWUniPlugin.framework/GZSWUniPlugin and b/Libs/GZSWUniPlugin.framework/GZSWUniPlugin differ diff --git a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeDirectory b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeDirectory index 532aab8..d58c447 100644 Binary files a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeDirectory and b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeDirectory differ diff --git a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements-1 b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements-1 index 67f7535..eb86661 100644 Binary files a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements-1 and b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements-1 differ diff --git a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeSignature b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeSignature index 992b91c..265b3b4 100644 Binary files a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeSignature and b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeSignature differ diff --git a/Libs/OUIFilePicker.framework/Headers/OUIFilePicker.h b/Libs/OUIFilePicker.framework/Headers/OUIFilePicker.h new file mode 100755 index 0000000..5ba8d0c --- /dev/null +++ b/Libs/OUIFilePicker.framework/Headers/OUIFilePicker.h @@ -0,0 +1,33 @@ +// +// OUIFilePicker.h +// OUIFilePicker +// +// Created by x on 2023/4/4. +// + +#import "DCUniModule.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface OUIFilePicker : DCUniModule + +/** + 选择文件 + @param callback 回调选择的文件的本机路径 + */ +- (void)pick:(UniModuleKeepAliveCallback)callback; + +/** + 预览文件 + @param path 文件的本机路径 + */ +- (void)preview:(NSString *)path; + +/** + 视频缩略图 + @param path 文件的本机路径 + */ +- (void)getVideoAttributes:(NSString *)path callback:(UniModuleKeepAliveCallback)callback; +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Info.plist b/Libs/OUIFilePicker.framework/Info.plist old mode 100644 new mode 100755 similarity index 52% rename from Libs/CredibleAuthSDK.framework/Info.plist rename to Libs/OUIFilePicker.framework/Info.plist index 3bcf816..83ebec5 Binary files a/Libs/CredibleAuthSDK.framework/Info.plist and b/Libs/OUIFilePicker.framework/Info.plist differ diff --git a/Libs/OUIFilePicker.framework/Modules/module.modulemap b/Libs/OUIFilePicker.framework/Modules/module.modulemap new file mode 100755 index 0000000..8a56244 --- /dev/null +++ b/Libs/OUIFilePicker.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module OUIFilePicker { + umbrella header "OUIFilePicker.h" + export * + + module * { export * } +} diff --git a/Libs/OUIFilePicker.framework/OUIFilePicker b/Libs/OUIFilePicker.framework/OUIFilePicker new file mode 100755 index 0000000..32826a4 Binary files /dev/null and b/Libs/OUIFilePicker.framework/OUIFilePicker differ diff --git a/Libs/OUIFilePicker.framework/_CodeSignature/CodeDirectory b/Libs/OUIFilePicker.framework/_CodeSignature/CodeDirectory new file mode 100755 index 0000000..7d8c244 Binary files /dev/null and b/Libs/OUIFilePicker.framework/_CodeSignature/CodeDirectory differ diff --git a/Libs/OUIFilePicker.framework/_CodeSignature/CodeRequirements b/Libs/OUIFilePicker.framework/_CodeSignature/CodeRequirements new file mode 100755 index 0000000..a614c7d Binary files /dev/null and b/Libs/OUIFilePicker.framework/_CodeSignature/CodeRequirements differ diff --git a/Libs/OUIFilePicker.framework/_CodeSignature/CodeRequirements-1 b/Libs/OUIFilePicker.framework/_CodeSignature/CodeRequirements-1 new file mode 100755 index 0000000..26fe46c Binary files /dev/null and b/Libs/OUIFilePicker.framework/_CodeSignature/CodeRequirements-1 differ diff --git a/Libs/OUIFilePicker.framework/_CodeSignature/CodeResources b/Libs/OUIFilePicker.framework/_CodeSignature/CodeResources new file mode 100755 index 0000000..6e156df --- /dev/null +++ b/Libs/OUIFilePicker.framework/_CodeSignature/CodeResources @@ -0,0 +1,132 @@ + + + + + files + + Headers/OUIFilePicker.h + + Bzq98JkoBZOH9hGyCdwD8k1DuqQ= + + Info.plist + + ZTAQAGgEjjhaqlYDZfOZvE9PIis= + + Modules/module.modulemap + + llGrLfWy7eKSIFwdydp1lPmNB8Y= + + + files2 + + Headers/OUIFilePicker.h + + hash + + Bzq98JkoBZOH9hGyCdwD8k1DuqQ= + + hash2 + + z6sY4p1oKejre1a09q00mrMuJkEZ3niCrl8fjm0Z+Jo= + + + Modules/module.modulemap + + hash + + llGrLfWy7eKSIFwdydp1lPmNB8Y= + + hash2 + + 8bOgebMgM80gvfPkaFvta8Gkd77gsrvpITKo02vb3s0= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Libs/OUIFilePicker.framework/_CodeSignature/CodeSignature b/Libs/OUIFilePicker.framework/_CodeSignature/CodeSignature new file mode 100755 index 0000000..55837e1 Binary files /dev/null and b/Libs/OUIFilePicker.framework/_CodeSignature/CodeSignature differ diff --git a/Libs/OpenIMCore.framework/Headers b/Libs/OpenIMCore.framework/Headers new file mode 120000 index 0000000..a177d2a --- /dev/null +++ b/Libs/OpenIMCore.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/Libs/OpenIMCore.framework/Modules b/Libs/OpenIMCore.framework/Modules new file mode 120000 index 0000000..5736f31 --- /dev/null +++ b/Libs/OpenIMCore.framework/Modules @@ -0,0 +1 @@ +Versions/Current/Modules \ No newline at end of file diff --git a/Libs/OpenIMCore.framework/OpenIMCore b/Libs/OpenIMCore.framework/OpenIMCore new file mode 120000 index 0000000..ee0dd1d --- /dev/null +++ b/Libs/OpenIMCore.framework/OpenIMCore @@ -0,0 +1 @@ +Versions/Current/OpenIMCore \ No newline at end of file diff --git a/Libs/OpenIMCore.framework/Resources b/Libs/OpenIMCore.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/Libs/OpenIMCore.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/Libs/OpenIMCore.framework/Versions/A/Headers/OpenIMCore.h b/Libs/OpenIMCore.framework/Versions/A/Headers/OpenIMCore.h new file mode 100644 index 0000000..d1f34cd --- /dev/null +++ b/Libs/OpenIMCore.framework/Versions/A/Headers/OpenIMCore.h @@ -0,0 +1,15 @@ + +// Objective-C API for talking to the following Go packages +// +// github.com/openimsdk/openim-sdk-core/v3/open_im_sdk +// github.com/openimsdk/openim-sdk-core/v3/open_im_sdk_callback +// +// File is generated by gomobile bind. Do not edit. +#ifndef __OpenIMCore_FRAMEWORK_H__ +#define __OpenIMCore_FRAMEWORK_H__ + +#include "Open_im_sdk.objc.h" +#include "Open_im_sdk_callback.objc.h" +#include "Universe.objc.h" + +#endif diff --git a/Libs/OpenIMCore.framework/Versions/A/Headers/Open_im_sdk.objc.h b/Libs/OpenIMCore.framework/Versions/A/Headers/Open_im_sdk.objc.h new file mode 100644 index 0000000..303be54 --- /dev/null +++ b/Libs/OpenIMCore.framework/Versions/A/Headers/Open_im_sdk.objc.h @@ -0,0 +1,390 @@ +// Objective-C API for talking to github.com/openimsdk/openim-sdk-core/v3/open_im_sdk Go package. +// gobind -lang=objc github.com/openimsdk/openim-sdk-core/v3/open_im_sdk +// +// File is generated by gobind. Do not edit. + +#ifndef __Open_im_sdk_H__ +#define __Open_im_sdk_H__ + +@import Foundation; +#include "ref.h" +#include "Universe.objc.h" + +#include "Open_im_sdk_callback.objc.h" + +@class Open_im_sdkLoginMgr; + +@interface Open_im_sdkLoginMgr : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (nullable instancetype)init; +- (id _Nullable)advancedMsgListener; +- (id _Nullable)batchMsgListener; +- (id _Nullable)businessListener; +// skipped method LoginMgr.Context with unsupported parameter or return types + +// skipped method LoginMgr.Conversation with unsupported parameter or return types + +- (id _Nullable)conversationListener; +- (void)exit; +// skipped method LoginMgr.File with unsupported parameter or return types + +- (id _Nullable)friendshipListener; +// skipped method LoginMgr.GetLoginStatus with unsupported parameter or return types + +- (NSString* _Nonnull)getLoginUserID; +- (NSString* _Nonnull)getToken; +// skipped method LoginMgr.Group with unsupported parameter or return types + +- (id _Nullable)groupListener; +// skipped method LoginMgr.ImConfig with unsupported parameter or return types + +// skipped method LoginMgr.InitSDK with unsupported parameter or return types + +// skipped method LoginMgr.Login with unsupported parameter or return types + +// skipped method LoginMgr.Logout with unsupported parameter or return types + +// skipped method LoginMgr.LongConnMgr with unsupported parameter or return types + +- (id _Nullable)msgKvListener; +// skipped method LoginMgr.NetworkStatusChanged with unsupported parameter or return types + +// skipped method LoginMgr.Relation with unsupported parameter or return types + +- (void)setAdvancedMsgListener:(id _Nullable)advancedMsgListener; +// skipped method LoginMgr.SetAppBackgroundStatus with unsupported parameter or return types + +- (void)setBatchMsgListener:(id _Nullable)batchMsgListener; +- (void)setConversationListener:(id _Nullable)conversationListener; +- (void)setCustomBusinessListener:(id _Nullable)listener; +- (void)setFriendshipListener:(id _Nullable)friendshipListener; +- (void)setGroupListener:(id _Nullable)groupListener; +- (void)setMessageKvInfoListener:(id _Nullable)messageKvInfoListener; +- (void)setUserListener:(id _Nullable)userListener; +- (id _Nullable)signalingListener; +// skipped method LoginMgr.Third with unsupported parameter or return types + +- (void)unInitSDK; +// skipped method LoginMgr.User with unsupported parameter or return types + +- (id _Nullable)userListener; +@end + +FOUNDATION_EXPORT const int64_t Open_im_sdkLogged; +FOUNDATION_EXPORT const int64_t Open_im_sdkLogging; +FOUNDATION_EXPORT const int64_t Open_im_sdkLogoutStatus; +FOUNDATION_EXPORT NSString* _Nonnull const Open_im_sdkLogoutTips; + +@interface Open_im_sdk : NSObject ++ (NSError* _Nullable) errNotImplemented; ++ (void) setErrNotImplemented:(NSError* _Nullable)v; + +/** + * UserForSDK Client-independent user class + */ ++ (Open_im_sdkLoginMgr* _Nullable) userForSDK; ++ (void) setUserForSDK:(Open_im_sdkLoginMgr* _Nullable)v; + +@end + +FOUNDATION_EXPORT void Open_im_sdkAcceptFriendApplication(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userIDHandleMsg); + +FOUNDATION_EXPORT void Open_im_sdkAcceptGroupApplication(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, NSString* _Nullable fromUserID, NSString* _Nullable handleMsg); + +FOUNDATION_EXPORT void Open_im_sdkAddBlack(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable blackUserID, NSString* _Nullable ex); + +FOUNDATION_EXPORT void Open_im_sdkAddFriend(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userIDReqMsg); + +/** + * AddUserCommand add to user's favorite + */ +FOUNDATION_EXPORT void Open_im_sdkAddUserCommand(id _Nullable callback, NSString* _Nullable operationID, int32_t Type, NSString* _Nullable uuid, NSString* _Nullable value); + +FOUNDATION_EXPORT void Open_im_sdkChangeGroupMemberMute(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, NSString* _Nullable userID, long mutedSeconds); + +FOUNDATION_EXPORT void Open_im_sdkChangeGroupMute(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, BOOL isMute); + +FOUNDATION_EXPORT void Open_im_sdkChangeInputStates(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID, BOOL focus); + +FOUNDATION_EXPORT void Open_im_sdkCheckFriend(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userIDList); + +/** + * CheckResourceLoad checks the SDK is resource load status. + */ +FOUNDATION_EXPORT BOOL Open_im_sdkCheckResourceLoad(Open_im_sdkLoginMgr* _Nullable uSDK, NSString* _Nullable funcName, NSError* _Nullable* _Nullable error); + +FOUNDATION_EXPORT void Open_im_sdkClearConversationAndDeleteAllMsg(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateAdvancedQuoteMessage(NSString* _Nullable operationID, NSString* _Nullable text, NSString* _Nullable message, NSString* _Nullable messageEntityList); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateAdvancedTextMessage(NSString* _Nullable operationID, NSString* _Nullable text, NSString* _Nullable messageEntityList); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateCardMessage(NSString* _Nullable operationID, NSString* _Nullable cardInfo); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateCustomMessage(NSString* _Nullable operationID, NSString* _Nullable data, NSString* _Nullable extension, NSString* _Nullable description); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateFaceMessage(NSString* _Nullable operationID, long index, NSString* _Nullable data); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateFileMessage(NSString* _Nullable operationID, NSString* _Nullable filePath, NSString* _Nullable fileName); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateFileMessageByURL(NSString* _Nullable operationID, NSString* _Nullable fileBaseInfo); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateFileMessageFromFullPath(NSString* _Nullable operationID, NSString* _Nullable fileFullPath, NSString* _Nullable fileName); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateForwardMessage(NSString* _Nullable operationID, NSString* _Nullable m); + +FOUNDATION_EXPORT void Open_im_sdkCreateGroup(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupReqInfo); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateImageMessage(NSString* _Nullable operationID, NSString* _Nullable imagePath); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateImageMessageByURL(NSString* _Nullable operationID, NSString* _Nullable sourcePath, NSString* _Nullable sourcePicture, NSString* _Nullable bigPicture, NSString* _Nullable snapshotPicture); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateImageMessageFromFullPath(NSString* _Nullable operationID, NSString* _Nullable imageFullPath); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateLocationMessage(NSString* _Nullable operationID, NSString* _Nullable description, double longitude, double latitude); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateMergerMessage(NSString* _Nullable operationID, NSString* _Nullable messageList, NSString* _Nullable title, NSString* _Nullable summaryList); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateQuoteMessage(NSString* _Nullable operationID, NSString* _Nullable text, NSString* _Nullable message); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateSoundMessage(NSString* _Nullable operationID, NSString* _Nullable soundPath, int64_t duration); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateSoundMessageByURL(NSString* _Nullable operationID, NSString* _Nullable soundBaseInfo); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateSoundMessageFromFullPath(NSString* _Nullable operationID, NSString* _Nullable soundPath, int64_t duration); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateTextAtMessage(NSString* _Nullable operationID, NSString* _Nullable text, NSString* _Nullable atUserList, NSString* _Nullable atUsersInfo, NSString* _Nullable message); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateTextMessage(NSString* _Nullable operationID, NSString* _Nullable text); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateVideoMessage(NSString* _Nullable operationID, NSString* _Nullable videoPath, NSString* _Nullable videoType, int64_t duration, NSString* _Nullable snapshotPath); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateVideoMessageByURL(NSString* _Nullable operationID, NSString* _Nullable videoBaseInfo); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkCreateVideoMessageFromFullPath(NSString* _Nullable operationID, NSString* _Nullable videoFullPath, NSString* _Nullable videoType, int64_t duration, NSString* _Nullable snapshotFullPath); + +FOUNDATION_EXPORT void Open_im_sdkDeleteAllMsgFromLocal(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkDeleteAllMsgFromLocalAndSvr(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkDeleteConversationAndDeleteAllMsg(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID); + +FOUNDATION_EXPORT void Open_im_sdkDeleteFriend(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable friendUserID); + +FOUNDATION_EXPORT void Open_im_sdkDeleteMessage(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID, NSString* _Nullable clientMsgID); + +FOUNDATION_EXPORT void Open_im_sdkDeleteMessageFromLocalStorage(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID, NSString* _Nullable clientMsgID); + +/** + * DeleteUserCommand delete from user's favorite + */ +FOUNDATION_EXPORT void Open_im_sdkDeleteUserCommand(id _Nullable callback, NSString* _Nullable operationID, int32_t Type, NSString* _Nullable uuid); + +FOUNDATION_EXPORT void Open_im_sdkDismissGroup(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID); + +FOUNDATION_EXPORT void Open_im_sdkFindMessageList(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable findMessageOptions); + +FOUNDATION_EXPORT void Open_im_sdkGetAdvancedHistoryMessageList(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable getMessageOptions); + +FOUNDATION_EXPORT void Open_im_sdkGetAdvancedHistoryMessageListReverse(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable getMessageOptions); + +FOUNDATION_EXPORT void Open_im_sdkGetAllConversationList(id _Nullable callback, NSString* _Nullable operationID); + +/** + * GetAllUserCommands get user's favorite + */ +FOUNDATION_EXPORT void Open_im_sdkGetAllUserCommands(id _Nullable callback, NSString* _Nullable operationID, int32_t Type); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkGetAtAllTag(NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkGetBlackList(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkGetConversationIDBySessionType(NSString* _Nullable operationID, NSString* _Nullable sourceID, long sessionType); + +FOUNDATION_EXPORT void Open_im_sdkGetConversationListSplit(id _Nullable callback, NSString* _Nullable operationID, long offset, long count); + +FOUNDATION_EXPORT void Open_im_sdkGetFriendApplicationListAsApplicant(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkGetFriendApplicationListAsRecipient(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkGetFriendList(id _Nullable callback, NSString* _Nullable operationID, BOOL filterBlack); + +FOUNDATION_EXPORT void Open_im_sdkGetFriendListPage(id _Nullable callback, NSString* _Nullable operationID, int32_t offset, int32_t count, BOOL filterBlack); + +FOUNDATION_EXPORT void Open_im_sdkGetGroupApplicationListAsApplicant(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkGetGroupApplicationListAsRecipient(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkGetGroupMemberList(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, int32_t filter, int32_t offset, int32_t count); + +FOUNDATION_EXPORT void Open_im_sdkGetGroupMemberListByJoinTimeFilter(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, int32_t offset, int32_t count, int64_t joinTimeBegin, int64_t joinTimeEnd, NSString* _Nullable filterUserIDList); + +FOUNDATION_EXPORT void Open_im_sdkGetGroupMemberOwnerAndAdmin(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID); + +FOUNDATION_EXPORT void Open_im_sdkGetInputStates(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID, NSString* _Nullable userID); + +FOUNDATION_EXPORT void Open_im_sdkGetJoinedGroupList(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkGetJoinedGroupListPage(id _Nullable callback, NSString* _Nullable operationID, int32_t offset, int32_t count); + +FOUNDATION_EXPORT long Open_im_sdkGetLoginStatus(NSString* _Nullable operationID); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkGetLoginUserID(void); + +FOUNDATION_EXPORT void Open_im_sdkGetMultipleConversation(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationIDList); + +FOUNDATION_EXPORT void Open_im_sdkGetOneConversation(id _Nullable callback, NSString* _Nullable operationID, int32_t sessionType, NSString* _Nullable sourceID); + +FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkGetSdkVersion(void); + +/** + * GetSelfUserInfo obtains the user's own information. + */ +FOUNDATION_EXPORT void Open_im_sdkGetSelfUserInfo(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkGetSpecifiedFriendsInfo(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userIDList, BOOL filterBlack); + +FOUNDATION_EXPORT void Open_im_sdkGetSpecifiedGroupMembersInfo(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, NSString* _Nullable userIDList); + +FOUNDATION_EXPORT void Open_im_sdkGetSpecifiedGroupsInfo(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupIDList); + +/** + * GetSubscribeUsersStatus Get the online status of subscribers. + */ +FOUNDATION_EXPORT void Open_im_sdkGetSubscribeUsersStatus(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkGetTotalUnreadMsgCount(id _Nullable callback, NSString* _Nullable operationID); + +/** + * GetUserStatus Get the online status of users. + */ +FOUNDATION_EXPORT void Open_im_sdkGetUserStatus(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userIDs); + +FOUNDATION_EXPORT void Open_im_sdkGetUsersInGroup(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, NSString* _Nullable userIDList); + +FOUNDATION_EXPORT void Open_im_sdkGetUsersInfo(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userIDs); + +FOUNDATION_EXPORT void Open_im_sdkHideAllConversations(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkHideConversation(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID); + +FOUNDATION_EXPORT BOOL Open_im_sdkInitSDK(id _Nullable listener, NSString* _Nullable operationID, NSString* _Nullable config); + +FOUNDATION_EXPORT void Open_im_sdkInsertGroupMessageToLocalStorage(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable message, NSString* _Nullable groupID, NSString* _Nullable sendID); + +FOUNDATION_EXPORT void Open_im_sdkInsertSingleMessageToLocalStorage(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable message, NSString* _Nullable recvID, NSString* _Nullable sendID); + +FOUNDATION_EXPORT void Open_im_sdkInviteUserToGroup(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, NSString* _Nullable reason, NSString* _Nullable userIDList); + +FOUNDATION_EXPORT void Open_im_sdkIsJoinGroup(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID); + +FOUNDATION_EXPORT void Open_im_sdkJoinGroup(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, NSString* _Nullable reqMsg, int32_t joinSource, NSString* _Nullable ex); + +FOUNDATION_EXPORT void Open_im_sdkKickGroupMember(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, NSString* _Nullable reason, NSString* _Nullable userIDList); + +FOUNDATION_EXPORT void Open_im_sdkLogin(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userID, NSString* _Nullable token); + +FOUNDATION_EXPORT void Open_im_sdkLogout(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT void Open_im_sdkLogs(id _Nullable callback, NSString* _Nullable operationID, long logLevel, NSString* _Nullable file, long line, NSString* _Nullable msgs, NSString* _Nullable err, NSString* _Nullable keyAndValue); + +FOUNDATION_EXPORT void Open_im_sdkMarkAllConversationMessageAsRead(id _Nullable callback, NSString* _Nullable operationID); + +/** + * mark as read + */ +FOUNDATION_EXPORT void Open_im_sdkMarkConversationMessageAsRead(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID); + +FOUNDATION_EXPORT void Open_im_sdkMarkMessagesAsReadByMsgID(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID, NSString* _Nullable clientMsgIDs); + +FOUNDATION_EXPORT void Open_im_sdkNetworkStatusChanged(id _Nullable callback, NSString* _Nullable operationID); + +FOUNDATION_EXPORT Open_im_sdkLoginMgr* _Nullable Open_im_sdkNewLoginMgr(void); + +FOUNDATION_EXPORT void Open_im_sdkQuitGroup(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID); + +FOUNDATION_EXPORT void Open_im_sdkRefuseFriendApplication(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userIDHandleMsg); + +FOUNDATION_EXPORT void Open_im_sdkRefuseGroupApplication(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, NSString* _Nullable fromUserID, NSString* _Nullable handleMsg); + +FOUNDATION_EXPORT void Open_im_sdkRemoveBlack(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable removeUserID); + +FOUNDATION_EXPORT void Open_im_sdkRevokeMessage(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID, NSString* _Nullable clientMsgID); + +FOUNDATION_EXPORT void Open_im_sdkSearchConversation(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam); + +FOUNDATION_EXPORT void Open_im_sdkSearchFriends(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam); + +FOUNDATION_EXPORT void Open_im_sdkSearchGroupMembers(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam); + +FOUNDATION_EXPORT void Open_im_sdkSearchGroups(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam); + +FOUNDATION_EXPORT void Open_im_sdkSearchLocalMessages(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam); + +FOUNDATION_EXPORT void Open_im_sdkSendMessage(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable message, NSString* _Nullable recvID, NSString* _Nullable groupID, NSString* _Nullable offlinePushInfo, BOOL isOnlineOnly); + +FOUNDATION_EXPORT void Open_im_sdkSendMessageNotOss(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable message, NSString* _Nullable recvID, NSString* _Nullable groupID, NSString* _Nullable offlinePushInfo, BOOL isOnlineOnly); + +FOUNDATION_EXPORT void Open_im_sdkSetAdvancedMsgListener(id _Nullable listener); + +FOUNDATION_EXPORT void Open_im_sdkSetAppBackgroundStatus(id _Nullable callback, NSString* _Nullable operationID, BOOL isBackground); + +FOUNDATION_EXPORT void Open_im_sdkSetAppBadge(id _Nullable callback, NSString* _Nullable operationID, int32_t appUnreadCount); + +FOUNDATION_EXPORT void Open_im_sdkSetBatchMsgListener(id _Nullable listener); + +FOUNDATION_EXPORT void Open_im_sdkSetConversation(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID, NSString* _Nullable req); + +FOUNDATION_EXPORT void Open_im_sdkSetConversationDraft(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID, NSString* _Nullable draftText); + +FOUNDATION_EXPORT void Open_im_sdkSetConversationListener(id _Nullable listener); + +FOUNDATION_EXPORT void Open_im_sdkSetCustomBusinessListener(id _Nullable listener); + +FOUNDATION_EXPORT void Open_im_sdkSetFriendListener(id _Nullable listener); + +FOUNDATION_EXPORT void Open_im_sdkSetGroupInfo(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupInfo); + +FOUNDATION_EXPORT void Open_im_sdkSetGroupListener(id _Nullable listener); + +FOUNDATION_EXPORT void Open_im_sdkSetGroupMemberInfo(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupMemberInfo); + +FOUNDATION_EXPORT void Open_im_sdkSetMessageKvInfoListener(id _Nullable listener); + +FOUNDATION_EXPORT void Open_im_sdkSetMessageLocalEx(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationID, NSString* _Nullable clientMsgID, NSString* _Nullable localEx); + +/** + * SetSelfInfo sets the user's own information. + */ +FOUNDATION_EXPORT void Open_im_sdkSetSelfInfo(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userInfo); + +FOUNDATION_EXPORT void Open_im_sdkSetUserListener(id _Nullable listener); + +/** + * SubscribeUsersStatus Presence status of subscribed users. + */ +FOUNDATION_EXPORT void Open_im_sdkSubscribeUsersStatus(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userIDs); + +FOUNDATION_EXPORT void Open_im_sdkTransferGroupOwner(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable groupID, NSString* _Nullable newOwnerUserID); + +FOUNDATION_EXPORT void Open_im_sdkTypingStatusUpdate(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable recvID, NSString* _Nullable msgTip); + +FOUNDATION_EXPORT void Open_im_sdkUnInitSDK(NSString* _Nullable operationID); + +/** + * UnsubscribeUsersStatus Unsubscribe a user's presence. + */ +FOUNDATION_EXPORT void Open_im_sdkUnsubscribeUsersStatus(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable userIDs); + +FOUNDATION_EXPORT void Open_im_sdkUpdateFcmToken(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable fcmToken, int64_t expireTime); + +FOUNDATION_EXPORT void Open_im_sdkUpdateFriends(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable req); + +FOUNDATION_EXPORT void Open_im_sdkUploadFile(id _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable req, id _Nullable progress); + +FOUNDATION_EXPORT void Open_im_sdkUploadLogs(id _Nullable callback, NSString* _Nullable operationID, long line, NSString* _Nullable ex, id _Nullable progress); + +#endif diff --git a/Libs/OpenIMCore.framework/Versions/A/Headers/Open_im_sdk_callback.objc.h b/Libs/OpenIMCore.framework/Versions/A/Headers/Open_im_sdk_callback.objc.h new file mode 100644 index 0000000..535a1a5 --- /dev/null +++ b/Libs/OpenIMCore.framework/Versions/A/Headers/Open_im_sdk_callback.objc.h @@ -0,0 +1,512 @@ +// Objective-C API for talking to github.com/openimsdk/openim-sdk-core/v3/open_im_sdk_callback Go package. +// gobind -lang=objc github.com/openimsdk/openim-sdk-core/v3/open_im_sdk_callback +// +// File is generated by gobind. Do not edit. + +#ifndef __Open_im_sdk_callback_H__ +#define __Open_im_sdk_callback_H__ + +@import Foundation; +#include "ref.h" +#include "Universe.objc.h" + + +@protocol Open_im_sdk_callbackBase; +@class Open_im_sdk_callbackBase; +@protocol Open_im_sdk_callbackOnAdvancedMsgListener; +@class Open_im_sdk_callbackOnAdvancedMsgListener; +@protocol Open_im_sdk_callbackOnBatchMsgListener; +@class Open_im_sdk_callbackOnBatchMsgListener; +@protocol Open_im_sdk_callbackOnConnListener; +@class Open_im_sdk_callbackOnConnListener; +@protocol Open_im_sdk_callbackOnConversationListener; +@class Open_im_sdk_callbackOnConversationListener; +@protocol Open_im_sdk_callbackOnCustomBusinessListener; +@class Open_im_sdk_callbackOnCustomBusinessListener; +@protocol Open_im_sdk_callbackOnFriendshipListener; +@class Open_im_sdk_callbackOnFriendshipListener; +@protocol Open_im_sdk_callbackOnFriendshipListenerSdk; +@class Open_im_sdk_callbackOnFriendshipListenerSdk; +@protocol Open_im_sdk_callbackOnGroupListener; +@class Open_im_sdk_callbackOnGroupListener; +@protocol Open_im_sdk_callbackOnListenerForService; +@class Open_im_sdk_callbackOnListenerForService; +@protocol Open_im_sdk_callbackOnMessageKvInfoListener; +@class Open_im_sdk_callbackOnMessageKvInfoListener; +@protocol Open_im_sdk_callbackOnSignalingListener; +@class Open_im_sdk_callbackOnSignalingListener; +@protocol Open_im_sdk_callbackOnUserListener; +@class Open_im_sdk_callbackOnUserListener; +@protocol Open_im_sdk_callbackSendMsgCallBack; +@class Open_im_sdk_callbackSendMsgCallBack; +@protocol Open_im_sdk_callbackUploadFileCallback; +@class Open_im_sdk_callbackUploadFileCallback; +@protocol Open_im_sdk_callbackUploadLogProgress; +@class Open_im_sdk_callbackUploadLogProgress; + +@protocol Open_im_sdk_callbackBase +- (void)onError:(int32_t)errCode errMsg:(NSString* _Nullable)errMsg; +- (void)onSuccess:(NSString* _Nullable)data; +@end + +@protocol Open_im_sdk_callbackOnAdvancedMsgListener +- (void)onMsgDeleted:(NSString* _Nullable)message; +- (void)onNewRecvMessageRevoked:(NSString* _Nullable)messageRevoked; +- (void)onRecvC2CReadReceipt:(NSString* _Nullable)msgReceiptList; +- (void)onRecvNewMessage:(NSString* _Nullable)message; +- (void)onRecvOfflineNewMessage:(NSString* _Nullable)message; +- (void)onRecvOnlineOnlyMessage:(NSString* _Nullable)message; +@end + +@protocol Open_im_sdk_callbackOnBatchMsgListener +- (void)onRecvNewMessages:(NSString* _Nullable)messageList; +- (void)onRecvOfflineNewMessages:(NSString* _Nullable)messageList; +@end + +@protocol Open_im_sdk_callbackOnConnListener +- (void)onConnectFailed:(int32_t)errCode errMsg:(NSString* _Nullable)errMsg; +- (void)onConnectSuccess; +- (void)onConnecting; +- (void)onKickedOffline; +- (void)onUserTokenExpired; +- (void)onUserTokenInvalid:(NSString* _Nullable)errMsg; +@end + +@protocol Open_im_sdk_callbackOnConversationListener +- (void)onConversationChanged:(NSString* _Nullable)conversationList; +- (void)onConversationUserInputStatusChanged:(NSString* _Nullable)change; +- (void)onNewConversation:(NSString* _Nullable)conversationList; +- (void)onSyncServerFailed:(BOOL)reinstalled; +- (void)onSyncServerFinish:(BOOL)reinstalled; +- (void)onSyncServerProgress:(long)progress; +- (void)onSyncServerStart:(BOOL)reinstalled; +- (void)onTotalUnreadMessageCountChanged:(int32_t)totalUnreadCount; +@end + +@protocol Open_im_sdk_callbackOnCustomBusinessListener +- (void)onRecvCustomBusinessMessage:(NSString* _Nullable)businessMessage; +@end + +@protocol Open_im_sdk_callbackOnFriendshipListener +- (void)onBlackAdded:(NSString* _Nullable)blackInfo; +- (void)onBlackDeleted:(NSString* _Nullable)blackInfo; +- (void)onFriendAdded:(NSString* _Nullable)friendInfo; +- (void)onFriendApplicationAccepted:(NSString* _Nullable)friendApplication; +- (void)onFriendApplicationAdded:(NSString* _Nullable)friendApplication; +- (void)onFriendApplicationDeleted:(NSString* _Nullable)friendApplication; +- (void)onFriendApplicationRejected:(NSString* _Nullable)friendApplication; +- (void)onFriendDeleted:(NSString* _Nullable)friendInfo; +- (void)onFriendInfoChanged:(NSString* _Nullable)friendInfo; +@end + +@protocol Open_im_sdk_callbackOnFriendshipListenerSdk +// skipped method OnFriendshipListenerSdk.OnBlackAdded with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnBlackDeleted with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendAdded with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendApplicationAccepted with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendApplicationAdded with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendApplicationDeleted with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendApplicationRejected with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendDeleted with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendInfoChanged with unsupported parameter or return types + +@end + +@protocol Open_im_sdk_callbackOnGroupListener +- (void)onGroupApplicationAccepted:(NSString* _Nullable)groupApplication; +- (void)onGroupApplicationAdded:(NSString* _Nullable)groupApplication; +- (void)onGroupApplicationDeleted:(NSString* _Nullable)groupApplication; +- (void)onGroupApplicationRejected:(NSString* _Nullable)groupApplication; +- (void)onGroupDismissed:(NSString* _Nullable)groupInfo; +- (void)onGroupInfoChanged:(NSString* _Nullable)groupInfo; +- (void)onGroupMemberAdded:(NSString* _Nullable)groupMemberInfo; +- (void)onGroupMemberDeleted:(NSString* _Nullable)groupMemberInfo; +- (void)onGroupMemberInfoChanged:(NSString* _Nullable)groupMemberInfo; +- (void)onJoinedGroupAdded:(NSString* _Nullable)groupInfo; +- (void)onJoinedGroupDeleted:(NSString* _Nullable)groupInfo; +@end + +@protocol Open_im_sdk_callbackOnListenerForService +/** + * OnFriendApplicationAccepted Friend request has been accepted + */ +- (void)onFriendApplicationAccepted:(NSString* _Nullable)friendApplication; +/** + * OnFriendApplicationAdded Someone applied to add you as a friend + */ +- (void)onFriendApplicationAdded:(NSString* _Nullable)friendApplication; +/** + * OnGroupApplicationAccepted Group join application has been accepted + */ +- (void)onGroupApplicationAccepted:(NSString* _Nullable)groupApplication; +/** + * OnGroupApplicationAdded Someone applied to join a group + */ +- (void)onGroupApplicationAdded:(NSString* _Nullable)groupApplication; +/** + * OnRecvNewMessage Received a new message + */ +- (void)onRecvNewMessage:(NSString* _Nullable)message; +@end + +@protocol Open_im_sdk_callbackOnMessageKvInfoListener +- (void)onMessageKvInfoChanged:(NSString* _Nullable)messageChangedList; +@end + +@protocol Open_im_sdk_callbackOnSignalingListener +- (void)onHangUp:(NSString* _Nullable)hangUpCallback; +- (void)onInvitationCancelled:(NSString* _Nullable)invitationCancelledCallback; +- (void)onInvitationTimeout:(NSString* _Nullable)invitationTimeoutCallback; +- (void)onInviteeAccepted:(NSString* _Nullable)inviteeAcceptedCallback; +- (void)onInviteeAcceptedByOtherDevice:(NSString* _Nullable)inviteeAcceptedCallback; +- (void)onInviteeRejected:(NSString* _Nullable)inviteeRejectedCallback; +- (void)onInviteeRejectedByOtherDevice:(NSString* _Nullable)inviteeRejectedCallback; +- (void)onReceiveNewInvitation:(NSString* _Nullable)receiveNewInvitationCallback; +- (void)onRoomParticipantConnected:(NSString* _Nullable)onRoomParticipantConnectedCallback; +- (void)onRoomParticipantDisconnected:(NSString* _Nullable)onRoomParticipantDisconnectedCallback; +@end + +@protocol Open_im_sdk_callbackOnUserListener +- (void)onSelfInfoUpdated:(NSString* _Nullable)userInfo; +- (void)onUserCommandAdd:(NSString* _Nullable)userCommand; +- (void)onUserCommandDelete:(NSString* _Nullable)userCommand; +- (void)onUserCommandUpdate:(NSString* _Nullable)userCommand; +- (void)onUserStatusChanged:(NSString* _Nullable)userOnlineStatus; +@end + +@protocol Open_im_sdk_callbackSendMsgCallBack +- (void)onError:(int32_t)errCode errMsg:(NSString* _Nullable)errMsg; +- (void)onProgress:(long)progress; +- (void)onSuccess:(NSString* _Nullable)data; +@end + +@protocol Open_im_sdk_callbackUploadFileCallback +/** + * Complete The file upload is complete, providing the final size, URL, and type of the file + */ +- (void)complete:(int64_t)size url:(NSString* _Nullable)url typ:(long)typ; +/** + * HashPartComplete All parts have been hashed, providing the combined hash of all parts and the final file hash + */ +- (void)hashPartComplete:(NSString* _Nullable)partsHash fileHash:(NSString* _Nullable)fileHash; +/** + * HashPartProgress Progress of hashing each part, including the part index, size, and hash value + */ +- (void)hashPartProgress:(long)index size:(int64_t)size partHash:(NSString* _Nullable)partHash; +/** + * Open a file with a given size + */ +- (void)open:(int64_t)size; +/** + * PartSize Set the size of each part and the total number of parts + */ +- (void)partSize:(int64_t)partSize num:(long)num; +/** + * UploadComplete The entire file upload progress, including the file size, stream size, and storage size + */ +- (void)uploadComplete:(int64_t)fileSize streamSize:(int64_t)streamSize storageSize:(int64_t)storageSize; +/** + * UploadID Upload ID is generated and provided + */ +- (void)uploadID:(NSString* _Nullable)uploadID; +/** + * UploadPartComplete A specific part has completed uploading, providing the part index, size, and hash value + */ +- (void)uploadPartComplete:(long)index partSize:(int64_t)partSize partHash:(NSString* _Nullable)partHash; +@end + +@protocol Open_im_sdk_callbackUploadLogProgress +- (void)onProgress:(int64_t)current size:(int64_t)size; +@end + +// skipped function NewOnFriendshipListenerSdk with unsupported parameter or return types + + +@class Open_im_sdk_callbackBase; + +@class Open_im_sdk_callbackOnAdvancedMsgListener; + +@class Open_im_sdk_callbackOnBatchMsgListener; + +@class Open_im_sdk_callbackOnConnListener; + +@class Open_im_sdk_callbackOnConversationListener; + +@class Open_im_sdk_callbackOnCustomBusinessListener; + +@class Open_im_sdk_callbackOnFriendshipListener; + +@class Open_im_sdk_callbackOnFriendshipListenerSdk; + +@class Open_im_sdk_callbackOnGroupListener; + +@class Open_im_sdk_callbackOnListenerForService; + +@class Open_im_sdk_callbackOnMessageKvInfoListener; + +@class Open_im_sdk_callbackOnSignalingListener; + +@class Open_im_sdk_callbackOnUserListener; + +@class Open_im_sdk_callbackSendMsgCallBack; + +@class Open_im_sdk_callbackUploadFileCallback; + +@class Open_im_sdk_callbackUploadLogProgress; + +@interface Open_im_sdk_callbackBase : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onError:(int32_t)errCode errMsg:(NSString* _Nullable)errMsg; +- (void)onSuccess:(NSString* _Nullable)data; +@end + +@interface Open_im_sdk_callbackOnAdvancedMsgListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onMsgDeleted:(NSString* _Nullable)message; +- (void)onNewRecvMessageRevoked:(NSString* _Nullable)messageRevoked; +- (void)onRecvC2CReadReceipt:(NSString* _Nullable)msgReceiptList; +- (void)onRecvNewMessage:(NSString* _Nullable)message; +- (void)onRecvOfflineNewMessage:(NSString* _Nullable)message; +- (void)onRecvOnlineOnlyMessage:(NSString* _Nullable)message; +@end + +@interface Open_im_sdk_callbackOnBatchMsgListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onRecvNewMessages:(NSString* _Nullable)messageList; +- (void)onRecvOfflineNewMessages:(NSString* _Nullable)messageList; +@end + +@interface Open_im_sdk_callbackOnConnListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onConnectFailed:(int32_t)errCode errMsg:(NSString* _Nullable)errMsg; +- (void)onConnectSuccess; +- (void)onConnecting; +- (void)onKickedOffline; +- (void)onUserTokenExpired; +- (void)onUserTokenInvalid:(NSString* _Nullable)errMsg; +@end + +@interface Open_im_sdk_callbackOnConversationListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onConversationChanged:(NSString* _Nullable)conversationList; +- (void)onConversationUserInputStatusChanged:(NSString* _Nullable)change; +- (void)onNewConversation:(NSString* _Nullable)conversationList; +- (void)onSyncServerFailed:(BOOL)reinstalled; +- (void)onSyncServerFinish:(BOOL)reinstalled; +- (void)onSyncServerProgress:(long)progress; +- (void)onSyncServerStart:(BOOL)reinstalled; +- (void)onTotalUnreadMessageCountChanged:(int32_t)totalUnreadCount; +@end + +@interface Open_im_sdk_callbackOnCustomBusinessListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onRecvCustomBusinessMessage:(NSString* _Nullable)businessMessage; +@end + +@interface Open_im_sdk_callbackOnFriendshipListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onBlackAdded:(NSString* _Nullable)blackInfo; +- (void)onBlackDeleted:(NSString* _Nullable)blackInfo; +- (void)onFriendAdded:(NSString* _Nullable)friendInfo; +- (void)onFriendApplicationAccepted:(NSString* _Nullable)friendApplication; +- (void)onFriendApplicationAdded:(NSString* _Nullable)friendApplication; +- (void)onFriendApplicationDeleted:(NSString* _Nullable)friendApplication; +- (void)onFriendApplicationRejected:(NSString* _Nullable)friendApplication; +- (void)onFriendDeleted:(NSString* _Nullable)friendInfo; +- (void)onFriendInfoChanged:(NSString* _Nullable)friendInfo; +@end + +@interface Open_im_sdk_callbackOnFriendshipListenerSdk : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +// skipped method OnFriendshipListenerSdk.OnBlackAdded with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnBlackDeleted with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendAdded with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendApplicationAccepted with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendApplicationAdded with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendApplicationDeleted with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendApplicationRejected with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendDeleted with unsupported parameter or return types + +// skipped method OnFriendshipListenerSdk.OnFriendInfoChanged with unsupported parameter or return types + +@end + +@interface Open_im_sdk_callbackOnGroupListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onGroupApplicationAccepted:(NSString* _Nullable)groupApplication; +- (void)onGroupApplicationAdded:(NSString* _Nullable)groupApplication; +- (void)onGroupApplicationDeleted:(NSString* _Nullable)groupApplication; +- (void)onGroupApplicationRejected:(NSString* _Nullable)groupApplication; +- (void)onGroupDismissed:(NSString* _Nullable)groupInfo; +- (void)onGroupInfoChanged:(NSString* _Nullable)groupInfo; +- (void)onGroupMemberAdded:(NSString* _Nullable)groupMemberInfo; +- (void)onGroupMemberDeleted:(NSString* _Nullable)groupMemberInfo; +- (void)onGroupMemberInfoChanged:(NSString* _Nullable)groupMemberInfo; +- (void)onJoinedGroupAdded:(NSString* _Nullable)groupInfo; +- (void)onJoinedGroupDeleted:(NSString* _Nullable)groupInfo; +@end + +@interface Open_im_sdk_callbackOnListenerForService : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +/** + * OnFriendApplicationAccepted Friend request has been accepted + */ +- (void)onFriendApplicationAccepted:(NSString* _Nullable)friendApplication; +/** + * OnFriendApplicationAdded Someone applied to add you as a friend + */ +- (void)onFriendApplicationAdded:(NSString* _Nullable)friendApplication; +/** + * OnGroupApplicationAccepted Group join application has been accepted + */ +- (void)onGroupApplicationAccepted:(NSString* _Nullable)groupApplication; +/** + * OnGroupApplicationAdded Someone applied to join a group + */ +- (void)onGroupApplicationAdded:(NSString* _Nullable)groupApplication; +/** + * OnRecvNewMessage Received a new message + */ +- (void)onRecvNewMessage:(NSString* _Nullable)message; +@end + +@interface Open_im_sdk_callbackOnMessageKvInfoListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onMessageKvInfoChanged:(NSString* _Nullable)messageChangedList; +@end + +@interface Open_im_sdk_callbackOnSignalingListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onHangUp:(NSString* _Nullable)hangUpCallback; +- (void)onInvitationCancelled:(NSString* _Nullable)invitationCancelledCallback; +- (void)onInvitationTimeout:(NSString* _Nullable)invitationTimeoutCallback; +- (void)onInviteeAccepted:(NSString* _Nullable)inviteeAcceptedCallback; +- (void)onInviteeAcceptedByOtherDevice:(NSString* _Nullable)inviteeAcceptedCallback; +- (void)onInviteeRejected:(NSString* _Nullable)inviteeRejectedCallback; +- (void)onInviteeRejectedByOtherDevice:(NSString* _Nullable)inviteeRejectedCallback; +- (void)onReceiveNewInvitation:(NSString* _Nullable)receiveNewInvitationCallback; +- (void)onRoomParticipantConnected:(NSString* _Nullable)onRoomParticipantConnectedCallback; +- (void)onRoomParticipantDisconnected:(NSString* _Nullable)onRoomParticipantDisconnectedCallback; +@end + +@interface Open_im_sdk_callbackOnUserListener : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onSelfInfoUpdated:(NSString* _Nullable)userInfo; +- (void)onUserCommandAdd:(NSString* _Nullable)userCommand; +- (void)onUserCommandDelete:(NSString* _Nullable)userCommand; +- (void)onUserCommandUpdate:(NSString* _Nullable)userCommand; +- (void)onUserStatusChanged:(NSString* _Nullable)userOnlineStatus; +@end + +@interface Open_im_sdk_callbackSendMsgCallBack : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onError:(int32_t)errCode errMsg:(NSString* _Nullable)errMsg; +- (void)onProgress:(long)progress; +- (void)onSuccess:(NSString* _Nullable)data; +@end + +@interface Open_im_sdk_callbackUploadFileCallback : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +/** + * Complete The file upload is complete, providing the final size, URL, and type of the file + */ +- (void)complete:(int64_t)size url:(NSString* _Nullable)url typ:(long)typ; +/** + * HashPartComplete All parts have been hashed, providing the combined hash of all parts and the final file hash + */ +- (void)hashPartComplete:(NSString* _Nullable)partsHash fileHash:(NSString* _Nullable)fileHash; +/** + * HashPartProgress Progress of hashing each part, including the part index, size, and hash value + */ +- (void)hashPartProgress:(long)index size:(int64_t)size partHash:(NSString* _Nullable)partHash; +/** + * Open a file with a given size + */ +- (void)open:(int64_t)size; +/** + * PartSize Set the size of each part and the total number of parts + */ +- (void)partSize:(int64_t)partSize num:(long)num; +/** + * UploadComplete The entire file upload progress, including the file size, stream size, and storage size + */ +- (void)uploadComplete:(int64_t)fileSize streamSize:(int64_t)streamSize storageSize:(int64_t)storageSize; +/** + * UploadID Upload ID is generated and provided + */ +- (void)uploadID:(NSString* _Nullable)uploadID; +/** + * UploadPartComplete A specific part has completed uploading, providing the part index, size, and hash value + */ +- (void)uploadPartComplete:(long)index partSize:(int64_t)partSize partHash:(NSString* _Nullable)partHash; +@end + +@interface Open_im_sdk_callbackUploadLogProgress : NSObject { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (void)onProgress:(int64_t)current size:(int64_t)size; +@end + +#endif diff --git a/Libs/OpenIMCore.framework/Versions/A/Headers/Universe.objc.h b/Libs/OpenIMCore.framework/Versions/A/Headers/Universe.objc.h new file mode 100644 index 0000000..019e750 --- /dev/null +++ b/Libs/OpenIMCore.framework/Versions/A/Headers/Universe.objc.h @@ -0,0 +1,29 @@ +// Objective-C API for talking to Go package. +// gobind -lang=objc +// +// File is generated by gobind. Do not edit. + +#ifndef __Universe_H__ +#define __Universe_H__ + +@import Foundation; +#include "ref.h" + +@protocol Universeerror; +@class Universeerror; + +@protocol Universeerror +- (NSString* _Nonnull)error; +@end + +@class Universeerror; + +@interface Universeerror : NSError { +} +@property(strong, readonly) _Nonnull id _ref; + +- (nonnull instancetype)initWithRef:(_Nonnull id)ref; +- (NSString* _Nonnull)error; +@end + +#endif diff --git a/Libs/OpenIMCore.framework/Versions/A/Headers/ref.h b/Libs/OpenIMCore.framework/Versions/A/Headers/ref.h new file mode 100644 index 0000000..b8036a4 --- /dev/null +++ b/Libs/OpenIMCore.framework/Versions/A/Headers/ref.h @@ -0,0 +1,35 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#ifndef __GO_REF_HDR__ +#define __GO_REF_HDR__ + +#include + +// GoSeqRef is an object tagged with an integer for passing back and +// forth across the language boundary. A GoSeqRef may represent either +// an instance of a Go object, or an Objective-C object passed to Go. +// The explicit allocation of a GoSeqRef is used to pin a Go object +// when it is passed to Objective-C. The Go seq package maintains a +// reference to the Go object in a map keyed by the refnum along with +// a reference count. When the reference count reaches zero, the Go +// seq package will clear the corresponding entry in the map. +@interface GoSeqRef : NSObject { +} +@property(readonly) int32_t refnum; +@property(strong) id obj; // NULL when representing a Go object. + +// new GoSeqRef object to proxy a Go object. The refnum must be +// provided from Go side. +- (instancetype)initWithRefnum:(int32_t)refnum obj:(id)obj; + +- (int32_t)incNum; + +@end + +@protocol goSeqRefInterface +-(GoSeqRef*) _ref; +@end + +#endif diff --git a/Libs/OpenIMCore.framework/Versions/A/Modules/module.modulemap b/Libs/OpenIMCore.framework/Versions/A/Modules/module.modulemap new file mode 100644 index 0000000..6c7ae76 --- /dev/null +++ b/Libs/OpenIMCore.framework/Versions/A/Modules/module.modulemap @@ -0,0 +1,9 @@ +framework module "OpenIMCore" { + header "ref.h" + header "Open_im_sdk.objc.h" + header "Open_im_sdk_callback.objc.h" + header "Universe.objc.h" + header "OpenIMCore.h" + + export * +} \ No newline at end of file diff --git a/Libs/OpenIMCore.framework/Versions/A/OpenIMCore b/Libs/OpenIMCore.framework/Versions/A/OpenIMCore new file mode 100644 index 0000000..372510b Binary files /dev/null and b/Libs/OpenIMCore.framework/Versions/A/OpenIMCore differ diff --git a/Libs/OpenIMCore.framework/Versions/A/Resources/Info.plist b/Libs/OpenIMCore.framework/Versions/A/Resources/Info.plist new file mode 100644 index 0000000..0d1a4b8 --- /dev/null +++ b/Libs/OpenIMCore.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/Libs/OpenIMCore.framework/Versions/Current b/Libs/OpenIMCore.framework/Versions/Current new file mode 120000 index 0000000..8c7e5a6 --- /dev/null +++ b/Libs/OpenIMCore.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/Libs/OpenIMUniPlugin.framework/Headers/CallbackProxy.h b/Libs/OpenIMUniPlugin.framework/Headers/CallbackProxy.h new file mode 100755 index 0000000..8dee8e3 --- /dev/null +++ b/Libs/OpenIMUniPlugin.framework/Headers/CallbackProxy.h @@ -0,0 +1,13 @@ +#import +#import "DCUniModule.h" +@import OpenIMCore; + +NS_ASSUME_NONNULL_BEGIN + +@interface CallbackProxy : NSObject + +- (id)initWithCallback:(UniModuleKeepAliveCallback)callback; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/OpenIMUniPlugin.framework/Headers/OpenIMModule.h b/Libs/OpenIMUniPlugin.framework/Headers/OpenIMModule.h new file mode 100755 index 0000000..ef715b5 --- /dev/null +++ b/Libs/OpenIMUniPlugin.framework/Headers/OpenIMModule.h @@ -0,0 +1,23 @@ +// +// OpenIMUniPlugin.h +// OpenIMUniPlugin +// +// Created by blooming on 2022/12/13. +// + +#import +#import "DCUniModule.h" +#import "CallbackProxy.h" +@import OpenIMCore; + +NS_ASSUME_NONNULL_BEGIN + +@interface OpenIMModule : DCUniModule + +@property (nonatomic, readwrite) BOOL initFlag; + +- (void)pushEvent:(NSString *) eventName msg:(nullable id) msg; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/OpenIMUniPlugin.framework/Headers/OpenIMUniPlugin-umbrella.h b/Libs/OpenIMUniPlugin.framework/Headers/OpenIMUniPlugin-umbrella.h new file mode 100755 index 0000000..19aa4f2 --- /dev/null +++ b/Libs/OpenIMUniPlugin.framework/Headers/OpenIMUniPlugin-umbrella.h @@ -0,0 +1,20 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "CallbackProxy.h" +#import "OpenIMModule.h" +#import "SendMessageCallbackProxy.h" +#import "UploadFileCallbackProxy.h" + +FOUNDATION_EXPORT double OpenIMUniPluginVersionNumber; +FOUNDATION_EXPORT const unsigned char OpenIMUniPluginVersionString[]; + diff --git a/Libs/OpenIMUniPlugin.framework/Headers/SendMessageCallbackProxy.h b/Libs/OpenIMUniPlugin.framework/Headers/SendMessageCallbackProxy.h new file mode 100755 index 0000000..c304156 --- /dev/null +++ b/Libs/OpenIMUniPlugin.framework/Headers/SendMessageCallbackProxy.h @@ -0,0 +1,21 @@ +// +// SendMessageCallbackProxy.h +// OpenIMUniPlugin +// +// Created by Snow on 2021/6/24. +// + +#import +#import "DCUniModule.h" +#import "OpenIMModule.h" +@import OpenIMCore; + +NS_ASSUME_NONNULL_BEGIN + +@interface SendMessageCallbackProxy : NSObject + +- (id)initWithMessage:(NSDictionary *)message module:(OpenIMModule *)module callback:(UniModuleKeepAliveCallback)callback; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/OpenIMUniPlugin.framework/Info.plist b/Libs/OpenIMUniPlugin.framework/Info.plist new file mode 100644 index 0000000..126353d Binary files /dev/null and b/Libs/OpenIMUniPlugin.framework/Info.plist differ diff --git a/Libs/OpenIMUniPlugin.framework/Modules/module.modulemap b/Libs/OpenIMUniPlugin.framework/Modules/module.modulemap new file mode 100644 index 0000000..0153eae --- /dev/null +++ b/Libs/OpenIMUniPlugin.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module OpenIMUniPlugin { + umbrella header "OpenIMUniPlugin-umbrella.h" + + export * + module * { export * } +} diff --git a/Libs/OpenIMUniPlugin.framework/OpenIMUniPlugin b/Libs/OpenIMUniPlugin.framework/OpenIMUniPlugin new file mode 100644 index 0000000..caec8d7 Binary files /dev/null and b/Libs/OpenIMUniPlugin.framework/OpenIMUniPlugin differ diff --git a/Libs/UMSPosPayOnly/UMSPPPayPluginSettings.h b/Libs/UMSPosPayOnly/UMSPPPayPluginSettings.h new file mode 100644 index 0000000..768fe32 --- /dev/null +++ b/Libs/UMSPosPayOnly/UMSPPPayPluginSettings.h @@ -0,0 +1,59 @@ +// +// UMSPluginSettings.h +// UMSPosPay +// +// Created by chinaums on 15/10/19. +// Copyright © 2015年 ChinaUMS. All rights reserved. +// + +// sdk_version = 3.1.6 + +#import + +//1 是走apple 0是不走 +//#define SHOULD_CONTAIN_APPLE_PAY_CODES 0 + +/*! + @enum + @abstract 交易环境 + @constant UMSP_PROD 生产环境 + @constant UMSP_TEST 测试环境 + */ +typedef NS_ENUM(NSInteger, UMSPluginEnvironment) { + UMSP_PROD, + UMSP_TEST +}; + +/** + * 进入插件的方式 + */ +typedef NS_ENUM(NSInteger, UMSPluginEnterType) { + ///默认方式 + UMSPluginEnterType_Default, + ///C扫B方式 + UMSPluginEnterType_ScanCode +}; + + +@interface UMSPPPayPluginSettings : NSObject + ++ (UMSPPPayPluginSettings *)sharedInstance; + +/*! + @property + @abstract 设置交易环境,默认UMSP_PROD + */ +@property (nonatomic, assign) UMSPluginEnvironment umspEnviroment; + +/** + * 进入插件方式,默认UMSPluginEnterType_Default + */ +@property (nonatomic, assign) UMSPluginEnterType umspEnterType; + +/*! + @property + @abstract 设置是否需要启动页,默认YES + */ +@property (nonatomic, assign) BOOL umspSplash; + +@end diff --git a/Libs/UMSPosPayOnly/UMSPPPayUnifyPayPlugin.h b/Libs/UMSPosPayOnly/UMSPPPayUnifyPayPlugin.h new file mode 100644 index 0000000..cb9ade4 --- /dev/null +++ b/Libs/UMSPosPayOnly/UMSPPPayUnifyPayPlugin.h @@ -0,0 +1,99 @@ +// +// UMSPPPayUnifyPayPlugin.h +// UMSPosPay +// +// Created by SunXP on 17/4/25. +// Copyright © 2017年 ChinaUMS. All rights reserved. +// + +// sdk_version = 3.1.6 + +#import +#import "WXApi.h" + +/** + * 支付渠道 + * + * @param CHANNEL_WEIXIN 微信支付 + * @param CHANNEL_ALIPAY 支付宝支付 + * @param CHANNEL_ALIMINIPAY 支付宝小程序支付 + */ +FOUNDATION_EXTERN NSString *const CHANNEL_WEIXIN; +FOUNDATION_EXTERN NSString *const CHANNEL_ALIPAY; +FOUNDATION_EXTERN NSString *const CHANNEL_ALIMINIPAY; + +typedef void(^TransactionResultBlock)(NSString *resultCode, NSString *resultInfo); + +@interface UMSPPPayUnifyPayPlugin : NSObject + +/** + * 商户下单支付接口 + * + * @param payChannel 支付渠道 + * @param payData 订单信息:appPayRequest对应的json字符串 + * @param callbackBlock 交易结果回调Block + */ ++ (void)payWithPayChannel:(NSString *)payChannel payData:(NSString *)payData callbackBlock:(TransactionResultBlock)callbackBlock; + +/** + 云闪付下单接口 + + @param schemes url schemes + @param payData 订单信息:appPayRequest对应的json字符串 + @param viewController 启动支付控件的viewController + @param callbackBlock 交易结果回调Block + */ ++ (void)cloudPayWithURLSchemes:(NSString *)schemes + payData:(NSString *)payData + viewController:(UIViewController *)viewController + callbackBlock:(TransactionResultBlock)callbackBlock; + +/** + * 微信支付配置参数 + * + * @param appId 商户注册的微信支付appId + * @param universalLink 微信开发者Universal Link + * @return YES:成功 NO:失败 + * 需在AppDelegate的didFinishLaunchingWithOptions方法中调用 + */ ++ (BOOL)registerApp:(NSString *)appId universalLink:(NSString *)universalLink; + +/** + * 微信支付配置参数 + * + * @param url App处理的openUrl + * @param otherDelegate WXApiDelegate对象,用来接收微信触发的非本功能的消息。 + * @return YES:成功 NO:失败 + * 需在AppDelegate中的方法中调用: + * iOS9.0之前版本:- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url + * - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation + * iOS9.0之后版本:- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options + */ ++ (BOOL)handleOpenURL:(NSURL *)url otherDelegate:(id)otherDelegate; + +/*! @brief 处理微信通过Universal Link启动App时传递的数据 +* +* 需要在 application:continueUserActivity:restorationHandler:中调用。 +* @param userActivity 微信启动第三方应用时系统API传递过来的userActivity +* @param otherDelegate WXApiDelegate对象,用来接收微信触发的非本功能的消息。 +* 需在AppDelegate中的方法中调用: + 需要在 application:continueUserActivity:restorationHandler:中调用。 +* @return 成功返回YES,失败返回NO。 + */ ++(BOOL)handleOpenUniversalLink:(NSUserActivity *)userActivity otherDelegate:(id)otherDelegate API_AVAILABLE(ios(8.0)); +/** + 云闪付处理 + + @param url App处理的openUrl + @return YES:成功 NO:失败 + */ ++ (BOOL)cloudPayHandleOpenURL:(NSURL *)url; + +/** + 支付宝小程序处理 + + @param url App处理的openUrl + */ ++ (void)aliMiniPayHandleOpenURL:(NSURL *)url; + +@end diff --git a/Libs/UMSPosPayOnly/UMSPPPayVersionsInfo.h b/Libs/UMSPosPayOnly/UMSPPPayVersionsInfo.h new file mode 100644 index 0000000..d655d4a --- /dev/null +++ b/Libs/UMSPosPayOnly/UMSPPPayVersionsInfo.h @@ -0,0 +1,17 @@ +// +// libUMSVersionsInfo.h +// UMSPosPay +// +// Created by diudiu on 16/6/28. +// Copyright © 2016年 ChinaUMS. All rights reserved. +// + +// sdk_version = 3.1.6 + +#import + +@interface UMSPPPayVersionsInfo : NSObject + ++ (NSMutableDictionary *)getVersionsInfoForPosPayPlugin; + +@end diff --git a/Libs/UMSPosPayOnly/libUMSPosPayOnly.a b/Libs/UMSPosPayOnly/libUMSPosPayOnly.a new file mode 100644 index 0000000..2ced837 Binary files /dev/null and b/Libs/UMSPosPayOnly/libUMSPosPayOnly.a differ diff --git a/Libs/UPPaymentControl/UPPaymentControl.h b/Libs/UPPaymentControl/UPPaymentControl.h new file mode 100755 index 0000000..a4001a4 --- /dev/null +++ b/Libs/UPPaymentControl/UPPaymentControl.h @@ -0,0 +1,75 @@ +// +// PaymentControl.h +// PaymentControl +// +// Created by qcao on 15/10/20. +// Copyright © 2015年 China Unionpay Co.,Ltd. All rights reserved. +// v3.4.10 build1(mini) +// + +#import +#import + + +typedef void (^UPPaymentResultBlock)(NSString* code, NSDictionary* data); +typedef void (^UPPaymentDirectAppSucc)(NSArray* directApps); +typedef void (^UPPaymentDirectAppFail)(NSString* code,NSString* msg); + +@interface UPPaymentControl : NSObject + + +/** + * 创建支付单例服务 + * + * @return 返回单例对象 + */ + ++ (UPPaymentControl *)defaultControl; + + +/** + * 支付接口 + * + * @param tn 订单信息 + * @param schemeStr 调用支付的app注册在info.plist中的scheme + * @param mode 支付环境 + * @param viewController 启动支付控件的viewController + * @return 返回成功失败 + */ +- (BOOL)startPay:(NSString*)tn + fromScheme:(NSString *)schemeStr + mode:(NSString*)mode + viewController:(UIViewController*)viewController; + + + +/// APP是否已安装检测接口,通过该接口得知用户是否安装银联支付的APP。 +/// @param mode 支付环境 +/// @param merchantInfo 商户标识 +- (BOOL)isPaymentAppInstalled:(NSString*)mode withMerchantInfo:(NSString *)merchantInfo; + + +/** + * 通过回调异步返回直通可用app列表 + * @param mode 支付环境 + * @param merchantInfo 商户标识 + * @param succBlock 成功回调,回调参数directApps,表示直通可用app列表,如无可用App则directApps为空数组@[] + * @param succBlock 失败回调,回调参数一code,表示错误码(参数错误 : 01,网络错误 : 02,其它 : 03) + * 回调参数二msg,表示错误信息(参数错误 : parameter error,网络错误 : network error,其它 : unknown error) + */ +- (void)getDirectApps:(NSString*)mode + withMerchantInfo:(NSString*)merchantInfo + succBlock:(UPPaymentDirectAppSucc)succBlock + failBlock:(UPPaymentDirectAppFail)failBlock; + + + +/** + * 处理钱包或者独立快捷app支付跳回商户app携带的支付结果Url + * + * @param url 支付结果url,传入后由SDK解析 + * @param completionBlock 结果回调,保证跳转钱包支付过程中,即使调用方app被系统kill时,能通过这个回调取到支付结果。 + */ +- (void)handlePaymentResult:(NSURL*)url completeBlock:(UPPaymentResultBlock)completionBlock; + +@end diff --git a/Libs/UPPaymentControl/libPaymentControlMini.a b/Libs/UPPaymentControl/libPaymentControlMini.a new file mode 100755 index 0000000..a1cb4cd Binary files /dev/null and b/Libs/UPPaymentControl/libPaymentControlMini.a differ diff --git a/Libs/UniPluginJCore.framework/Headers/JCoreModule.h b/Libs/UniPluginJCore.framework/Headers/JCoreModule.h new file mode 100644 index 0000000..630b42d --- /dev/null +++ b/Libs/UniPluginJCore.framework/Headers/JCoreModule.h @@ -0,0 +1,17 @@ +// +// JCoreModule.h +// UniPluginJCore +// +// Created by huangshuni on 2021/1/21. +// + +#import +#import "DCUniModule.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JCoreModule : DCUniModule + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/UniPluginJCore.framework/Info.plist b/Libs/UniPluginJCore.framework/Info.plist new file mode 100644 index 0000000..a647e58 Binary files /dev/null and b/Libs/UniPluginJCore.framework/Info.plist differ diff --git a/Libs/UniPluginJCore.framework/PrivacyInfo.xcprivacy b/Libs/UniPluginJCore.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..ab4651f --- /dev/null +++ b/Libs/UniPluginJCore.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,76 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeCrashData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeDeviceID + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypePreciseLocation + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyTracking + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPITypeReasons + + E174.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + + + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + + + NSPrivacyAccessedAPITypeReasons + + C617.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + + + + diff --git a/Libs/UniPluginJCore.framework/UniPluginJCore b/Libs/UniPluginJCore.framework/UniPluginJCore new file mode 100644 index 0000000..65b7ea6 Binary files /dev/null and b/Libs/UniPluginJCore.framework/UniPluginJCore differ diff --git a/Libs/UniPluginJCore.framework/_CodeSignature/CodeDirectory b/Libs/UniPluginJCore.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..119a027 Binary files /dev/null and b/Libs/UniPluginJCore.framework/_CodeSignature/CodeDirectory differ diff --git a/Libs/UniPluginJCore.framework/_CodeSignature/CodeRequirements b/Libs/UniPluginJCore.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..25365e2 Binary files /dev/null and b/Libs/UniPluginJCore.framework/_CodeSignature/CodeRequirements differ diff --git a/Libs/UniPluginJCore.framework/_CodeSignature/CodeRequirements-1 b/Libs/UniPluginJCore.framework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000..a0e6163 Binary files /dev/null and b/Libs/UniPluginJCore.framework/_CodeSignature/CodeRequirements-1 differ diff --git a/Libs/UniPluginJCore.framework/_CodeSignature/CodeResources b/Libs/UniPluginJCore.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..733f9e5 --- /dev/null +++ b/Libs/UniPluginJCore.framework/_CodeSignature/CodeResources @@ -0,0 +1,132 @@ + + + + + files + + Headers/JCoreModule.h + + 4aMcBALZuuQeh2JQjJqqvSkc2mA= + + Info.plist + + lEPzYQqVl28tIRcHpPylD4ZS6no= + + PrivacyInfo.xcprivacy + + yHOUAh3JUmXckXHw4CZ3qSO8mUQ= + + + files2 + + Headers/JCoreModule.h + + hash + + 4aMcBALZuuQeh2JQjJqqvSkc2mA= + + hash2 + + h/0w2CaU3JBhKI3Pp4EiSWqLf/ZY1Ju+5+tBAdowZ5k= + + + PrivacyInfo.xcprivacy + + hash + + yHOUAh3JUmXckXHw4CZ3qSO8mUQ= + + hash2 + + 0max6x5a86ML0a9KgmB5EdO/uWtN/cwBGQq4Yvxsnn0= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Libs/UniPluginJCore.framework/_CodeSignature/CodeSignature b/Libs/UniPluginJCore.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..b85a40f Binary files /dev/null and b/Libs/UniPluginJCore.framework/_CodeSignature/CodeSignature differ diff --git a/Libs/UniPluginJPush.framework/Headers/JPushModule.h b/Libs/UniPluginJPush.framework/Headers/JPushModule.h new file mode 100644 index 0000000..ad03617 --- /dev/null +++ b/Libs/UniPluginJPush.framework/Headers/JPushModule.h @@ -0,0 +1,17 @@ +// +// JPushModule.h +// UniPluginJPush +// +// Created by huangshuni on 2021/1/12. +// + +#import +#import "DCUniModule.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JPushModule : DCUniModule + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/UniPluginJPush.framework/Info.plist b/Libs/UniPluginJPush.framework/Info.plist new file mode 100644 index 0000000..f442426 Binary files /dev/null and b/Libs/UniPluginJPush.framework/Info.plist differ diff --git a/Libs/UniPluginJPush.framework/PrivacyInfo.xcprivacy b/Libs/UniPluginJPush.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..e2920ec --- /dev/null +++ b/Libs/UniPluginJPush.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,23 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + + + + diff --git a/Libs/UniPluginJPush.framework/UniPluginJPush b/Libs/UniPluginJPush.framework/UniPluginJPush new file mode 100644 index 0000000..8f62c69 Binary files /dev/null and b/Libs/UniPluginJPush.framework/UniPluginJPush differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/Info.plist b/Libs/UniSensorsAnalyticsModule.xcframework/Info.plist new file mode 100644 index 0000000..ce33e2b --- /dev/null +++ b/Libs/UniSensorsAnalyticsModule.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + UniSensorsAnalyticsModule.framework/UniSensorsAnalyticsModule + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + UniSensorsAnalyticsModule.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + UniSensorsAnalyticsModule.framework/UniSensorsAnalyticsModule + LibraryIdentifier + ios-arm64 + LibraryPath + UniSensorsAnalyticsModule.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/Info.plist b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/Info.plist new file mode 100644 index 0000000..33adda9 Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/Info.plist differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/UniSensorsAnalyticsModule b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/UniSensorsAnalyticsModule new file mode 100644 index 0000000..f0f9315 Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/UniSensorsAnalyticsModule differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeDirectory b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..9d02eda Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeDirectory differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..3b62736 Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements-1 b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000..118bbc9 Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements-1 differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeResources b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..7da2454 --- /dev/null +++ b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeResources @@ -0,0 +1,101 @@ + + + + + files + + Info.plist + + NtfF10EJooskQajYr0pYZuZPwVo= + + + files2 + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeSignature b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..84abad1 Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeSignature differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/Info.plist b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/Info.plist new file mode 100644 index 0000000..1bbf8e3 Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/Info.plist differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/UniSensorsAnalyticsModule b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/UniSensorsAnalyticsModule new file mode 100644 index 0000000..d5d52dd Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/UniSensorsAnalyticsModule differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeDirectory b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..9a9eca4 Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeDirectory differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..dbf9d61 Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements-1 b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000..68ce901 Binary files /dev/null and b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeRequirements-1 differ diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeResources b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..245caf1 --- /dev/null +++ b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeResources @@ -0,0 +1,101 @@ + + + + + files + + Info.plist + + xt2G2amXy2KZtQ3Sjx4trUD3Mtk= + + + files2 + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeSignature b/Libs/UniSensorsAnalyticsModule.xcframework/ios-arm64_x86_64-simulator/UniSensorsAnalyticsModule.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..e69de29 diff --git a/Libs/YTXMonitor.framework/Headers/ACMConfig.h b/Libs/YTXMonitor.framework/Headers/ACMConfig.h deleted file mode 100644 index 7a0f94d..0000000 --- a/Libs/YTXMonitor.framework/Headers/ACMConfig.h +++ /dev/null @@ -1,43 +0,0 @@ -// -// ACMConfig.h -// ATAuthSDK -// -// Created by 刘超的MacBook on 2020/5/19. -// Copyright © 2020. All rights reserved. -// - -#import -#import "ACMUploadInterface.h" - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, ACMMonitorUploadType) { - ACMMonitorUploadTypeRealTime, //实时上传,暂时不支持,如果采用这个方式将以默认的轮询上传实现 - ACMMonitorUploadTypeCirculate, //轮询上传 - ACMMonitorUploadTypeManual //手动上传 -}; - -@interface ACMConfig : NSObject - -+ (instancetype)sharedInstance; - -/// 日志是否入库,默认NO -@property (atomic, assign) BOOL loggerIsSaveInDB; -/// 埋点是否入库,默认YES -@property (atomic, assign) BOOL monitorIsSaveInDB; -/// 日志是否上传,默认NO -@property (atomic, assign) BOOL loggerIsUpload; -/// 埋点是否上传,默认YES -@property (atomic, assign) BOOL monitorIsUpload; - -/// 日志埋点组件上传type,默认 ACMMonitorUploadTypeManual -@property (nonatomic, assign) ACMMonitorUploadType uploadType; -/// 日志埋点组件上传代理对象,注:这里是弱引用,组件外面需要保证该上传对象不要被释放,如果被释放掉将影响日志埋点的上传 -@property (nonatomic, weak) id uploadDelegate; - -/// 更新日志埋点组件限流信息 -- (void)setLimitConfig:(NSDictionary *)info; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Libs/YTXMonitor.framework/Headers/ACMLogger.h b/Libs/YTXMonitor.framework/Headers/ACMLogger.h index c762a5a..9abd531 100644 --- a/Libs/YTXMonitor.framework/Headers/ACMLogger.h +++ b/Libs/YTXMonitor.framework/Headers/ACMLogger.h @@ -1,33 +1,47 @@ -// -// ACMLogger.h -// Monitor -// -// Created by Vienta on 2019/11/13. -// #import NS_ASSUME_NONNULL_BEGIN +/// 日志级别 +extern NSString * const ACM_LOGGER_LEVEL_VERBOSE; +extern NSString * const ACM_LOGGER_LEVEL_DEBUG; +extern NSString * const ACM_LOGGER_LEVEL_INFO; +extern NSString * const ACM_LOGGER_LEVEL_WARN; +extern NSString * const ACM_LOGGER_LEVEL_ERROR; +extern NSString * const ACM_LOGGER_LEVEL_REALTIME; + @interface ACMLogger : NSObject -+ (BOOL)verboseRecord:(id)obj; +- (instancetype)init NS_UNAVAILABLE; -+ (BOOL)debugRecord:(id)obj; +/// 日志是否入库,默认不入库 +@property (nonatomic, assign) BOOL enterDatabase;; -+ (BOOL)infoRecord:(id)obj; - -+ (BOOL)warnRecord:(id)obj; - -+ (BOOL)errorRecord:(id)obj; +/// 日志是否允许上传,默认不上传 +@property (nonatomic, assign) BOOL isAllowUpload; /** - * 日志上传 + * 日志入库 + * @param obj 日志的具体内容 + * @param level 日志等级 + */ +- (BOOL)logger:(id)obj level:(NSString *)level ; + +/** + * 上传日志 * @param startDate 日志开始时间,如果传nil则查询不加该条件 * @param endDate 日志结束时间,如果传nil则查询不加该条件 * @param levels 日志等级数组,里面包含对应的日志等级字符串,如果传nil则查询不加该条件 */ -+ (void)uploadLoggerRecordsWithStartDate:(NSDate * _Nullable)startDate endDate:(NSDate * _Nullable)endDate levels:(NSArray * _Nullable)levels; +- (void)uploadLoggersWithLevels:(NSArray * _Nullable)levels + startDate:(NSDate * _Nullable)startDate + endDate:(NSDate * _Nullable)endDate; + +/** + * 上传失败的日志,一般放在重启应用后 + */ +- (void)uploadFailedRecords; @end diff --git a/Libs/YTXMonitor.framework/Headers/ACMManager.h b/Libs/YTXMonitor.framework/Headers/ACMManager.h new file mode 100644 index 0000000..e0a36ce --- /dev/null +++ b/Libs/YTXMonitor.framework/Headers/ACMManager.h @@ -0,0 +1,73 @@ + +#import +#import "ACMLogger.h" +#import "ACMMonitor.h" +#import "ACMProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface ACMManager : NSObject + +/// 日志操作对象 +@property (nonatomic, strong, readonly) ACMLogger *logger; + +/// 埋点操作对象 +@property (nonatomic, strong, readonly) ACMMonitor *monitor; + +- (instancetype)init NS_UNAVAILABLE; + +/** + * 初始化 + * @param databaseName 数据库名,不指定则默认为 “ACMDatabase” + * @param monitorTableName 埋点表名,必须要指定,用来区分不同产品数据 + * @param loggerTablename 日志表名,必须要指定,用来区分不同产品数据 + * @param limitKeyPrefix 限流信息存储到本地key的前缀,用来区分不同产品的限流缓存 + */ +- (instancetype)initWithDatabaseName:(NSString * _Nullable)databaseName + monitorTableName:(NSString *)monitorTableName + loggerTableName:(NSString *)loggerTablename + limitKeyPrefix:(NSString *)limitKeyPrefix; + +/** + * 初始化 + * @param databaseName 数据库名,不指定则默认为 “ACMDatabase” + * @param monitorTableName 埋点表名,必须要指定,用来区分不同产品数据 + * @param loggerTablename 日志表名,必须要指定,用来区分不同产品数据 + * @param limitKeyPrefix 限流信息存储到本地key的前缀,用来区分不同产品的限流缓存 + * @param uploadCount 每次上传条数 + * @param retryRightNow 上传失败是否立马重试,默认立马重试 + * @param uploadOnce 是否只执行一轮上传,默认NO + */ +- (instancetype)initWithDatabaseName:(NSString * _Nullable)databaseName + monitorTableName:(NSString *)monitorTableName + loggerTableName:(NSString *)loggerTablename + limitKeyPrefix:(NSString *)limitKeyPrefix + uploadCount:(NSInteger)uploadCount + retryRightNow:(BOOL)retryRightNow + uploadOnce:(BOOL)uploadOnce; + +/** + * 获取组件当前版本号 + */ +- (NSString *)getVersion; + +/** + * 设置日志埋点上传代理对象 + * 注:这里是强引用 + * @param uploadDelegate 代理对象,需要实现 ACMProtocol 协议 + */ +- (void)setUploadDelegate:(id _Nullable)uploadDelegate; + +/** + * 更新限流相关 + * @param isLimit 是否限流 + * @param limitTimeHour 限流区间大小 + * @param limitCount 区间内限流次数 + */ +- (void)updateLimitConfig:(BOOL)isLimit + limitTimeHour:(NSInteger)limitTimeHour + limitCount:(NSInteger)limitCount; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/YTXMonitor.framework/Headers/ACMMonitor.h b/Libs/YTXMonitor.framework/Headers/ACMMonitor.h index 38ad7be..f74e3fe 100644 --- a/Libs/YTXMonitor.framework/Headers/ACMMonitor.h +++ b/Libs/YTXMonitor.framework/Headers/ACMMonitor.h @@ -1,34 +1,54 @@ -// -// ACMMonitor.h -// Monitor -// -// Created by Vienta on 2019/11/13. -// #import NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, ACM_DELETE_TYPE) { + ACM_DELETE_TYPE_ALL, + ACM_DELETE_TYPE_FAILED, + ACM_DELETE_TYPE_UNUPLOAD +}; + + + @interface ACMMonitor : NSObject -/** - * 上传非实时埋点 - * @param obj 埋点内容 - * @return 埋点存储结果 - */ -+ (BOOL)monitorRecord:(id)obj; +- (instancetype)init NS_UNAVAILABLE; + +/// 埋点是否入库,默认入库 +@property (nonatomic, assign) BOOL enterDatabase;; + +/// 埋点是否允许上传,默认上传 +@property (nonatomic, assign) BOOL isAllowUpload; /** - * 上传实时埋点 - * @param obj 埋点内容 - * @return 埋点上传准备结果 + * 非实时埋点入库 + * @param obj 埋点具体内容 */ -+ (BOOL)monitorRealtimeRecord:(id)obj; +- (BOOL)monitor:(id)obj; /** - * 开始手动上传,在设置uploadType为ACMMonitorUploadManual时生效 + * 实时埋点入库 + * @param obj 埋点的具体内容 */ -+ (void)uploadMonitorByManual; +- (BOOL)monitorRealtime:(id)obj; + +/** + * 手动触发埋点上传,只上传未上传过的埋点 + */ +- (void)uploadMonitorByManual; + +/** + * 上传失败的埋点,一般放在重启应用后 + */ +- (void)uploadFailedRecords; + +/** + * 删除埋点 + * @param type 删除类型 + * @param block 结果的异步回调 + */ +- (void)deleteRecordsByType:(ACM_DELETE_TYPE)type block:(void (^)(BOOL))block; @end diff --git a/Libs/YTXMonitor.framework/Headers/ACMProtocol.h b/Libs/YTXMonitor.framework/Headers/ACMProtocol.h new file mode 100644 index 0000000..df94a52 --- /dev/null +++ b/Libs/YTXMonitor.framework/Headers/ACMProtocol.h @@ -0,0 +1,17 @@ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol ACMProtocol + +@required + +/// 埋点抛出,可在抛出里面进行上传 +- (BOOL)uploadMonitors:(NSArray *)monitors; +/// 日志抛出,可在抛出里面进行上传 +- (BOOL)uploadLoggers:(NSArray *)loggers; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/YTXMonitor.framework/Headers/ACMUploadInterface.h b/Libs/YTXMonitor.framework/Headers/ACMUploadInterface.h deleted file mode 100644 index 53f1749..0000000 --- a/Libs/YTXMonitor.framework/Headers/ACMUploadInterface.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// ACMUploadInterface.h -// Monitor -// -// Created by 沈超 on 2019/12/17. -// - -@protocol ACMProtocol - -@required -/** - * 埋点聚合上传(包括轮询和手动) - * @param monitors 需要上传的埋点信息 - * @return 上传是否成功,建议上传采用同步策略 - */ -- (BOOL)uploadMonitors:(NSArray *)monitors; - -/** - * 日志上传 - * @param logContents 需要上传的日志 - * @return 上传是否成功,建议上传采用同步策略 - */ -- (BOOL)uploadLogs:(NSArray *)logContents; - -@end diff --git a/Libs/YTXMonitor.framework/Headers/ACMUploadManager.h b/Libs/YTXMonitor.framework/Headers/ACMUploadManager.h deleted file mode 100644 index dd3c050..0000000 --- a/Libs/YTXMonitor.framework/Headers/ACMUploadManager.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// ACMUploadManager.h -// Monitor -// -// Created by Vienta on 2019/11/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ACMUploadManager : NSObject - -/** - * 上传失败的数据,同时会上传埋点和日志的数据,如果有降级限流的情况,最好是在设置完成相应的降级接口(setACMLoggerEnable:和 setACMMonitorEnable)之后调用 - */ -+ (void)uploadFailedData; - -/** - * 业务层配置降级限流 - */ -+ (void)setLimitConfig:(NSDictionary *)info; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Libs/YTXMonitor.framework/Headers/YTXMonitor.h b/Libs/YTXMonitor.framework/Headers/YTXMonitor.h index d2e3d83..3f9a547 100644 --- a/Libs/YTXMonitor.framework/Headers/YTXMonitor.h +++ b/Libs/YTXMonitor.framework/Headers/YTXMonitor.h @@ -1,22 +1,3 @@ -// -// YTXMonitor.h -// YTXMonitor -// -// Created by li yang on 2020/11/23. -// -#import - -//! Project version number for YTXMonitor. -FOUNDATION_EXPORT double YTXMonitorVersionNumber; - -//! Project version string for YTXMonitor. -FOUNDATION_EXPORT const unsigned char YTXMonitorVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - -#import "ACMLogger.h" -#import "ACMMonitor.h" -#import "ACMConfig.h" -#import "ACMUploadInterface.h" -#import "ACMUploadManager.h" +#import "ACMManager.h" +#import "ACMProtocol.h" diff --git a/Libs/YTXMonitor.framework/Info.plist b/Libs/YTXMonitor.framework/Info.plist index 8d57355..3d24c36 100644 Binary files a/Libs/YTXMonitor.framework/Info.plist and b/Libs/YTXMonitor.framework/Info.plist differ diff --git a/Libs/YTXMonitor.framework/PrivacyInfo.xcprivacy b/Libs/YTXMonitor.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..433213e --- /dev/null +++ b/Libs/YTXMonitor.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,34 @@ + + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeOtherDataTypes + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAnalytics + + + + NSPrivacyTracking + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/Libs/YTXMonitor.framework/YTXMonitor b/Libs/YTXMonitor.framework/YTXMonitor index c97df9f..434238c 100644 Binary files a/Libs/YTXMonitor.framework/YTXMonitor and b/Libs/YTXMonitor.framework/YTXMonitor differ diff --git a/Libs/YTXOperators.framework/Headers/YTXNetUtils.h b/Libs/YTXOperators.framework/Headers/YTXNetUtils.h index a8c4bdd..54e4c9d 100644 --- a/Libs/YTXOperators.framework/Headers/YTXNetUtils.h +++ b/Libs/YTXOperators.framework/Headers/YTXNetUtils.h @@ -16,78 +16,84 @@ NS_ASSUME_NONNULL_BEGIN 判断当前设备蜂窝数据网络是否开启,即3G/4G @return 结果 */ -+ (BOOL)checkDeviceCellularDataEnable; +- (BOOL)checkDeviceCellularDataEnable; /** 判断当前上网卡运营商是否是中国联通 @return 结果 */ -+ (BOOL)isChinaUnicom; +- (BOOL)isChinaUnicom; /** 判断当前上网卡运营商是否是中国移动 @return 结果 */ -+ (BOOL)isChinaMobile; +- (BOOL)isChinaMobile; /** 判断当前上网卡运营商是否是中国电信 @return 结果 */ -+ (BOOL)isChinaTelecom; +- (BOOL)isChinaTelecom; /** 获取当前上网卡运营商名称,比如中国移动、中国电信、中国联通 @return 结果 */ -+ (NSString *)getCurrentCarrierName; +- (NSString *)getCurrentCarrierName; /** 获取当前上网卡运营商编码,比如46000、46001、46003 @return 结果 */ -+ (NSString *)getCurrentCarrierCode; +- (NSString *)getCurrentCarrierCode API_DEPRECATED("废弃,完成不可用,返回空字符串", ios(4.0, 16.0)); /** 获取当前上网卡网络类型,比如WiFi,4G @return 结果 */ -+ (NSString *)getNetworktype; +- (NSString *)getNetworktype; /** 判断当前设备是否有SIM卡 @return 结果 */ -+ (BOOL)simSupportedIsOK; +- (BOOL)simSupportedIsOK; /** 判断wwan是否开着(通过p0网卡判断,无wifi或有wifi情况下都能检测到) @return 结果 */ -+ (BOOL)isWWANOpen; +- (BOOL)isWWANOpen; + +/** + 判断WiFi是否开着 + @return 结果 + */ +- (BOOL)isWiFiOpen; /** 判断wwan是否开着(仅无wifi情况下) @return 结果 */ -+ (BOOL)reachableViaWWAN; +- (BOOL)reachableViaWWAN; /** 获取设备当前网络私网IP地址 @return 结果 */ -+ (NSString *)getMobilePrivateIPAddress:(BOOL)preferIPv4; +- (NSString *)getMobilePrivateIPAddress:(BOOL)preferIPv4; /** 获取双卡设备下,非上网卡信息 @return 结果 */ -+ (NSString *)getOptionalCarrierInfo; +- (NSString *)getOptionalCarrierInfo API_DEPRECATED("废弃,完成不可用,返回空字符串", ios(4.0, 16.0));; /** 获取当前蜂网络Ip地址 */ -+ (NSString *)getCellularIp; +- (NSString *)getCellularIp; @end diff --git a/Libs/YTXOperators.framework/Headers/YTXVendorService.h b/Libs/YTXOperators.framework/Headers/YTXVendorService.h index 8091daa..02fbc77 100644 --- a/Libs/YTXOperators.framework/Headers/YTXVendorService.h +++ b/Libs/YTXOperators.framework/Headers/YTXVendorService.h @@ -10,6 +10,22 @@ NS_ASSUME_NONNULL_BEGIN +@interface YTXRequest : NSObject +/// 接口调用超时时间,注:目前内部限制最小超时时间为5s,小于5s则按5s设置 +@property (nonatomic, assign) NSTimeInterval timeout; +/// 是否是蜂窝网络 +@property (nonatomic, assign) BOOL isReachableViaWWAN; +@end + +@interface YTXVendorConfig : NSObject +/// 当前供应商标识:中移互联(cm_zyhl),联通小沃(cu_xw),联通在线(cu_zx),电信世纪龙(ct_sjl) +@property (nonatomic, copy) NSString *vendorKey; +/// 供应商 access id +@property (nonatomic, copy) NSString *vendorAccessId; +/// 供应商 access secret +@property (nonatomic, copy) NSString *vendorAccessSecret; +@end + @interface YTXVendorService : NSObject /** @@ -26,7 +42,7 @@ NS_ASSUME_NONNULL_BEGIN * 初始化或更新各个供应商的接口调用对象,根据各个供应商的配置信息 * @param vendorConfigs 各个供应商配置信息 */ -- (void)updateVendorHandlers:(NSArray *)vendorConfigs; +- (void)updateVendorHandlers:(NSArray *)vendorConfigs; /** * 获取本机号码校验Token @@ -34,8 +50,8 @@ NS_ASSUME_NONNULL_BEGIN * @param vendorConfig 当前供应商配置信息 * @param complete 结果回调 */ -- (void)getVerifyTokenWithRequest:(NSDictionary *)request - vendorConfig:(NSDictionary *)vendorConfig +- (void)getVerifyTokenWithRequest:(YTXRequest *)request + vendorConfig:(YTXVendorConfig *)vendorConfig complete:(void(^)(NSDictionary *response))complete; /** @@ -44,8 +60,8 @@ NS_ASSUME_NONNULL_BEGIN * @param vendorConfig 当前供应商配置信息 * @param complete 结果回调 */ -- (void)getMaskNumberWithRequest:(NSDictionary *)request - vendorConfig:(NSDictionary *)vendorConfig +- (void)getMaskNumberWithRequest:(YTXRequest *)request + vendorConfig:(YTXVendorConfig *)vendorConfig complete:(void(^)(NSDictionary *response))complete; @@ -56,11 +72,11 @@ NS_ASSUME_NONNULL_BEGIN * @param complete 结果回调 * @abstract 移动的获取登录Token不走这个回调,走弹起授权页的回调 */ -- (void)getLoginTokenWithRequest:(NSDictionary *)request - vendorConfig:(NSDictionary *)vendorConfig +- (void)getLoginTokenWithRequest:(YTXRequest *)request + vendorConfig:(YTXVendorConfig *)vendorConfig complete:(void(^)(NSDictionary *response))complete; -- (void)deleteCacheWithVendorConfigs:(NSArray *)vendorConfigs; +- (void)deleteCacheWithVendorConfigs:(NSArray *)vendorConfigs; @end diff --git a/Libs/YTXOperators.framework/Info.plist b/Libs/YTXOperators.framework/Info.plist index 231038f..4894e0c 100644 Binary files a/Libs/YTXOperators.framework/Info.plist and b/Libs/YTXOperators.framework/Info.plist differ diff --git a/Libs/YTXOperators.framework/PrivacyInfo.xcprivacy b/Libs/YTXOperators.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..fadbe22 --- /dev/null +++ b/Libs/YTXOperators.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,34 @@ + + + + + NSPrivacyTracking + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeOtherDataTypes + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAnalytics + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/Libs/YTXOperators.framework/YTXOperators b/Libs/YTXOperators.framework/YTXOperators index d380037..ade36ef 100644 Binary files a/Libs/YTXOperators.framework/YTXOperators and b/Libs/YTXOperators.framework/YTXOperators differ diff --git a/Libs/ZIM.framework/Headers/ZIM.h b/Libs/ZIM.framework/Headers/ZIM.h new file mode 100644 index 0000000..c6ead32 --- /dev/null +++ b/Libs/ZIM.framework/Headers/ZIM.h @@ -0,0 +1,2270 @@ +// +// ZIM.h +// ZIM +// +// Copyright © 2021 Zego. All rights reserved. +// + +#import "ZIMEventHandler.h" + +NS_ASSUME_NONNULL_BEGIN + +/// ZIM SDK main class. +/// +@interface ZIM : NSObject + +/// Gets the SDK's version number. +/// +/// When the SDK is running, the developer finds that it does not match the expected situation and submits the problem and related logs to the ZEGO technical staff for locating. The ZEGO technical staff may need the information of the engine version to assist in locating the problem. +/// Developers can also collect this information as the version information of the engine used by the app, so that the SDK corresponding to each version of the app on the line. +/// +/// Available since: 1.1.0. +/// +/// Description: Get the SDK version. +/// +/// Use cases: +/// 1. When the SDK is running, the developer finds that it does not match the expected situation and submits the problem and related logs to the ZEGO technical staff for locating. The ZEGO technical staff may need the information of the engine version to assist in locating the problem. +/// 2. Developers can also collect this information as the version information of the engine used by the app, so that the SDK corresponding to each version of the app on the line. +/// +/// When to call : It can be called at any time. +/// +/// @return SDK version. ++ (NSString *)getVersion; + ++ (nullable ZIM *)getInstance NS_SWIFT_NAME(shared()); + +// MARK: - Main + +/// Create a ZIM instance. +/// +/// You need to create and initialize an ZIM instance before calling any other function. +/// The SDK supports the creation of multiple ZIM instances. +/// +/// @param appID Application ID issued by ZEGO for developers, please contact ZEGO technical support to apply ++ (nullable ZIM *)createWithAppID:(unsigned int)appID + DEPRECATED_MSG_ATTRIBUTE( + "Deprecated since ZIM 2.3.0, please use [createWithAppConfig] instead."); +/// Create a ZIM instance. +/// +/// You need to create and initialize an ZIM instance before calling any other function. +/// The SDK supports the creation of multiple ZIM instances. +/// +/// @param config Some of the configuration items created. ++ (nullable ZIM *)createWithAppConfig:(ZIMAppConfig *)config; + +/// Destroy the ZIM instance. +/// +/// Used to release resources used by ZIM. +- (void)destroy; + +/// Set log related configuration. +/// +/// @param config Log configuration object. ++ (void)setLogConfig:(ZIMLogConfig *)config; + +/// Set zim advanced configuration. +/// When you need to customize the set advanced configurations, you need to call this function. +/// It must be set before calling [create] to take effect. If it is set after [create], it will take effect at the next [create]. +/// + ++ (void)setAdvancedConfigWithKey:(NSString *)key + value:(NSString *)value + // clang-format off +NS_SWIFT_NAME(setAdvancedConfig(key:value:)); +// clang-format on + ++ (BOOL)setGeofencingConfigWithAreaList:(NSArray *)areaList + type:(ZIMGeofencingType)type + // clang-format off +NS_SWIFT_NAME(setGeofencingConfig(with:type:)); +// clang-format on + +/// Supported version: 1.1.0 and above. +/// +/// Detailed description: Example Set the SDK cache file path. Because the SDK has a default path, it is generally not recommended that you set your own path unless there is a strong need to do so. +/// +/// Default value:Android:/storage/Android/data/[packageName]/files/ZIMCaches +/// iOS:~/Library/Caches/ZIMCaches +/// macOS:(sandbox)~/Library/Containers/[Bundle ID]/Data/Library/Caches/ZIMCaches / ~/Library/Caches/ZIMCaches +/// Windows:C:\Users\[Your UserName]\AppData\[App Name]ZEGO.SDK\ZIMCaches +/// +/// Call timing: It must be called before [create]. +/// +/// Note: If the developer calls after [create], the SDK saves the configuration until it takes effect the next time [Create] is invoked. +/// +/// Related callbacks: In addition to getting the login result in the callback parameter, the developer will also receive the [onConnectionStateChanged] callback during the login request and after the login is successful/failed to determine the current user's login status. +/// +/// Life cycle: Set before calling [create] and takes effect when calling [create]. If the developer does not set the new logging configuration the next time [create] is created, the previous configuration will still take effect. +/// +/// Platform difference: The default path varies with platforms. Please refer to the default value. +/// +/// @param config Cache configuration object. ++ (void)setCacheConfig:(ZIMCacheConfig *)config; + ++ (void)setCustomDispatchQueue:(nonnull dispatch_queue_t)queue; + +/// Set the event notification callbacks that need to be handled. If the eventHandler is set to [nil], all the callbacks set previously will be cleared. +/// +/// @param handler Event notification callback. Developers should override callbacks to focus on specific notifications based on their own business scenarios. +- (void)setEventHandler:(nullable id)handler; + +/// Supported version: 2.4.0 and above. + +/// Detailed description: Log in to the ZIM service. [login] is the most important step of the ZIM function. You need to log in before using any other functions. + +/// Call timing: This function must be called after calling [create] to create an instance and before calling other instance functions. + +/// Note: Before using ZIM's single chat, room, message sending and receiving functions, you must first call this function to log in, and the UI can be displayed to the user through the login result. + +/// Privacy protection statement: remind users not to pass in sensitive information involving personal privacy in the userID parameter, including but not limited to mobile phone number, ID number, passport number, real name, etc. + +/// Related callbacks: In addition to getting the login result in the callback parameter, the developer will also receive the [onConnectionStateChanged] callback during the login request and after the login is successful/failed to determine the current user's login status. +/// @param userInfo Unique ID used to identify the user. Note that the userID must be unique under the same appID, otherwise mutual kicks out will occur. +/// @param callback Callback of the result. +- (void)loginWithUserInfo:(ZIMUserInfo *)userInfo callback:(ZIMLoggedInCallback)callback; + +/// Login, you must log in before using all functions. +/// +/// @param userInfo Unique ID used to identify the user. Note that the userID must be unique under the same appID, otherwise mutual kicks out will occur. +/// @param token The token issued by the developer's business server, used to ensure security. The generation rules are detailed in ZEGO document website. +/// @param callback Callback of the result. +- (void)loginWithUserInfo:(ZIMUserInfo *)userInfo + token:(NSString *)token + callback:(ZIMLoggedInCallback)callback; + +- (void)loginWithUserID:(NSString *)userID + config:(ZIMLoginConfig *)config + callback:(ZIMLoggedInCallback)callback + // clang-format off +NS_SWIFT_NAME(login(with:config:callback:)); +// clang-format on + +/// Upload log and call after setting up log path. +/// +/// Description: After calling [create] to create an instance, the log report can be called. +/// @param callback Callback of the result. +- (void)uploadLog:(ZIMLogUploadedCallback)callback + // clang-format off +NS_SWIFT_NAME(uploadLog(with:)); +// clang-format on + +/// Log out of ZIM service. +- (void)logout; + +/// Update the authentication token. +/// +/// @param token The token issued by the developer's business server, used to ensure security. The generation rules are detailed in ZEGO document website. +/// @param callback Callback of the result. +- (void)renewToken:(NSString *)token callback:(ZIMTokenRenewedCallback)callback; + +/// Available since: 2.2.0 or above. +/// +/// Description: After user logs in, calling this interface could update the user's own user name. +/// +/// When to call: After the user is logged in. +/// +/// Privacy reminder: Try not to pass in sensitive information involving personal privacy, including but not limited to mobile phone numbers, ID numbers, passport numbers, real names, etc. +/// +/// Related callbacks: [onUserNameUpdatedCallback]. +/// +/// Related APIs: [updatedUserExtended] and [queryUsersInfo]. +/// @param userName User name wanted to changed to. +/// @param callback The callback of the update user name. +- (void)updateUserName:(NSString *)userName callback:(ZIMUserNameUpdatedCallback)callback; + +- (void)updateUserAvatarUrl:(NSString *)userAvatarUrl + callback:(ZIMUserAvatarUrlUpdatedCallback)callback; + +/// Available since: 2.2.0 or above. +/// +/// Description: After user logs in, calling this interface could update the user's own user extended data. +/// +/// When to call: After the user is logged in. +/// +/// Privacy reminder: Try not to pass in sensitive information involving personal privacy, including but not limited to mobile phone numbers, ID numbers, passport numbers, real names, etc. +/// +/// Related callbacks: [ onUserNameUpdatedCallback ]. +/// +/// Related APIs: [ updatedUserExtended ] and [ queryUsersInfo ]. +/// @param extendedData User extended data wanted to changed to . +/// @param callback The callback of the update user extended data. +- (void)updateUserExtendedData:(NSString *)extendedData + callback:(ZIMUserExtendedDataUpdatedCallback)callback; + +/// Available since: 2.0.0 and above. +/// +/// Description: Through this interface, you can query and obtain the corresponding UserInfo by userID. +/// +/// When to call /Trigger: It is available only after calling [create] to create the instance and then calling [login] to login. +/// +/// Related callbacks: [ZIMUsersInfoQueriedCallback] +/// +/// @param userIDs userID list. +/// @param config Configuration for user info query +/// @param callback Callback of the result. +- (void)queryUsersInfo:(NSArray *)userIDs + config:(ZIMUsersInfoQueryConfig *)config + callback:(ZIMUsersInfoQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryUsersInfo(by:config:callback:)); +// clang-format on + +//修改离线推送的自定参数 +- (void)updateUserOfflinePushRule:(ZIMUserOfflinePushRule *)offlinePushRule + callback:(ZIMUserOfflinePushRuleUpdatedCallback)callback; +//查询接口 +- (void)querySelfUserInfo:(ZIMSelfUserInfoQueriedCallback)callback; + +- (void)queryUsersStatusByUserIDs:(NSArray *)userIDs + callback:(ZIMUsersStatusQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryUsersStatus(by:callback:)); +// clang-format on + +- (void)subscribeUsersStatus:(NSArray *)userIDs + config:(ZIMUserStatusSubscribeConfig *)config + callback:(ZIMUsersStatusSubscribedCallback)callback; + +- (void)unsubscribeUsersStatus:(NSArray *)userIDs + callback:(ZIMUsersStatusUnsubscribedCallback)callback; + +- (void)querySubscribedUserStatusListWithConfig:(ZIMSubscribedUserStatusQueryConfig *)config + callback:(ZIMSubscribedUserStatusListQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(querySubscribedUserStatusList(with:callback:)); +// clang-format on +// MARK: - Conversation + +- (void)queryConversation:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + callback:(ZIMConversationQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryConversation(by:conversationType:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. + +/// Description: This method displays the session list of the logged in user. + +/// Use cases: This interface can be invoked to get the data source when you need to display an existing message session after logging in. +/// +/// When to call /Trigger: Can be invoked after login. +/// +/// Restrictions:There is no limit to the frequency of use, available after login, unavailable after logout. +/// +/// Caution: NextConversation is the riveting point of the query message, which can be null for the first query. In subsequent query, the earliest conversation can be used as nextConversation to query earlier sessions. In paging query, Count in [ZIMConversationQueryConfig] fill each pull the number of sessions. +/// +/// Related callbacks: [ZIMConversationListQueriedCallback]。 + +/// Related APIs: [deleteConversation] Deletes the session. [clearConversationUnreadMessageCount] clear session readings. +/// +/// @param config Configuration for session queries. +/// @param callback Callback of the result. +- (void)queryConversationListWithConfig:(ZIMConversationQueryConfig *)config + callback:(ZIMConversationListQueriedCallback)callback; + +- (void)queryConversationListWithConfig:(ZIMConversationQueryConfig *)config + option:(ZIMConversationFilterOption *)option + callback:(ZIMConversationListQueriedCallback)callback; +/// Available since: 2.8.0 and above. +/// +/// Description: This method displays the pinned conversation list of the logged in user. +/// +/// Use cases: This interface can be invoked to get the data source when you need to display an existing pinned message conversation after logging in. +/// +/// When to call /Trigger: Can be invoked after login. +/// +/// Restrictions:There is no limit to the frequency of use, available after login, unavailable after logout. +/// +/// Caution: NextConversation is the riveting point of the query message, which can be null for the first query. In subsequent query, the earliest conversation can be used as nextConversation to query earlier sessions. In paging query, Count in [ZIMConversationQueryConfig] fill each pull the number of sessions. +/// @param config Configuration for session queries. +/// @param callback Callback for conversation pinned list query. +- (void)queryConversationPinnedListWithConfig:(ZIMConversationQueryConfig *)config + callback:(ZIMConversationPinnedListQueriedCallback)callback; + +- (void) + queryConversationTotalUnreadMessageCountWithConfig: + (ZIMConversationTotalUnreadMessageCountQueryConfig *)config + callback: + (ZIMConversationTotalUnreadMessageCountQueriedCallback) + callback; + +/// Available since: 2.0.0 and above. +/// +/// Description: This interface is invoked when a session needs to be deleted. All members in the session can invoke this interface. +/// +/// Use cases: You can invoke this interface implementation to delete an entire session when it is no longer needed. +/// +/// When to call /Trigger: his parameter is invoked when a session needs to be deleted and can be invoked after a ZIM instance is created. The call takes effect after login and becomes invalid after logout. +/// +/// Impacts on other APIs: call success will trigger onConversationchanged callback, if the deleted session include unread message triggers [onConversationTotalUnreadMessageCountUpdated] callback. +/// +/// Related callbacks: [ZIMConversationDeletedCallback] +/// +/// @param conversationID conversationID. +/// @param conversationType conversationtype. +/// @param config delete the session's configuration. +/// @param callback Callback of the result. +- (void)deleteConversation:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + config:(ZIMConversationDeleteConfig *)config + callback:(ZIMConversationDeletedCallback)callback + // clang-format off +NS_SWIFT_NAME(deleteConversation(by:conversationType:config:callback:)); +// clang-format on + +/// Available since: 2.12.0 and above. +/// +/// Description: This interface is invoked when all sessions needs to be deleted. All members in sessions can invoke this interface. +/// +/// Use cases: If you want to delete all sessions when they are no longer needed, you can call this interface implementation. +/// +/// When to call /Trigger: his parameter is invoked when sessions needs to be deleted and can be invoked after a ZIM instance is created. The call takes effect after login and becomes invalid after logout. +/// +/// Impacts on other APIs: If deleted sessions include unread message will trigger the [onConversationTotalUnreadMessageCountUpdated] callback, the call is successful at login, and the other end will trigger [onConversationsAllDeleted] callback. +/// +/// Related callbacks: [ZIMConversationsAllDeletedCallback] +- (void)deleteAllConversationsWithConfig:(ZIMConversationDeleteConfig *)config + callback:(ZIMConversationsAllDeletedCallback)callback; + +/// Available since: 2.8.0 and above. +/// +/// Description: This method can modify the pinned state of the specified conversation of the logged-in user. +/// +/// Use cases: You can call this interface when you need to modify the pinned state of a conversation. +/// +/// When to call /Trigger: Can be invoked after login. +/// +/// Restrictions: Available after login, unavailable after logout. +/// +/// Related callbacks: [ZIMConversationPinnedStateUpdatedCallback]. +/// @param isPinned Whether the conversation is pinned, true is pinned, false is unpinned. +/// @param conversationID Conversation ID. +/// @param conversationType Conversation type. +/// @param callback Callback for updating the pinned state of the conversation. +- (void)updateConversationPinnedState:(BOOL)isPinned + conversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + callback:(ZIMConversationPinnedStateUpdatedCallback)callback; + +/// Available since: 2.0.0 and above. +/// +/// Description: Used to clear unread for the current user target session. +/// +/// Use cases: This interface is called when a chat page is entered from a session and the original message readings of the session need to be cleared. +/// +/// When to call /Trigger: Called when a target needs to be cleared without readings. +/// +/// Restrictions: Valid after login, invalid after logout. +/// +/// Impacts on other APIs: Calling this method will trigger a total readings not updated callback [conversationTotalUnreadMessageCountUpdated], would trigger a session to update callbacks [conversationChanged]. +/// +/// Related callbacks:[ZIMConversationUnreadMessageCountClearedCallback]. +/// +/// Related APIs:[conversationTotalUnreadMessageCountUpdated]、[conversationChanged]. +/// +/// @param conversationID conversationID. +/// @param conversationType conversation type. +/// @param callback Callback of the result. +- (void)clearConversationUnreadMessageCount:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + callback: + (ZIMConversationUnreadMessageCountClearedCallback)callback +// clang-format off +NS_SWIFT_NAME(clearConversationUnreadMessageCount(for:conversationType:callback:)); +// clang-format on + +///Available since: 2.12.0 and above. +/// +///Description: Used to clear unread for all sessions. +/// +///Use cases: You can call this interface when you need to clear all unread sessions to zero. +/// +///When to call /Trigger: Called when all session readings need to be cleared. +/// +///Restrictions: Valid after login, invalid after logout. +/// +///Impacts on other APIs: Calling this method will trigger a total readings not updated callback [onConversationTotalUnreadMessageCountUpdated]. +/// +///Related callbacks:[ZIMConversationTotalUnreadMessageCountClearedCallback]. +/// +///Related APIs:[onConversationTotalUnreadMessageCountUpdated]. +- (void)clearConversationTotalUnreadMessageCount: + (ZIMConversationTotalUnreadMessageCountClearedCallback)callback; + +/// Available since: 2.0.0 and above. +/// +/// Description: This method enables DND by selecting whether the unread of the target session is updated when a message is received. +/// +/// Use cases: If the user selects MESSAGE DO not Disturb (DND), the user can call the corresponding method. +/// +/// Default value: Message DND is disabled by default. +/// +/// When to call /Trigger: If the target session exists after login, invoke this interface if you want to enable the DND status of the target session. +/// +/// Restrictions: Valid after login, invalid after logout. +/// +/// Impacts on other APIs: After the DND state is enabled, receiving messages is not triggered [conversationTotalUnreadMessageCountUpdated]. +/// +/// Related callbacks: [ZIMConversationNotificationStatusSetCallback]. +/// +/// Related APIs: [conversationTotalUnreadMessageCountUpdated]. +/// +/// @param status the session notification state. +/// @param conversationID conversationID. +/// @param conversationType conversation type. +/// @param callback Callback of the result. +- (void)setConversationNotificationStatus:(ZIMConversationNotificationStatus)status + conversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + callback:(ZIMConversationNotificationStatusSetCallback)callback; + +/// Available since: 2.5.0 and above. +/// +/// Description: Set all received receipts of the conversation to be read. +/// +/// Use cases: Set all received receipt messages in the entire conversation to be read, and the sender of the message receipt in the conversation will receive the [onConversationMessageReceiptChanged] callback from ZIMEventHandler. +/// +/// When to call: It can be called after login. It is recommended to call before entering the message list page. In the message list page, it is recommended to call [sendMessageReceiptsRead] to batch set the messages that need to be read. +/// +/// Caution: Only single chat conversation are allowed. +/// +/// Related callback: [ZIMConversationMessageReceiptReadSentCallback]. +/// +/// Related APIs: [sendMessageReceiptsRead], [sendMessage]. +/// @param conversationID Conversation ID. +/// @param conversationType Conversation type, only Peer type is supported. +/// @param callback Set Conversation read callback. +- (void)sendConversationMessageReceiptRead:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + callback:(ZIMConversationMessageReceiptReadSentCallback)callback +// clang-format off +NS_SWIFT_NAME(sendConversationMessageReceiptRead(for:conversationType:callback:)); +// clang-format on + +/// Available since: 2.14.0 and above. +/// +/// Description: When you need to set a draft for a session, call this interface, and members of the session can call this interface. +/// +/// Use cases: This interface can be invoked when you need to temporarily save the text message that the user is editing but has not yet sent. +/// +/// When to call /Trigger: Call when you need to set session draft, call after creating ZIM instance, take effect after login, invalid after logout. +/// +/// Impacts on other APIs: A successful call triggers the [onConversationchanged] callback. +/// +/// Related callbacks: [ZIMConversationDraftSetCallback] +/// @param draft Drafts that need to be set. +/// @param conversationID Conversation ID. +/// @param conversationType Conversation type, only Peer type is supported. +/// @param callback Set Conversation draft callback. +- (void)setConversationDraft:(NSString *)draft + conversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + callback:(ZIMConversationDraftSetCallback)callback + // clang-format off +NS_SWIFT_NAME(setConversationDraft(_:conversationID:conversationType:callback:)); +// clang-format on + +- (void)setConversationMark:(NSNumber *)markType + enable:(BOOL)enable + conversationInfos:(NSArray *)conversationInfos + callback:(ZIMConversationMarkSetCallback)callback + // clang-format off +NS_SWIFT_NAME(setConversationMark(_:enable:conversationInfos:callback:)); +// clang-format on + +// MARK: - Message + +/// Available since: 2.0.0 and above. +/// @deprecated This API has been deprecated since 2.4.0, please use [sendMessage] instead. +/// +/// Description: After this function is called, a message is sent to the specified user. At the same time, a [ZIMMessageSentCallback] callback is received, which can be used to determine whether the message is sent successfully. +/// +/// Use cases: This function is used in 1V1 chat scenarios. +/// +/// Call timing/Notification timing: Can be invoked after login. +/// +/// Caution: Be aware of the [ZIMMessageSentCallback] callback when sending. This callback can be used to determine if the send fails for some reason.Pushconfig Is required only when the offline push function is required. +/// +/// Usage limit: no more than 10 /s, available after login, unavailable after logout. +/// +/// Scope of influence: Using this method triggers the [receivePeerMessage] callback of the message receiver and the [onConversationChanged] callback of the sender and receiver. If message DND is not set for the session where the message is sent, Triggers [conversationTotalUnreadMessageCountUpdated] callback. +/// +/// Related callbacks:[ZIMMessageSentCallback]、[receivePeerMessage]、[onConversationChanged]、[conversationTotalUnreadMessageCountUpdated]。 +/// +/// Related API: [queryHistoryMessage]、[deleteMessageByConversationID]、[deleteMessage] +/// +/// @param message The message to be sent. +/// @param toUserID The ID of the user who will receive the message. +/// @param config Related configuration for sending single chat messages. +/// @param callback Callback of the result. +- (void)sendPeerMessage:(ZIMMessage *)message + toUserID:(NSString *)toUserID + config:(ZIMMessageSendConfig *)config + callback:(ZIMMessageSentCallback)callback + DEPRECATED_MSG_ATTRIBUTE("Deprecated since ZIM 2.4.0, please use [sendMessage] instead."); + +/// Supported versions: 2.0.0 and above. +/// Detail description: This interface is called when a group chat message needs to be sent. +/// +/// Business scenario: This interface can be used when sending group messages. +/// +/// Call timing/Notification timing: This interface is called when a group chat message needs to be sent. +/// +/// Usage limit: 10 times/s, available after login, unavailable after logout. +/// +/// Note: pushconfig only needs to be filled in when you need to use the offline push function. The properties in ZIMMessage are read-only and do not need to be modified. +/// +/// Scope of influence: Using this method will trigger the receivePeerMessage callback of the message receiver, and will trigger the onConversationChanged callback of the sender and receiver. If the session where the message is located does not have message DND set, the conversationTotalUnreadMessageCountUpdated callback will be triggered. +/// +/// Related callbacks: [ZIMMessageSentCallback], [receiveGroupMessage], [onConversationChanged], [conversationTotalUnreadMessageCountUpdated]. +/// +/// Related interfaces: [queryHistoryMessage], [deleteMessageByConversationID], [deleteMessage] +/// +/// @param message The message to be sent. +/// @param toGroupID The ID of the user who will receive the message. +/// @param config Related configuration for sending single chat messages. +/// @param callback Callback of the result. +- (void)sendGroupMesage:(ZIMMessage *)message + toGroupID:(NSString *)toGroupID + config:(ZIMMessageSendConfig *)config + callback:(ZIMMessageSentCallback)callback + DEPRECATED_MSG_ATTRIBUTE("Deprecated since ZIM 2.4.0, please use [sendMessage] instead."); + +/// Send room messages. +/// +/// @deprecated This API has been deprecated since 2.4.0, please use [sendMessage] instead. +/// Available since: 1.1.0 or above +/// +/// Description: When this function is called, the message will be sent in the room. At the same time, the [ZIMMessageSentCallback] callback will be received, which can be used to determine whether the message was sent successfully. +/// +/// Use Cases: This feature is required for scenarios where multiple people in the room are chatting. +/// +/// @param message The message to be sent. +/// @param toRoomID The ID of the room which will receive the message. +/// @param config Related configuration for sending room messages. +/// @param callback Callback of the result. +- (void)sendRoomMessage:(ZIMMessage *)message + toRoomID:(NSString *)toRoomID + config:(ZIMMessageSendConfig *)config + callback:(ZIMMessageSentCallback)callback + DEPRECATED_MSG_ATTRIBUTE("Deprecated since ZIM 2.4.0, please use [sendMessage] instead."); + +///Supported versions: 2.4.0 and above. +/// +///Detailed description: This method can be used to send messages in single chat, room and group chat. +/// +///Business scenario: When you need to send message to the target user, target message room, and target group chat after logging in, send it through this interface. +/// +///Call timing/Notification timing: It can be called after login. +/// +///Usage limit: no more than 10/s, available after login, unavailable after logout. +/// +///Related callback: [ZIMMessageSentCallback], [ZIMMessageSendNotification], [onReceivePeMessage], [onReceiveRoomMessage], [onReceiveGroupMessage], [onConversationChanged], [onConversationTotalUnreadMessageCountUpdated]. +/// +///Related interfaces: [queryHistoryMessage], [deleteAllMessage], [deleteMessages],[sendMediaMessage] +///@param message The message to be sent. +///@param toConversationID The conversation ID the message needs to be sent. +///@param conversationType Conversation type, supports single chat, room and group chat. +///@param config Related configuration for sending messages. +///@param notification Related notifications when messages are sent. +///@param callback Callback of the sending result of the message. +- (void)sendMessage:(ZIMMessage *)message + toConversationID:(NSString *)toConversationID + conversationType:(ZIMConversationType)conversationType + config:(ZIMMessageSendConfig *)config + notification:(nullable ZIMMessageSendNotification *)notification + callback:(ZIMMessageSentCallback)callback + // clang-format off +NS_SWIFT_NAME(sendMessage(_:toConversationID:conversationType:config:notification:callback:)); +// clang-format on + +/// Send media messages. +/// +/// Supported versions: 2.1.0 and above. +/// +/// Detailed description: This method can be used to send messages in single chat, room and group chat. +/// +/// Business scenario: When you need to send media to the target user, target message room, and target group chat after logging in, send it through this interface. +/// +/// Call timing/Notification timing: It can be called after login. +/// +/// Usage limit: no more than 10/s, available after login, unavailable after logout. +/// +/// Related: [ZIMMessageSentCallback], [ZIMMediaUploadingProgress], [onReceivePeMessage], [onReceiveRoomMessage], [onReceiveGroupMessage], [onConversationChanged], [onConversationTotalUnreadMessageCountUpdated]. +/// +/// Related interfaces: [queryHistoryMessage], [deleteAllMessage], [deleteMessages] +/// +/// @param message The message to be sent. +/// @param toConversationID The ID of the conversation which will receive the message. +/// @param conversationType The type of the conversation which will receive the message. +/// @param config Related configuration for sending single chat messages. +/// @param progress Callback of the progress. +/// @param callback Callback of the result. +- (void)sendMediaMessage:(ZIMMediaMessage *)message + toConversationID:(NSString *)toConversationID + conversationType:(ZIMConversationType)conversationType + config:(ZIMMessageSendConfig *)config + progress:(ZIMMediaUploadingProgress)progress + callback:(ZIMMessageSentCallback)callback + DEPRECATED_MSG_ATTRIBUTE( + "Deprecated since ZIM 2.4.0, please use another [sendMediaMessage] instead") + // clang-format off +NS_SWIFT_NAME(sendMediaMessage(_:toConversationID:conversationType:config:progress:callback:)); +// clang-format on + +/// Supported versions: 2.4.0 and above. +/// +/// Detailed description: This method can be used to send messages in single chat, room and group chat. +/// +/// Business scenario: When you need to send media to the target user, target message room, and target group chat after logging in, send it through this interface. +/// +/// Call timing/Notification timing: It can be called after login. +/// +/// Usage limit: no more than 10/s, available after login, unavailable after logout. +/// +/// Impact: [onReceivePeerMessage]/[ReceiveGroupMessage] sessions and session-scoped [onReceiveGroupMessage] sessions did not fire message receiver's [ConversationR] fires [onversationTotalUnreadMessageCountUpdated] objection. +/// +/// Note: Only required if you need to use the threaded update feature when pushing configuration. Push notifications are not supported, nor are [onContationChanged] and [ConTotalUnreadMessageCountUpdated] supported if media messages are broadcast to the world. +/// +/// Related: [ZIMMessageSentCallback], [ZIMMediaMessageSendNotification], [onReceivePeMessage], [onReceiveRoomMessage], [onReceiveGroupMessage], [onConversationChanged], [onConversationTotalUnreadMessageCountUpdated]. +/// +/// Related interfaces: [queryHistoryMessage], [deleteAllMessage], [deleteMessages] +/// @param message When using the message to be sent, modify the type of message according to the type of multimedia message. For example, when sending image messages, use ZIMImageMessage. +/// @param toConversationID The conversation ID of the message recipient, supports single chat, room and group chat. +/// @param conversationType Conversation type, supports single chat, room and group chat. +/// @param config Related configuration for sending messages. +/// @param notification Relevant notifications when sending media messages, including upload progress, etc. +/// @param callback Result callback for sending media messages. +- (void)sendMediaMessage:(ZIMMediaMessage *)message + toConversationID:(NSString *)toConversationID + conversationType:(ZIMConversationType)conversationType + config:(ZIMMessageSendConfig *)config + notification:(nullable ZIMMediaMessageSendNotification *)notification + callback:(ZIMMessageSentCallback)callback + // clang-format off +NS_SWIFT_NAME(sendMediaMessage(_:toConversationID:conversationType:config:notification:callback:)); +// clang-format on + +/// Download media message content. +/// +/// Supported versions: 2.1.0 and above. +/// +/// Detailed description: This method can be used to download the content of media messages, including the original image, large image, thumbnail image, file message, audio message, video message and the first frame of the image message. +/// +/// Service scenario: After the user receives a message, if the message is a media message, he can call this API to download its content. +/// +/// Invoke timing/notification timing: can be invoked after logging in and receiving a media message. +/// +/// Related callbacks: [ZIMMediaDownloadedCallback], [ZIMMediadownloadingProgress]. +/// @param message The message to be received. +/// @param fileType Media file type +/// @param progress Callback of the progress. +/// @param callback Callback of the result. +- (void)downloadMediaFileWithMessage:(ZIMMediaMessage *)message + fileType:(ZIMMediaFileType)fileType + progress:(ZIMMediaDownloadingProgress)progress + callback:(ZIMMediaDownloadedCallback)callback; + +/// Supported versions: 2.0.0 and above. + +/// Detailed description: This method is used to query historical messages. +/// +/// Business scenario: When you need to obtain past historical messages, you can call this interface to query historical messages by paging. +/// +/// Call timing/Notification timing: Called when historical messages need to be queried. +/// +/// Restrictions: Effective after login, invalid after logout. +/// +/// Related callbacks: [ZIMMessageQueriedCallback] +/// +/// @param conversationID The session ID of the queried historical message. +/// @param conversationType The type of the queried historical message. +/// @param config Query the configuration of historical messages. +/// @param callback Callback of the result. +- (void)queryHistoryMessageByConversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + config:(ZIMMessageQueryConfig *)config + callback:(ZIMMessageQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryHistoryMessage(by:conversationType:config:callback:)); +// clang-format on + +- (void)queryMessagesByMessageSeqs:(NSArray *)messageSeqs + conversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + callback:(ZIMMessageQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryMessages(by:conversationID:conversationType:callback:)); +// clang-format on + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: When you need to delete all messages under the target session, call this method. +/// +/// Business scenario: If you want to implement a group setting page to clear the chat information under the current session, you can call this interface. +/// +/// Call timing/Notify timing: The target session exists and the user is a member of this session. +/// +/// Restrictions: Effective after login, invalid after logout. +/// +/// Note: The impact of deleting messages is limited to this account, and messages from other accounts will not be deleted. +/// +/// Scope of influence: The [conversationChanged] callback is triggered, and if there are unread messages, the [conversationTotalUnreadMessageCountUpdated] callback is triggered. +/// +/// Related callback: [ZIMMessageDeletedCallback]. +/// +/// @param conversationID The session ID of the message to be deleted. +/// @param conversationType conversation type. +/// @param config delete session configuration. +/// @param callback Callback of the result. +- (void)deleteAllMessageByConversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + config:(ZIMMessageDeleteConfig *)config + callback:(ZIMMessageDeletedCallback)callback + // clang-format off +NS_SWIFT_NAME(deleteAllMessage(by:conversationType:config:callback:)); +// clang-format on + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: This method implements the function of deleting messages. +/// +/// Business scenario: The user needs to delete a message. When the user does not need to display a message, this method can be used to delete it. +/// +/// Call timing/Notification timing: Called when the message needs to be deleted. +/// +/// Note: The impact of deleting messages is limited to this account. +/// +/// Restrictions: Effective after login, invalid after logout. +/// +/// Scope of influence: If the deleted message is the latest message of the session, the [conversationChanged] callback will be triggered, and if the message is unread, the [conversationTotalUnreadMessageCountUpdated] callback will be triggered. +/// +/// @param messageList List of deleted messages. +/// @param conversationID conversation ID. +/// @param conversationType conversation type. +/// @param config Delete the configuration of the message. +/// @param callback Callback of the result. +- (void)deleteMessages:(NSArray *)messageList + conversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + config:(ZIMMessageDeleteConfig *)config + callback:(ZIMMessageDeletedCallback)callback + // clang-format off +NS_SWIFT_NAME(deleteMessages(_:conversationID:conversationType:config:callback:)); +// clang-format on + +///Supported versions: 2.14.0 and above. +/// +///Detail description: This method implements the function of deleting all messages for all sessions. +/// +///Business scenario: The user needs to delete a message. When the user does not need to display a message, this method can be used to delete it. +/// +///Call timing/Notification timing: Called when you need to delete all messages for all sessions. +/// +///Note: The sdk deletes lastMessage for each conversation, but does not trigger [onConversationChanged] for each conversation. +///To update the last message of the conversation, call [queryConversationList] again to retrieve the conversation list from the sdk. +///IsAlsoDeleteServerMessage decided whether to delete a server message, the impact of deleting messages is limited to this account. +/// +///Restrictions: Effective after login. +/// +///Impacts on other APIs: Call the interface trigger [onMessageDeleted] callback, if there are unread messages at this time, will trigger [onConversationTotalUnreadMessageCountUpdated] callback. +/// +///Related callbacks:[ZIMConversationMessagesAllDeletedCallback]、[onMessageDeleted]、[onConversationTotalUnreadMessageCountUpdated]. +/// @param config Delete the configuration of message. +/// @param callback Returns the result of deleting all messages. +- (void)deleteAllConversationMessagesWithConfig:(ZIMMessageDeleteConfig *)config + callback:(ZIMConversationMessagesAllDeletedCallback)callback + // clang-format off +NS_SWIFT_NAME(deleteAllConversationMessages(with:callback:)); +// clang-format on + +/// Supported Versions: 2.4.0 and above. +/// +/// Detail description: This method can insert a message directly to the local DB on the client side. +/// +/// Business scenario: The developer can combine the system message type, and convert the callback notification (for example, invite someone into the group, remove someone from the group, etc.) to the system message type on the client side and insert it into the local DB to achieve the effect of the system prompt . +/// +/// Call timing/Notification timing: It can be called after login. +/// +/// Related callback: [ZIMMessageInsertedCallback] +/// +/// Related interfaces: [queryHistoryMessage], [deleteAllMessage], [deleteMessages] +/// @param message The message to be insert. +/// @param conversationID Conversation ID. +/// @param conversationType Conversation type. +/// @param senderUserID The sender ID of this message. +/// @param callback The result callback of the inserted message. +- (void)insertMessageToLocalDB:(ZIMMessage *)message + conversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + senderUserID:(NSString *)senderUserID + callback:(ZIMMessageInsertedCallback)callback + // clang-format off +NS_SWIFT_NAME(insertMessageToLocalDB(_:conversationID:conversationType:senderUserID:callback:)); +// clang-format on + +/// Available since: 2.5.0 and above. +/// +/// Description: This method can set the receipt of a batch of messages to become read. +/// +/// Use cases: Developers can use this method to set a batch of messages with receipts that have been read. If the sender is online, it will receive the [onMessageReceiptChanged] callback. +/// +/// When to call: Callable after login. It is recommended to set the settings for the messages that need to be read on the message list page. It is not recommended to mix with [sendConversationMessageReceiptRead]. +/// +/// Restrictions: Only support the settings for received messages with receipt status as PROCESSING. +/// +/// Related callbacks: [ZIMMessageReceiptsReadSentCallback]. +/// +/// Related APIs: [sendMessage]. +/// @param messageList To set the list of read messages. +/// @param conversationID Conversation ID. +/// @param conversationType Conversation type. +/// @param callback Set the result callback of the read message. +- (void)sendMessageReceiptsRead:(NSArray *)messageList + conversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + callback:(ZIMMessageReceiptsReadSentCallback)callback; + +/// Available since: 2.5.0 and above. +/// +/// Description: This method can query the receipt information of a batch of messages, including the status, the number of unread users and the number of read users. +/// +/// Use cases: If you need to query the receipt status of the message, the number of unread users and the number of read users, you can call this interface. +/// +/// When to call: Callable after login. If you need to query the detailed member list, you can query through the interface [queryGroupMessageReceiptReadMemberList] or [queryGroupMessageReceiptUnreadMemberList]. +/// +/// Restrictions: Only messages whose statuses are not NONE and UNKNOWN are supported. +/// +/// Related callbacks: [ZIMMessageReceiptsInfoQueriedCallback]. +/// +/// Related APIs: [queryGroupMessageReceiptReadMemberList] , [queryGroupMessageReceiptUnreadMemberList]. +/// @param messageList list of messages to query. +/// @param conversationID Conversation ID. +/// @param conversationType Conversation type. +/// @param callback Callback for the result of querying message receipt information. +- (void)queryMessageReceiptsInfoByMessageList:(NSArray *)messageList + conversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + callback:(ZIMMessageReceiptsInfoQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryMessageReceiptsInfo(by:conversationID:conversationType:callback:)); +// clang-format on + +/// Available sinces: 2.5.0 and above. +/// +/// Detail description: This method implements the function of revoking messages. +/// +/// Use cases: The user needs to recall a message. This method can be used when the user does not want other users to see the message. +/// +/// When to call: Called when the message needs to be revoked. +/// +/// Note: Room message revoke is not supported. +/// +/// Restrictions: Effective after login. +/// +/// Related callbacks: If the revoked message is the latest message of the session, the [conversationChanged] callback will be triggered, and if the message is unread, the [conversationTotalUnreadMessageCountUpdated] callback will be triggered. +/// Scope of influence: If the revoked message is the latest message of the session, the [conversationChanged] callback will be triggered, and if the message is unread, the [conversationTotalUnreadMessageCountUpdated] callback will be triggered. +/// @param message The message needs to be revok. +/// @param config Revoke the configuration of the message. +/// @param callback Returns the result of revoking the message. +- (void)revokeMessage:(ZIMMessage *)message + config:(ZIMMessageRevokeConfig *)config + callback:(ZIMMessageRevokedCallback)callback; + +- (void)replyMessage:(ZIMMessage *)message + toOriginalMessage:(ZIMMessage *)toOriginalMessage + config:(ZIMMessageSendConfig *)config + notification:(nullable ZIMMessageSendNotification *)notification + callback:(ZIMMessageSentCallback)callback + // clang-format off +NS_SWIFT_NAME(replyMessage(_:toOriginalMessage:config:notification:callback:)); +// clang-format on + +- (void)queryMessageRepliedListByMessage:(ZIMMessage *)message + config:(ZIMMessageRepliedListQueryConfig *)config + callback:(ZIMMessageRepliedListQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryMessageRepliedList(by:config:callback:)); +// clang-format on + +/// Update the local expandable field of the message. +/// +/// Description: After the user logs in, calling this interface allows updating the local expandable field of the message. +/// +/// @param extended_data The expandable message field visible only on this end can store additional information locally and currently has a length limit of 128K. If you have special requirements, please contact ZEGO technical support for configuration. +/// @param message Message body to be updated. +/// @param callback Callback function to modify local extension fields. +- (void)updateMessageLocalExtendedData:(NSString *)localExtendedData + message:(ZIMMessage *)message + callback:(ZIMMessageLocalExtendedDataUpdatedCallback)callback; + +- (void)importLocalMessagesFromFolderPath:(NSString *)folderPath + config:(ZIMMessageImportConfig *)config + progress:(ZIMMessageImportingProgress)progress + callback:(ZIMMessageImportedCallback)callback; + +- (void)exportLocalMessagesToFolderPath:(NSString *)folderPath + config:(ZIMMessageExportConfig *)config + progress:(ZIMMessageExportingProgress)progress + callback:(ZIMMessageExportedCallback)callback; + +- (void)clearLocalFileCacheWithConfig:(ZIMFileCacheClearConfig *)config + callback:(ZIMFileCacheClearedCallback)callback; + +- (void)queryLocalFileCacheWithConfig:(ZIMFileCacheQueryConfig *)config + callback:(ZIMFileCacheQueriedCallback)callback; + +/// Search local message list. +/// +/// Supported versions: 2.9.0 and above. +/// +/// Detailed description: This method is used to search local messages. +/// +/// Business scenario: When it is necessary to search for past local messages based on keywords or other conditions, this interface can be called to perform pagination search for local messages. +/// +/// Restrictions: Effective after login, invalid after logout. Searching is not supported in the room scene (conversationType=1). +/// +/// Related callbacks: [ZIMMessagesSearchedCallback]. +/// +/// @param conversationID The conversation ID of the local message to be searchd. +/// @param conversationType conversation type. +/// @param config Search the configuration of local messages. +/// @param callback Callback of the search local message result. +- (void)searchLocalMessagesByConversationID:(NSString *)conversationID + conversationType:(ZIMConversationType)conversationType + config:(ZIMMessageSearchConfig *)config + callback:(ZIMMessagesSearchedCallback)callback + // clang-format off +NS_SWIFT_NAME(searchLocalMessages(by:conversationType:config:callback:)); +// clang-format on + +/// Search global local message list. +/// +/// Supported versions: 2.9.0 and above. +/// +/// Detailed description: This method is used to search global local messages. +/// +/// Business scenario: When there is a need to perform a global search of previous local messages based on keywords or other conditions, you can invoke this interface to search local messages by grouping them according to conversations. +/// +/// Restrictions: Effective after login, invalid after logout. Searching global is not supported in the room scene (conversationType=1). +/// +/// Related callbacks: [ZIMMessagesGlobalSearchedCallback]. +/// +/// @param config Search global the configuration of local messages. +/// @param callback Callback of the search global local message result. +- (void)searchGlobalLocalMessagesWithConfig:(ZIMMessageSearchConfig *)config + callback:(ZIMMessagesGlobalSearchedCallback)callback; + +/// Search local conversations on local messages. +/// +/// Supported versions: 2.9.0 and above. +/// +/// Detailed description: This method is used for searching local conversations based on local messages. +/// +/// Business scenario: When there is a need to search conversations using keywords or other conditions, this API can be called for searching. +/// +/// Call timing/Notification timing: It should be invoked when there is a requirement to search conversations using keywords or other conditions. +/// +/// Restrictions: effective after logging in and becomes invalid after logging out. Searching is not supported in room scenarios (conversationType=1). +/// +/// Related callbacks: [ZIMConversationsSearchedCallback]. +/// @param config Global search conversation config. +/// @param callback Callback of the search conversations result. +- (void)searchLocalConversationsWithConfig:(ZIMConversationSearchConfig *)config + callback:(ZIMConversationsSearchedCallback)callback; +/// Available sinces: 2.10.0 and above. +/// +/// Detail description: Message reaction refers to the user's response to a message. It can generally be used to add or remove emoticons for single chat or group chat messages, as well as to initiate group voting, confirm group results, and other operations. +/// +/// Use cases: Users need to express their position on a certain message, such as liking, and this method can be used to express their position. +/// +/// Note: Room message reaction is not supported. +/// +/// Restrictions: You can only use it after logging in. And only supports message reactions for single chat and group chat +/// +/// Related callbacks: If the addition is successful, the [onMessageReactionsChanged] callback will be triggered. If the reaction is made to the latest message in the conversation, the [onConversationChanged] callback will be triggered when the addition is successful. +/// +/// @param reactionType Type of reaction, defined by you, with a maximum length of 32 bytes. +/// @param message The message needs reaction. +/// @param callback Returns the result of adding message reaction. +- (void)addMessageReaction:(NSString *)reactionType + message:(ZIMMessage *)message + callback:(ZIMMessageReactionAddedCallback)callback; + +/// Available sinces: 2.10.0 and above. +/// +/// Detail description: Delete the reaction made by the local user. +/// +/// Use cases: Users need to delete the status of a message that has already been stated, which can be done using this method. +/// +/// Note: Room message reaction is not supported. +/// +/// Restrictions: You can only use it after logging in. And only supports message statements for single chat and group chat +/// +/// Related callbacks: If the deletion is successful, the [onMessageReactionsChanged] callback will be triggered. If the reaction is deleted from the latest message in the conversation, the [onConversationChanged] callback will be triggered when the addition is successful. +/// +/// @param message The message needs querying reaction user list. +/// @param config reaction user query config. +/// @param callback the result of querying reaction user list. +- (void)deleteMessageReaction:(NSString *)reactionType + message:(ZIMMessage *)message + callback:(ZIMMessageReactionDeletedCallback)callback; + +/// Available sinces: 2.10.0 and above. +/// +/// Detail description: This method is used to query specific user information under a certain state of a message. +/// +/// Use cases: When it is necessary to obtain specific user information under a certain state of a message, this interface can be called to query state user messages in a paginated manner. +/// +/// Restrictions: You can only use it after logging in. And only supports message statements for single chat and group chat +/// +/// @param reactionType Reaction type. It must be the type of reaction made by the local user. +/// @param message The message needs reaction delete. +/// @param callback Returns the result of deleting reaction of the message. +- (void)queryMessageReactionUserListByMessage:(ZIMMessage *)message + config:(ZIMMessageReactionUserQueryConfig *)config + callback:(ZIMMessageReactionUserListQueriedCallback)callback; + +- (void)queryCombineMessageDetailByMessage:(ZIMCombineMessage *)message + callback:(ZIMCombineMessageDetailQueriedCallback)callback; +// MARK: - Room + +/// Create a room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: When a room is created, other users can join this room through [joinRoom] function. +/// +/// Use cases: When you need to create a multi-person chat scene, you can create a room by this API. +/// +/// When to call: It can be called after creating a ZIM instance through [create]. +/// +/// Caution: When everyone leaves the room, the room will be automatically destroyed. +/// +/// Related callbacks: The result of the room creation can be obtained through the [ZIMRoomCreatedCallback] callback. +/// +/// Related APIs: You can join the room through [joinRoom] and leave the room with [leaveRoom]. +/// +/// @param roomInfo The configuration information of the room to be created. +/// @param callback Callback of the result. +- (void)createRoom:(ZIMRoomInfo *)roomInfo + callback:(ZIMRoomCreatedCallback)callback + // clang-format off +NS_SWIFT_NAME(createRoom(with:callback:)); +// clang-format on + +/// Create a room. +/// +/// Available since: 1.3.0. +/// +/// Description: When a room is created, other users can join this room through [joinRoom] function. +/// +/// Use cases: When you need to create a multi-person chat scene, you can create a room by this API. +/// +/// When to call: It can be called after creating a ZIM instance through [create]. +/// +/// Caution: When everyone leaves the room, the room will be automatically destroyed. +/// +/// Related callbacks: The result of the room creation can be obtained through the [ZIMRoomCreatedCallback] callback. +/// +/// Related APIs: You can join the room through [joinRoom] and leave the room with [leaveRoom]. +/// +/// @param roomInfo The configuration information of the room to be created. +/// @param config The advanced information of the room to be created. +/// @param callback Callback of the result. +- (void)createRoom:(ZIMRoomInfo *)roomInfo + config:(ZIMRoomAdvancedConfig *)config + callback:(ZIMRoomCreatedCallback)callback + // clang-format off +NS_SWIFT_NAME(createRoom(with:config:callback:)); +// clang-format on + +/// Join a room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: If the room does not exist, the join fails and you need to call [createRoom] to create the room first. +/// +/// Use cases: In a multi-person chat scenario, users can call this interface to enter the room when they need to join the room. +/// +/// When to call: It can be called after creating a ZIM instance through [create]. +/// +/// Caution: When everyone leaves the room, the room will be automatically destroyed. +/// +/// Related callbacks: The result of joining the room can be obtained through the [ZIMRoomJoinedCallback] callback. +/// +/// Related APIs: You can create a room with [createRoom] and leave the room with [leaveRoom]. +/// +/// @param roomID ID of the room to join. +/// @param callback Callback of the result of joining the room. +- (void)joinRoom:(NSString *)roomID + callback:(ZIMRoomJoinedCallback)callback + // clang-format off +NS_SWIFT_NAME(joinRoom(by:callback:)); +// clang-format on + +- (void)enterRoom:(ZIMRoomInfo *)roomInfo + config:(nullable ZIMRoomAdvancedConfig *)config + callback:(ZIMRoomEnteredCallback)callback + // clang-format off +NS_SWIFT_NAME(enterRoom(with:config:callback:)); +// clang-format on + +- (void)switchRoomFromRoomID:(NSString *)roomID + toRoomInfo:(ZIMRoomInfo *)toRoomInfo + isCreateWhenRoomNotExisted:(BOOL)isCreateWhenRoomNotExisted + config:(ZIMRoomAdvancedConfig *)config + callback:(ZIMRoomSwitchedCallback)callback; + +/// Leave a room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: When users in the room need to leave the room, they can join this room through [leaveRoom]. +/// +/// Use cases: In the multi-person chat scenario, when users in the room need to leave the room, they can leave the room through this interface. +/// +/// When to call: After creating a ZIM instance via [create], it can be called when the user is in the room. +/// +/// Caution: If the current user is not in this room, the exit fails. When everyone leaves the room, the room will be automatically destroyed. +/// +/// Related callbacks: The result of leaving the room can be obtained through the [ZIMRoomLeftCallback] callback. +/// +/// Related APIs: You can create a room through [createRoom] and join a room with [joinRoom]. +/// +/// @param roomID ID of the room to leave. +/// @param callback Callback of the result of joining the room. +- (void)leaveRoom:(NSString *)roomID + callback:(ZIMRoomLeftCallback)callback + // clang-format off +NS_SWIFT_NAME(leaveRoom(by:callback:)); + +- (void)leaveAllRoom:(ZIMRoomAllLeftCallback)callback; +// clang-format on + +/// Available since: 2.8.0 and above. +/// +/// Description: This method can query the information of up to ten users in the specified room of the logged-in user. +/// +/// Use cases: When you need to know the user information in the specified room, you can call this interface to obtain the data source. +/// +/// When to call /Trigger: Can be invoked after login. +/// +/// Restrictions: Available after login, unavailable after logout, up to ten users can be queried at one time. +/// @param List of user IDs to query. +/// @param roomID ID of the room to leave. +/// @param callback Callback for querying room user information. +- (void)queryRoomMembersByUserIDs:(NSArray *)userIDs + roomID:(NSString *)roomID + callback:(ZIMRoomMembersQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryRoomMembers(by:roomID:callback:)); +// clang-format on + +/// Query the list of members in the room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: After joining a room, you can use this function to get the list of members in the room. +/// +/// Use cases: When a developer needs to obtain a list of room members for other business operations, this interface can be called to obtain a list of members. +/// +/// When to call: After creating a ZIM instance through [create], and the user is in the room that needs to be queried, you can call this interface. +/// +/// Caution: If the user is not currently in this room, the query fails. +/// +/// Related callbacks: Through the [ZIMRoomMemberQueriedCallback] callback, you can get the result of querying the room member list. +/// +/// Related APIs: You can check the online number of people in the room through [queryRoomOnlineMemberCount]. +/// +/// @param roomID ID of the room to query. +/// @param config Configuration of query room member operation. +/// @param callback Callback for the result of querying room members list. +- (void)queryRoomMemberListByRoomID:(NSString *)roomID + config:(ZIMRoomMemberQueryConfig *)config + callback:(ZIMRoomMemberQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryRoomMemberList(by:config:callback:)); +// clang-format on + +/// Query the number of online members in the room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: After joining a room, you can use this function to get the number of online members in the room. +/// +/// Use cases: When a developer needs to obtain the number of room members who are online, this interface can be called. +/// +/// Calling time: After creating a ZIM instance through [create], and the user is in the room that needs to be queried, this interface can be called. +/// +/// Caution: If the user is not currently in this room, the query will fail. +/// +/// Related callbacks: The result of querying the online number of room members can be obtained through the [ZIMRoomOnlineMemberCountQueriedCallback] callback. +/// +/// Related APIs: the room member can be inquired through [queryRoomMember]. +/// +/// @param roomID ID of the room to query. +/// @param callback Callback for the result of querying room online members count. +- (void)queryRoomOnlineMemberCountByRoomID:(NSString *)roomID + callback:(ZIMRoomOnlineMemberCountQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryRoomOnlineMemberCount(by:callback:)); +// clang-format on + +/// Set room attributes (use this for all additions and changes). +/// +/// Available since: 1.3.0. +/// +/// Description: Used to set room properties. +/// +/// @param roomAttributes room attributes will be set. +/// @param roomID ID of the room to set. +/// @param config config of the room to set. +/// @param callback Callback for the result of setting room attributes. +- (void)setRoomAttributes:(NSDictionary *)roomAttributes + roomID:(NSString *)roomID + config:(nullable ZIMRoomAttributesSetConfig *)config + callback:(ZIMRoomAttributesOperatedCallback)callback + // clang-format off +NS_SWIFT_NAME(setRoomAttributes(_:roomID:config:callback:)); +// clang-format on + +/// Delete room attributes. +/// +/// Available since: 1.3.0. +/// +/// Description: Used to delete room attributes. +/// +/// @param keys room attributes keys will be deleted. +/// @param roomID ID of the room to deleted. +/// @param config config of the room to deleted. +/// @param callback Callback for the result of operation room attributes. +- (void)deleteRoomAttributesByKeys:(NSArray *)keys + roomID:(NSString *)roomID + config:(nullable ZIMRoomAttributesDeleteConfig *)config + callback:(ZIMRoomAttributesOperatedCallback)callback + // clang-format off +NS_SWIFT_NAME(deleteRoomAttributes(by:roomID:config:callback:)); +// clang-format on + +/// Open combination room attribute operation. +/// +/// Available since: 1.3.0. +/// +/// Description: Used to turn on the combination of room attributes. +/// +/// @param roomID ID of the room to operation. +/// @param config config of the room to turn on the combination of room attributes. +- (void)beginRoomAttributesBatchOperationWithRoomID:(NSString *)roomID + config: + (nullable ZIMRoomAttributesBatchOperationConfig *) + config + // clang-format off +NS_SWIFT_NAME(beginRoomAttributesBatchOperation(with:config:)); +// clang-format on + +/// Complete the property operation of the combined room. +/// +/// Available since: 1.3.0. +/// +/// Description: After completing the operation of combining room attributes, +/// all the setting/deleting operations from the last call to beginRoomAttributesBatchOperation +/// to this operation will be completed for the room. +/// +/// @param roomID ID of the room to operation. +/// @param callback Callback for the result of operation combination of room attributes. +- (void)endRoomAttributesBatchOperationWithRoomID:(NSString *)roomID + callback:(ZIMRoomAttributesBatchOperatedCallback)callback + // clang-format off +NS_SWIFT_NAME(endRoomAttributesBatchOperation(with:callback:)); +// clang-format on + +/// Query all properties of the room. +/// +/// Available since: 1.3.0. +/// +/// Used to query room attributes. +/// +/// @param roomID ID of the room to queried. +/// @param callback Callback for the result of quering room attributes. +- (void)queryRoomAllAttributesByRoomID:(NSString *)roomID + callback:(ZIMRoomAttributesQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryRoomAllAttributes(by:callback:)); +// clang-format on + +/// Available since:2.4.0 or later. +/// +/// Description:Call this API to batch query the room user attributes of the members in the room. +/// +/// Use cases:Use this interface when you need to specify that you want to query some room users. +/// +/// Restrictions:The maximum call frequency is 5 times within 30 seconds by default, and the maximum query time is 100 people. +/// +/// Related callbacks:[ZIMRoomMembersAttributesQueriedCallback] +/// +/// Related APIs: [setRoomMembersAttributes]、[queryRoomMemberAttributesList] +/// +/// Runtime lifecycle: It is available after logging in and joining the corresponding room, but unavailable after leaving the corresponding room. +/// +/// @param userIDs A list of userIDs to query. +/// @param roomID Room ID. +/// @param callback Callback for the result of batch query of room user attributes. +- (void)queryRoomMembersAttributesByUserIDs:(NSArray *)userIDs + roomID:(NSString *)roomID + callback:(ZIMRoomMembersAttributesQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryRoomMembersAttributes(by:roomID:callback:)); +// clang-format on + +/// Available since:2.4.0 or later. +/// +/// Description:Call the API to paginate the room user properties that have room property members in the room. +/// +/// Use cases:This interface is used when you need to query all room users. +/// +/// Restrictions:The maximum call frequency is 5 times within 30 seconds by default, and the maximum query time is 100 people. +/// +/// Related callbacks:[ZIMRoomMemberAttributesListQueriedCallback] +/// +/// Related APIs: [setRoomMembersAttributes]、[queryRoomMembersAttributes] +/// +/// Runtime lifecycle: It is available after logging in and joining the corresponding room, but unavailable after leaving the corresponding room. +/// +/// @param roomID Room ID. +/// @param config Behavior configuration of the operation. +/// @param callback Result callback for querying member attributes in the room. +- (void)queryRoomMemberAttributesListByRoomID:(NSString *)roomID + config:(ZIMRoomMemberAttributesQueryConfig *)config + callback:(ZIMRoomMemberAttributesListQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryRoomMemberAttributesList(by:config:callback:)); +// clang-format on + +/// Supported Versions: 2.4.0 and above. +/// +/// Detail description: Call this API to set room user properties of members in the room. +/// +/// Business scenario: If you need to set a level for members in the room, you can use this interface to set a state. +/// +/// Default: [ZIMRoomMemberAttributesSetConfig] Default constructor isDeleteAfterOwnerLeft is true. +/// +/// Call timing/Notification timing: After logging in and calling in the relevant room. +/// +/// Usage limit: background limit, default 20 +/// +/// Relevant callback: [ZIMRoomMembersAttributesOperatedCallback],[onRoomMemberAttributesUpdated] +/// +/// Related interfaces: [queryRoomMembersAttributes], [queryRoomMemberAttributesList]. +/// @param attributes Room member attributes to be set. +/// @param userIDs A list of userIDs to set. +/// @param roomID Room ID. +/// @param config Behavior configuration of the operation. +/// @param callback Action callback for setting room members attributes. +- (void)setRoomMembersAttributes:(NSDictionary *)attributes + userIDs:(NSArray *)userIDs + roomID:(NSString *)roomID + config:(ZIMRoomMemberAttributesSetConfig *)config + callback:(ZIMRoomMembersAttributesOperatedCallback)callback; + +// MARK: - Group +/// Available since: 2.0.0 and above. +/// +/// Description: You can call this interface to create a group, and the person who calls this interface is the group leader. An empty string if the group name is left blank. +/// +/// Use cases: You can use this interface to create a chat scenario and join a group. +/// +/// When to call: After you create a ZIM instance with [create] and login with [login]. +/// +/// Restrictions: Available after login, unavailable after logout. UserIDs support a maximum of 100 users and a group supports a maximum of 500 users. +/// +/// Impacts on other APIs: You can use [joinGroup] to join a group, [leaveGroup] to leave a group, or [dismissGroup] to dismiss a group. +/// +/// Related callbacks: The result of creating the group is obtained through the [ZIMGroupCreatedCallback] callback. +/// +/// @param groupInfo Configuration information for the group to be created. +/// @param userIDs List of users invited to the group. +/// @param callback Callback for the result of creating a group. +- (void)createGroup:(ZIMGroupInfo *)groupInfo + userIDs:(NSArray *)userIDs + callback:(ZIMGroupCreatedCallback)callback + // clang-format off +NS_SWIFT_NAME(createGroup(with:userIDs:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: You can call this interface to create a group, and the person who calls this interface is the group leader. +/// +/// Use cases: You can use this interface to create a chat scenario and join a group. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Caution: Available after login, unavailable after logout. UserIDs can have a maximum of 100 users and a group can have a maximum of 500 users. +/// +/// Related callbacks: The result of creating the group is obtained through the [ZIMGroupCreatedCallback] callback. +/// +/// Related APIs: You can use [joinGroup] to join a group, [leaveGroup] to leave a group, or [dismissGroup] to dismiss a group. +/// +/// @param groupInfo Configuration information for the group to be created. +/// @param userIDs List of users invited to the group. +/// @param config Create the relevant configuration of the group. +/// @param callback Callback for the result of creating a group. +- (void)createGroup:(ZIMGroupInfo *)groupInfo + userIDs:(NSArray *)userIDs + config:(ZIMGroupAdvancedConfig *)config + callback:(ZIMGroupCreatedCallback)callback + // clang-format off +NS_SWIFT_NAME(createGroup(with:userIDs:config:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: When a group is created, you can use [dismissGroup] to dismiss it. +/// +/// Use cases: After you create a chat group, you do not need to use this interface to dissolve the group. +/// +/// When to call /Trigger: This parameter can be called after a group is created by using [createGroup]. +/// +/// Caution: A non-group owner cannot dissolve a group. +/// +/// Impacts on other APIs: Through callback can get [ZIMGroupDismissedCallback] dissolution results of the room, through [onGroupStateChanged] listen callback can get the room status. +/// +/// Related callbacks: You can use [createGroup] to create a group, [joinGroup] to join a group, and [leaveGroup] to leave a group. +/// +/// @param groupID The ID of the group to be disbanded. +/// @param callback Callback for the result of disbanding the group. +- (void)dismissGroup:(NSString *)groupID + callback:(ZIMGroupDismissedCallback)callback + // clang-format off +NS_SWIFT_NAME(dismissGroup(by:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, other users can use [joinGroup] to join the group. +/// +/// Use cases: This interface is used to join a group in a chat scenario. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Caution: Available after login, unavailable after logout. If you have joined a group, the join succeeds. A group is limited to 500 people and fails to join when it is full. +/// +/// Related callbacks: To get the result of joining the room, call [ZIMGroupJoinedCallback]. +/// +/// Related APIs: You can use [createGroup] to create a group, [leaveGroup] to leave a group, or [dismissGroup] to dismiss a group. +/// +/// @param groupID The group ID to join. +/// @param callback Callback for the result of joining the group. +- (void)joinGroup:(NSString *)groupID + callback:(ZIMGroupJoinedCallback)callback + // clang-format off +NS_SWIFT_NAME(joinGroup(by:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: After a user joins a group, the user can leave the group through this interface. +/// +/// Use cases: This interface is used to exit a chat group. +/// +/// When to call /Trigger: It can be invoked after a ZIM instance is created through [create] and logged in. +/// +/// Restrictions: Available after login, unavailable after logout. +/// +/// Caution: When the group owner quits the group, the identity of the group owner will be automatically transferred to the earliest member who joined the group. When all members exit the group, the group is automatically dissolved. +/// +/// Impacts on other APIs: You can use [createGroup] to create a group, [joinGroup] to join a group, or [dismissGroup] to dismiss a group. +/// +/// Related callbacks: The result of leaving the room can be obtained by the [ZIMGroupLeftCallback] callback. +/// +/// @param groupID The group ID to leave. +/// @param callback Callback for the result of leaving the group. +- (void)leaveGroup:(NSString *)groupID + callback:(ZIMGroupLeftCallback)callback + // clang-format off +NS_SWIFT_NAME(leaveGroup(by:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, users can add multiple users to the group through this interface. The interface can be invoked by both the master and members of the group. +/// +/// Use cases: This interface allows you to invite others to join a group chat. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: The maximum number of userIDs users can join the group is 100. If the number of users reaches 100, the interface callback will notify the user. The maximum number of people in a group is 500. +/// +/// Caution: This interface does not require the peer's consent or the peer's online status. The service layer determines the number of invited users. +/// +/// Related callbacks: Through the callback [ZIMGroupUserInvitedCallback] can add multiple users into the group's results. +/// +/// Related APIs: KickGroupMember can be used to kick a target user out of the group. +/// @param groupID The ID of the group that will invite users to the group. +/// @param userIDs List of invited users. +/// @param callback Callback of the result. +- (void)inviteUsersIntoGroup:(NSArray *)userIDs + groupID:(NSString *)groupID + callback:(ZIMGroupUsersInvitedCallback)callback + // clang-format off +NS_SWIFT_NAME(inviteUsersIntoGroup(with:groupID:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: After a user joins a group, you can use this method to remove the user from the group. +/// +/// Use cases: You can use this method to remove one or more users from the group. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: You can't kick someone unless you're the leader of the group. +/// +/// Caution: This interface does not require the peer's consent or the peer's online status. It cannot accept group-related callbacks after being kicked out. History messages and sessions remain after being kicked out and can still enter the group. +/// +/// Related callbacks: Through the callback [ZIMGroupMemberKickedCallback] can get the user kicked out the results of the group. +/// +/// Related APIs: You can invite a target user into a group through [inviteUsersIntoGroup]. +/// +/// @param groupID The group ID of the member who will be kicked out. +/// @param userIDs List of users who have been kicked out of the group. +/// @param callback Callback for the result of being kicked out of the group. +- (void)kickGroupMembers:(NSArray *)userIDs + groupID:(NSString *)groupID + callback:(ZIMGroupMemberKickedCallback)callback + // clang-format off +NS_SWIFT_NAME(kickGroupMembers(by:groupID:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, the group owner can use this method to assign the group owner to a specified user. +/// +/// Use cases: In a group chat scenario, you can transfer the group master through this interface. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: You cannot transfer a group owner if you are not a group owner. +/// +/// Related APIs: Through the callback [ZIMGroupOwnerTransferredCallback] can get the result of the transfer of the group manager. +/// @param toUserID The converted group owner ID. +/// @param groupID The group ID of the group owner to be replaced. +/// @param callback The callback of the transfer group owner. +- (void)transferGroupOwnerToUserID:(NSString *)toUserID + groupID:(NSString *)groupID + callback:(ZIMGroupOwnerTransferredCallback)callback + // clang-format off +NS_SWIFT_NAME(transferGroupOwner(to:groupID:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, users can call this method to change the group name. +/// +/// Use cases: After creating a group, you need to change the group name. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: Group members and group owners can change the group name. The maximum length of the name is 100 bytes. +/// +/// Related APIs: Through the callback [ZIMGroupNameUpdatedCallback] can get the result of the change of name, through [onGroupNoticeUpdated] can get update group name information. +/// +/// @param groupName The updated group name. +/// @param groupID The group ID whose group name will be updated. +/// @param callback Callback for the result of updating the group name. +- (void)updateGroupName:(NSString *)groupName + groupID:(NSString *)groupID + callback:(ZIMGroupNameUpdatedCallback)callback; + +/// Supported versions: 2.3.0 and above. +/// +/// Detail description: After a group is created, the user can modify the group avatar URL by calling this method. +/// +/// Business scenario: After creating a group, the user needs to change the group avatar URL. +/// +/// Invocation timing/notification timing: It can be invoked after creating a ZIM instance through [create] and logging in. +/// +/// Usage restrictions: Group members and group owners can modify the group avatar, with a maximum length of 500 bytes. +/// +/// Related callbacks: The result of changing the group name can be obtained through the [ZIMGroupAvatarUrlUpdatedCallback] callback, and the updated group avatar information can be obtained through the [groupAvatarUrlUpdated] callback. +/// +/// @param groupAvatarUrl The group avatar URL that needs to be updated. +/// @param groupID The group ID of the group avatar URL that will be updated. +/// @param callback Callback for the result of updating the group avatar URL. +- (void)updateGroupAvatarUrl:(NSString *)groupAvatarUrl + groupID:(NSString *)groupID + callback:(ZIMGroupAvatarUrlUpdatedCallback)callback; + +- (void)updateGroupAlias:(NSString *)groupAlias + groupID:(NSString *)groupID + callback:(ZIMGroupAliasUpdatedCallback)callback; + +/// Available since: 2.0.0 and above. +/// +/// Description: When a group is created, users can use this method to update the group bulletin. +/// +/// Use cases: You need to update the group bulletin in the group. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: Only group members can update the group bulletin. The maximum number of bytes is 300. There is no special character limit. +/// +/// Related callbacks: Through callback [ZIMGroupNoticeUpdateCallback] can get update group of the results announcement, announcement by [onGroupNoticeUpdated] can get update group information. +/// @param groupID The group ID of the group announcement that will be updated. +/// @param groupNotice Pre-updated group announcements. +/// @param callback A callback to update the results of group announcements. +- (void)updateGroupNotice:(NSString *)groupNotice + groupID:(NSString *)groupID + callback:(ZIMGroupNoticeUpdatedCallback)callback; + +- (void)updateGroupJoinMode:(ZIMGroupJoinMode)mode + groupID:(NSString *)groupID + callback:(ZIMGroupJoinModeUpdatedCallback)callback; + +- (void)updateGroupInviteMode:(ZIMGroupInviteMode)mode + groupID:(NSString *)groupID + callback:(ZIMGroupInviteModeUpdatedCallback)callback; + +- (void)updateGroupBeInviteMode:(ZIMGroupBeInviteMode)mode + groupID:(NSString *)groupID + callback:(ZIMGroupBeInviteModeUpdatedCallback)callback; + +- (void)muteGroup:(BOOL)isMute + groupID:(NSString *)groupID + config:(ZIMGroupMuteConfig *)config + callback:(ZIMGroupMutedCallback)callback; + +- (void)muteGroupMembers:(BOOL)isMute + userIDs:(NSArray *)userIDs + groupID:(NSString *)groupID + config:(ZIMGroupMemberMuteConfig *)config + callback:(ZIMGroupMembersMutedCallback)callback; + +- (void)queryGroupMemberMutedListByGroupID:(NSString *)groupID + config:(ZIMGroupMemberMutedListQueryConfig *)config + callback:(ZIMGroupMemberMutedListQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryGroupMemberMutedList(by:config:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: Query information about a created group. +/// +/// Use cases: You need to obtain group information for display. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Related callbacks: Through the callback [ZIMGroupInfoQueriedCallback] can query the result of the group information. +/// +/// @param groupID The group ID of the group information to be queried. +/// @param callback Callback for the result of querying group information. +- (void)queryGroupInfoByGroupID:(NSString *)groupID + callback:(ZIMGroupInfoQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryGroupInfo(by:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: If a group already exists, all users of the group can use this method to set group properties. +/// +/// Use cases: Added extended field information about group description, such as group family, label, and industry category. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: Only group members can set group properties. +/// +/// Related callbacks: Through the callback [ZIMGroupAttributesOperatedCallback] can get the result of the set of properties. +/// +/// Related APIs: [deleteGroupAttributes] can be used to deleteGroupAttributes, [queryGroupAttributes] can be used to queryGroupAttributes, [queryAllGroupAttributes] can be used to queryAllGroupAttributes. +/// +/// @param groupAttributes group properties. +/// @param groupID groupID. +/// @param callback Callback of the result. +- (void)setGroupAttributes:(NSDictionary *)groupAttributes + groupID:(NSString *)groupID + callback:(ZIMGroupAttributesOperatedCallback)callback; + +/// Available since: 2.0.0 and above. +/// +/// Description: When a group already exists, you can use this method to delete group attributes. Both the master and members of the interface group can be invoked. +/// +/// Use cases: Deleted the extended field of the group description. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: Only group members can delete group attributes. +/// +/// Related callbacks: Through the callback [ZIMGroupAttributesOperatedCallback] can delete the result of the group of attributes. +/// +/// Related APIs: You can use [setGroupAttributes] to setGroupAttributes, [queryGroupAttributes] to queryGroupAttributes, and [queryAllGroupAttributes] to queryAllGroupAttributes. +/// +/// @param groupID The group ID of the group attribute to be deleted. +/// @param keys The key of the group attribute to delete. +/// @param callback Callback for the result of removing the group property. +- (void)deleteGroupAttributesByKeys:(NSArray *)keys + groupID:(NSString *)groupID + callback:(ZIMGroupAttributesOperatedCallback)callback + // clang-format off +NS_SWIFT_NAME(deleteGroupAttributes(by:groupID:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, you can use this method to query the specified group properties. +/// +/// Use cases: You need to query the scenarios to display the specified group attributes. +/// +/// When to call /Trigger: After creating a ZIM instance with [create] and logging in with [login]. +/// +/// Restrictions: Available after login, unavailable after logout. +/// +/// Related callbacks: Through the callback [ZIMGroupAttributesQuriedCallback] can get query attributes of the specified group of results. +/// +/// Related APIs: [queryAllGroupAttributes] Queries all group attributes. +/// +/// @param keys The key of the group attribute to be queried. +/// @param groupID The group ID of the group attribute to be queried. +/// @param callback Callback for the result of querying group properties. +- (void)queryGroupAttributesByKeys:(NSArray *)keys + groupID:(NSString *)groupID + callback:(ZIMGroupAttributesQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryGroupAttributes(by:groupID:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, you can use this method to query all group attributes. +/// +/// Use cases: Scenarios where all group attributes need to be queried. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Related callbacks: Through callback can get query [ZIMGroupAttributesQuriedCallback] all the results of the group of attributes. +/// +/// Related APIs: [queryGroupAttributes] Queries the attributes of the specified group. +/// +/// @param groupID The group ID of all group attributes to be queried. +/// @param callback Callback for querying the result of all attributes of the group. +- (void)queryGroupAllAttributesByGroupID:(NSString *)groupID + callback:(ZIMGroupAttributesQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryGroupAllAttributes(by:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, you can use this method to set the roles of group members. +/// +/// Use cases: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// When to call /Trigger: If the primary role of a group is 1 and the default role of other members is 3, you can invoke this interface to change the role. +/// +/// Caution: Non-group master unavailable. +/// +/// Related callbacks: Through the callback [ZIMGroupMemberRoleUpdatedCallback] can be set up to get the results of the group of members of the role. +/// +/// @param role Set of group roles. +/// @param forUserID User ID for which group role is set. +/// @param groupID The group ID of the group role to be set. +/// @param callback A callback to set the result of the group member role. +- (void)setGroupMemberRole:(ZIMGroupMemberRole)role + forUserID:(NSString *)forUserID + groupID:(NSString *)groupID + callback:(ZIMGroupMemberRoleUpdatedCallback)callback; + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, you can use this method to set nicknames for group members. +/// +/// Use cases: Nicknames need to be set for group members. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: Available after login, unavailable after logout. The owner of a group can change his or her own nickname, while the members can change only their own nickname. +/// +/// Caution: A group name can contain a maximum of 100 characters. +/// +/// Related callbacks: Through the callback [ZIMGroupMemberNicknameUpdatedCallback] can be set up to get the results of the group members nickname. +/// +/// @param nickname Set member nickname. +/// @param forUserID User ID for which group nickname is set. +/// @param groupID The group ID of the group member's nickname is set. +/// @param callback Callback for the result of setting the group member's nickname. +- (void)setGroupMemberNickname:(NSString *)nickname + forUserID:(NSString *)forUserID + groupID:(NSString *)groupID + callback:(ZIMGroupMemberNicknameUpdatedCallback)callback; + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, you can use this method to query information about a specified group member. +/// +/// Use cases: You need to obtain the specified group member information for display or interaction. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: Available after login, unavailable after logout. +/// +/// Related callbacks: Through the callback [ZIMGroupMemberInfoQueriedCallback] can get the query specifies the result of group membership information. +/// +/// @param userID User ID of the queried member information. +/// @param groupID The ID of the group whose member information will be queried. +/// @param callback Callback for the result of querying group member information. +- (void)queryGroupMemberInfoByUserID:(NSString *)userID + groupID:(NSString *)groupID + callback:(ZIMGroupMemberInfoQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryGroupMemberInfo(by:groupID:callback:)); +// clang-format on + +/// Available since: 2.0.0 and above. +/// +/// Description: Query the list of all groups. +/// +/// Use cases: You need to get a list of groups to display. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: Available after login, unavailable after logout. +/// +/// Related callbacks: Through the callback [ZIMGroupMemberListQueiedCallback] can get a check list of all current group results. +/// +/// @param callback A callback for querying the result of the group list. +- (void)queryGroupList:(ZIMGroupListQueriedCallback)callback; + +/// Available since: 2.0.0 and above. +/// +/// Description: After a group is created, you can use this method to query the group member list. +/// +/// Use cases: You need to obtain the specified group member list for display or interaction. +/// +/// When to call /Trigger: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: Available after login, unavailable after logout. +/// +/// Related callbacks: Through the callback [ZIMGroupMemberListQueriedCallback] can query the result of the group member list. +/// +/// @param groupID The group ID of the group member list to be queried. +/// @param config Group member query configuration. +/// @param callback Callback for querying the list of group members. +- (void)queryGroupMemberListByGroupID:(NSString *)groupID + config:(ZIMGroupMemberQueryConfig *)config + callback:(ZIMGroupMemberListQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryGroupMemberList(by:config:callback:)); +// clang-format on + +/// Available since: 2.2.0 or above. +/// +/// Description: Query the number of group members in a group. +/// +/// When to call: The ZIM instance can be invoked after being created by [create] and logged in. +/// +/// Restrictions: This function can only query the group that the user has entered. +/// +/// Related callbacks: [ZIMGroupMemberCountQueriedCallback]. +/// +/// @param groupID The group ID of the group to be queried. +/// @param callback Callback for querying the number of groups. +- (void)queryGroupMemberCountByGroupID:(NSString *)groupID + callback:(ZIMGroupMemberCountQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryGroupMemberCount(by:callback:)); +// clang-format on + +/// Available since: 2.5.0 and above. +/// +/// Description: This method can query the specific read member list of a message sent by a group. +/// +/// Use cases: Developers can use this method to query the specific read member list of a message they send. +/// +/// When to call: Callable after login. +/// +/// Restrictions: only supports querying the messages sent by the local end, and the receipt status of the messages is not NONE and UNKNOWN. If the user is not in the group, or has been kicked out of the group, the corresponding member list cannot be found. +/// +///Related callbacks: [ZIMGroupMessageReceiptMemberListQueriedCallback]. +/// +/// Related APIs: If you need to query the receipt status of a certain message or only need to query the read/unread count, you can query through the interface [queryMessageReceiptsInfo]. +- (void)queryGroupMessageReceiptReadMemberListByMessage:(ZIMMessage *)message + groupID:(NSString *)groupID + config:(ZIMGroupMessageReceiptMemberQueryConfig *) + config + callback: + (ZIMGroupMessageReceiptMemberListQueriedCallback) + callback; + +/// Available since: 2.5.0 and above. +/// +/// Description: This method can query the specific unread member list of a message sent by a group. +/// +/// Use cases: Developers can use this method to query the specific unread member list of a message they send. +/// +/// When to call: Callable after login. +/// +/// Restrictions: only supports querying the messages sent by the local end, and the receipt status of the messages is not NONE and UNKNOWN. If the user is not in the group, or has been kicked out of the group, the corresponding member list cannot be found. +/// +/// Related callbacks: [ZIMGroupMessageReceiptMemberListQueriedCallback]. +/// +/// Related APIs: If you need to query the receipt status of a certain message or only need to query the read/unread count, you can query through the interface [queryMessageReceiptsInfo]. +- (void) + queryGroupMessageReceiptUnreadMemberListByMessage:(ZIMMessage *)message + groupID:(NSString *)groupID + config: + (ZIMGroupMessageReceiptMemberQueryConfig *)config + callback: + (ZIMGroupMessageReceiptMemberListQueriedCallback) + callback; +/// Search local group members. +/// +/// Supported versions: 2.9.0 and above. +/// +/// Detailed description: This method is used to search for local groups. +/// +/// Business scenario: When you need to search for local groups by keywords or other criteria, you can call this interface to search. +/// +/// Call timing/Notification timing: After calling [login] +/// +/// Restrictions: Takes effect after login, becomes invalid after logout. +/// +/// @param config Configuration for searching groups. +/// @param callback Callback of the search groups result. +- (void)searchLocalGroupsWithConfig:(ZIMGroupSearchConfig *)config + callback:(ZIMGroupsSearchedCallback)callback; + +/// Search local group members. +/// +/// Supported versions: 2.9.0 and above. +/// +/// Detailed description: This method is used to search for group members. +/// +/// Business scenario: When you need to search for local group members by keywords or other criteria, you can call this interface to search. +/// +/// Restrictions: Takes effect after login, becomes invalid after logout. +/// +/// Related callbacks: [ZIMGroupMembersSearchedCallback]. +/// +/// @param groupID Group ID of the joined group. +/// @param config The configuration for searching group members. +/// @param callback The configuration for searching group members. +- (void)searchLocalGroupMembersByGroupID:(NSString *)groupID + config:(ZIMGroupMemberSearchConfig *)config + callback:(ZIMGroupMembersSearchedCallback)callback + // clang-format off +NS_SWIFT_NAME(searchLocalGroupMembers(by:config:callback:)); +// clang-format on + +- (void)sendGroupJoinApplicationToGroupID:(NSString *)groupID + config:(ZIMGroupJoinApplicationSendConfig *)config + callback:(ZIMGroupJoinApplicationSentCallback)callback; + +- (void)acceptGroupJoinApplicationFromUserID:(NSString *)userID + groupID:(NSString *)groupID + config:(ZIMGroupJoinApplicationAcceptConfig *)config + callback:(ZIMGroupJoinApplicationAcceptedCallback)callback; + +- (void)rejectGroupJoinApplicationFromUserID:(NSString *)userID + groupID:(NSString *)groupID + config:(ZIMGroupJoinApplicationRejectConfig *)config + callback:(ZIMGroupJoinApplicationRejectedCallback)callback; + +- (void)sendGroupInviteApplicationsToUserIDs:(NSArray *)userIDs + groupID:(NSString *)groupID + config:(ZIMGroupInviteApplicationSendConfig *)config + callback:(ZIMGroupInviteApplicationsSentCallback)callback; + +- (void) + acceptGroupInviteApplicationFromInviterUserID:(NSString *)inviterUserID + groupID:(NSString *)groupID + config:(ZIMGroupInviteApplicationAcceptConfig *)config + callback: + (ZIMGroupInviteApplicationAcceptedCallback)callback; + +- (void) + rejectGroupInviteApplicationFromInviterUserID:(NSString *)inviterUserID + groupID:(NSString *)groupID + config:(ZIMGroupInviteApplicationRejectConfig *)config + callback: + (ZIMGroupInviteApplicationRejectedCallback)callback; + +- (void)queryGroupApplicationListWithConfig:(ZIMGroupApplicationListQueryConfig *)config + callback:(ZIMGroupApplicationListQueriedCallback)callback; + +// MARK: - CallInvite + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: When the caller initiates a call invitation, the called party can use [callAccept] to accept the call invitation or [callReject] to reject the invitation. +/// +/// Business scenario: When you need to initiate a call invitation, you can create a unique callid through this interface to maintain this call invitation. +/// +/// When to call: It can be called after creating a ZIM instance through [create]. +/// +/// Note: The call invitation has a timeout period, and the call invitation will end when the timeout period expires. +/// +/// @param invitees list of invitees. +/// @param config Call Invitation Related Configuration. +/// @param callback Callback for initiating a call invitation. +- (void)callInviteWithInvitees:(NSArray *)invitees + config:(ZIMCallInviteConfig *)config + callback:(ZIMCallInvitationSentCallback)callback + // clang-format off +NS_SWIFT_NAME(callInvite(with:config:callback:)); +// clang-format on + +/// Supported versions: 2.9.0 and above. +/// +/// Detail description: In the advanced mode, when the master calls the call invitation, users in the call can continue to invite other users to join the call through the interface,Or after the called party accepts the advanced mode call invitation. +/// +/// When to call: After calling [callInvite] to initiate a call invitation in advanced mode. +/// +/// Note: User calls that are not in the call will fail. ZIM SDK has no relevant business logic after accepting. Developers can customize the development logic after adding calls. By default, a call can contain a maximum of 9 users. +/// +/// Related callbacks: [ZIMCallingInvitationSentCallback]. +/// +/// @param invitees List of invited user ids. +/// @param callID callID of the current call in advanced mode. +/// @param config This section describes how to configure the call invitation. +/// @param callback Invite the callback of the current call. +- (void)callingInviteWithInvitees:(NSArray *)invitees + callID:(NSString *)callID + config:(ZIMCallingInviteConfig *)config + callback:(ZIMCallingInvitationSentCallback)callback + // clang-format off +NS_SWIFT_NAME(callingInvite(with:callID:config:callback:)); +// clang-format on + +- (void)callJoin:(NSString *)callID + config:(ZIMCallJoinConfig *)config + callback:(ZIMCallJoinSentCallback)callback + // clang-format off +NS_SWIFT_NAME(callJoin(by:config:callback:)); + +/// Supported versions: 2.9.0 and above. +/// +/// Detail description: When the Lord's call initiates the invitation and is called and accepts it, the current call can be exited through the interface. +/// +/// When to call: It can be called after creating a ZIM instance through [create]. +/// +/// Note: The callee will fail to quit the uninvited callid. +/// +/// Related callbacks: [ZIMCallQuitSentCallback]. +/// @param callID The ID of the call invitation to be quit. +/// @param config Related configuration for quit call invitations. +/// @param callback Callback for quit call invitations. +- (void)callQuit:(NSString *)callID + config:(ZIMCallQuitConfig *)config + callback:(ZIMCallQuitSentCallback)callback + // clang-format off +NS_SWIFT_NAME(callQuit(by:config:callback:)); +// clang-format on + +/// Supported versions: 2.9.0 and above. +/// +/// Detail description: End The call in advanced mode. +/// +/// When to call: The call was in advanced mode and the user status was Accepted. +/// +/// Note: User calls that are not in the call will fail. ZupdatIM SDK Does not have service logic after the call ends, and developers can customize the development logic after the end. +/// +/// Related callbacks: [ZIMCallEndSentCallback]. +/// @param callID The ID of the call invitation to be ended. +/// @param config Related configuration for end call invitations. +/// @param callback Callback for end call invitations. +- (void)callEnd:(NSString *)callID + config:(ZIMCallEndConfig *)config + callback:(ZIMCallEndSentCallback)callback + // clang-format off +NS_SWIFT_NAME(callEnd(by:config:callback:)); +// clang-format on + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: After the caller initiates a call invitation, the call invitation can be canceled through this interface before the timeout period. +/// +/// Business scenario: When you need to cancel the call invitation initiated before, you can cancel the call invitation through this interface. +/// +/// When to call: It can be called after creating a ZIM instance through [create]. +/// +/// Note: Canceling the call invitation after the timeout period of the call invitation expires will fail. +/// +/// @param invitees List of invitees. +/// @param callID callID. +/// @param config Cancel the related configuration of call invitation. +/// @param callback Callback for canceling a call invitation. +- (void)callCancelWithInvitees:(NSArray *)invitees + callID:(NSString *)callID + config:(ZIMCallCancelConfig *)config + callback:(ZIMCallCancelSentCallback)callback + // clang-format off +NS_SWIFT_NAME(callCancel(with:callID:config:callback:)); +// clang-format on + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: When the calling party initiates a call invitation, the called party can accept the call invitation through this interface. +/// +/// Service scenario: When you need to accept the call invitation initiated earlier, you can accept the call invitation through this interface. +/// +/// When to call: It can be called after creating a ZIM instance through [create]. +/// +/// Note: The callee will fail to accept an uninvited callid. +/// +/// @param callID The call invitation ID to accept. +/// @param config config. +/// @param callback Callback to accept call invitation. +- (void)callAcceptWithCallID:(NSString *)callID + config:(ZIMCallAcceptConfig *)config + callback:(ZIMCallAcceptanceSentCallback)callback + // clang-format off +NS_SWIFT_NAME(callAccept(with:config:callback:)); +// clang-format on + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: When the calling party initiates a call invitation, the called party can reject the call invitation through this interface. +/// +/// Service scenario: When you need to reject the call invitation initiated earlier, you can use this interface to reject the call invitation. +/// +/// When to call: It can be called after creating a ZIM instance through [create]. +/// +/// Note: The callee will fail to reject the uninvited callid. +/// +/// @param callID The ID of the call invitation to be rejected. +/// @param config Related configuration for rejecting call invitations. +/// @param callback Callback for rejecting call invitations. +- (void)callRejectWithCallID:(NSString *)callID + config:(ZIMCallRejectConfig *)config + callback:(ZIMCallRejectionSentCallback)callback + // clang-format off +NS_SWIFT_NAME(callReject(with:config:callback:)); +// clang-format on + +/// Supported versions: 2.9.0 and above. +/// +/// Detail description: Users can call the call invitation list through the query. +/// +/// Service scenario: Users can use the query call invitation list for interface display or other functions. +/// +/// When to call: Run [create] to create a ZIM instance, which can be invoked after login. +/// +///Related callbacks: [ZIMCallInvitationListQueriedCallback]. +/// +/// @param config Query the relevant configuration of the call invitation list. +/// @param callback Inquire the results of the call invitation list. +- (void)queryCallInvitationListWithConfig:(ZIMCallInvitationQueryConfig *)config + callback:(ZIMCallInvitationListQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryCallInvitationList(with:callback:)); +// clang-format on + +- (void)addUsersToBlacklistWithUserIDs:(NSArray *)userIDs + callback:(ZIMBlacklistUsersAddedCallback)callback + // clang-format off +NS_SWIFT_NAME(addUsersToBlacklist(with:callback:)); +// clang-format on + +- (void)removeUsersFromBlacklistWithUserIDs:(NSArray *)userIDs + callback:(ZIMBlacklistUsersRemovedCallback)callback + // clang-format off +NS_SWIFT_NAME(removeUsersFromBlacklist(with:callback:)); +// clang-format on + +- (void)queryBlacklistWithConfig:(ZIMBlacklistQueryConfig *)config + callback:(ZIMBlacklistQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryBlacklist(with:callback:)); +// clang-format on + +- (void)checkUserIsInBlacklistByUserID:(NSString *)userID + callback:(ZIMBlacklistCheckedCallback)callback + // clang-format off +NS_SWIFT_NAME(checkUserIsInBlacklist(by:callback:)); +// clang-format on + +- (void)addFriendByUserID:(NSString *)userID + config:(ZIMFriendAddConfig *)config + callback:(ZIMFriendAddedCallback)callback + // clang-format off +NS_SWIFT_NAME(addFriend(by:config:callback:)); +// clang-format on + +- (void)sendFriendApplicationToUserID:(NSString *)userID + config:(ZIMFriendApplicationSendConfig *)config + callback:(ZIMFriendApplicationSentCallback)callback + // clang-format off +NS_SWIFT_NAME(sendFriendApplication(to:config:callback:)); +// clang-format on + +- (void)deleteFriendsByUserIDs:(NSArray *)userIDs + config:(ZIMFriendDeleteConfig *)config + callback:(ZIMFriendsDeletedCallback)callback + // clang-format off +NS_SWIFT_NAME(deleteFriends(by:config:callback:)); +// clang-format on + +- (void)checkFriendsRelationByUserIDs:(NSArray *)userIDs + config:(ZIMFriendRelationCheckConfig *)config + callback:(ZIMFriendsRelationCheckedCallback)callback + // clang-format off +NS_SWIFT_NAME(checkFriendsRelation(by:config:callback:)); +// clang-format on + +- (void)updateFriendAlias:(NSString *)friendAlias + userID:(NSString *)userID + callback:(ZIMFriendAliasUpdatedCallback)callback + // clang-format off +NS_SWIFT_NAME(updateFriendAlias(_:userID:callback:)); +// clang-format on + +- (void)updateFriendAttributes:(NSDictionary *)friendAttributes + userID:(NSString *)userID + callback:(ZIMFriendAttributesUpdatedCallback)callback + // clang-format off +NS_SWIFT_NAME(updateFriendAttributes(_:userID:callback:)); +// clang-format on + +- (void)queryFriendsInfoByUserIDs:(NSArray *)userIDs + callback:(ZIMFriendsInfoQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryFriendsInfo(by:callback:)); +// clang-format on + +- (void)searchLocalFriendsWithConfig:(ZIMFriendSearchConfig *)config + callback:(ZIMFriendsSearchedCallback)callback + // clang-format off +NS_SWIFT_NAME(searchLocalFriends(with:callback:)); +// clang-format on + +- (void)acceptFriendApplicationFromUserID:(NSString *)userID + config:(ZIMFriendApplicationAcceptConfig *)config + callback:(ZIMFriendApplicationAcceptedCallback)callback + // clang-format off +NS_SWIFT_NAME(acceptFriendApplication(from:config:callback:)); +// clang-format on + +- (void)rejectFriendApplicationFromUserID:(NSString *)userID + config:(ZIMFriendApplicationRejectConfig *)config + callback:(ZIMFriendApplicationRejectedCallback)callback + // clang-format off +NS_SWIFT_NAME(rejectFriendApplication(from:config:callback:)); +// clang-format on + +- (void)queryFriendListWithConfig:(ZIMFriendListQueryConfig *)config + callback:(ZIMFriendListQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryFriendList(with:callback:)); +// clang-format on + +- (void)queryFriendApplicationListWithConfig:(ZIMFriendApplicationListQueryConfig *)config + callback:(ZIMFriendApplicationListQueriedCallback)callback + // clang-format off +NS_SWIFT_NAME(queryFriendApplicationList(with:callback:)); +// clang-format on +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/ZIM.framework/Headers/ZIMDefines.h b/Libs/ZIM.framework/Headers/ZIMDefines.h new file mode 100644 index 0000000..abb3c4e --- /dev/null +++ b/Libs/ZIM.framework/Headers/ZIMDefines.h @@ -0,0 +1,3500 @@ +// +// ZIMDefines.h +// ZIM +// +// Copyright © 2021 Zego. All rights reserved. +// + +#import "ZIMErrorCode.h" +#import + +#if TARGET_OS_IPHONE +#import +#elif TARGET_OS_OSX +#import +#endif + +NS_ASSUME_NONNULL_BEGIN + +// MARK: - Enum + +/// Connection state. +/// +/// Description: The state machine that identifies the current connection state. +/// +/// Use cases: It can be used to determine whether the login/logout is successful, and to handle abnormal situations such as network disconnection. +/// +/// Caution: Please use it with the connection event parameter. +/// +typedef NS_ENUM(NSUInteger, ZIMConnectionState) { + + /// Description: Unconnected state, enter this state before logging in and after logging out. + /// + /// Use cases: If there is a steady state abnormality in the process of logging in, such as AppID or Token are incorrect, or if the same user name is logged in elsewhere and the local end is kicked out, it will enter this state. + ZIMConnectionStateDisconnected = 0, + + /// Description: The state that the connection is being requested. It will enter this state after successful execution login function. + /// + /// Use cases: The display of the UI is usually performed using this state. If the connection is interrupted due to poor network quality, the SDK will perform an internal retry and will return to this state. + ZIMConnectionStateConnecting = 1, + + /// Description: The state that is successfully connected. + /// + /// Use cases: Entering this state indicates that login successfully and the user can use the SDK functions normally. + ZIMConnectionStateConnected = 2, + + /** + * Description: The state that the reconnection is being requested. It will enter this state after successful execution login function. + * + * Use cases: The display of the UI is usually performed using this state. If the connection is interrupted due to poor network quality, the SDK will perform an internal retry and will return to this state. + */ + ZIMConnectionStateReconnecting = 3 +}; + +// MARK: - Enum + +/// Connection state. +/// +/// Description: The state machine that identifies the current connection state. +/// +/// Use cases: It can be used to judge whether the user enters/exit the room successfully, and handles abnormal situations such as network disconnection. +/// +/// Caution: Please use it with the connection event parameter. +/// +typedef NS_ENUM(NSUInteger, ZIMRoomState) { + + /// Description: Disconnected state. + /// + /// Use cases: enter this state before entering the room and after exiting the room. + ZIMRoomStateDisconnected = 0, + + /// Description: The connection state is being requested. + /// + /// Use cases: and it will enter this state after the action of entering the room is executed successfully. The application interface is usually displayed through this state. + ZIMRoomStateConnecting = 1, + + /// Description: The connection is successful. + /// + /// Use cases: Entering this state means that the room has been successfully entered, and the user can use the room's functions normally. + ZIMRoomStateConnected = 2 + +}; + +/// The event that caused the connection status to change. +/// +/// Description: The reason for the change of the connection state. +/// +/// Use cases: It can be used to determine whether the login/logout is successful, and to handle abnormal situations such as network disconnection. +/// +/// Caution: Please use it with the connection state parameter. +/// +typedef NS_ENUM(NSUInteger, ZIMConnectionEvent) { + + /// Description: Success. + ZIMConnectionEventSuccess = 0, + + /// Description: The user actively logs in. + ZIMConnectionEventActiveLogin = 1, + + /// Description: Connection timed out. + ZIMConnectionEventLoginTimeout = 2, + + /// Description: The network connection is temporarily interrupted. + ZIMConnectionEventLoginInterrupted = 3, + + /// Description: Being kicked out. + ZIMConnectionEventKickedOut = 4, + + /// Being token expierd. + ZIMConnectionEventTokenExpired = 5, + + /// Being token expierd. + ZIMConnectionEventUnregistered = 6 + +}; + +/// The event that caused the room connection status to change. +/// +/// Description: The reason for the change of the connection state. +/// +/// Use cases: It can be used to determine whether the login/logout is successful, and to handle abnormal situations such as network disconnection. +/// +/// Caution: Please use it with the connection state parameter. +/// +typedef NS_ENUM(NSUInteger, ZIMRoomEvent) { + + /// Description: Success. + ZIMRoomEventSuccess = 0, + + /// Description: The network in the room is temporarily interrupted. + ZIMRoomEventNetworkInterrupted = 1, + + /// Description: The network in the room is disconnected. + ZIMRoomEventNetworkDisconnected = 2, + + /// Description: The room not exist. + ZIMRoomEventRoomNotExist = 3, + + /// Description: The user actively creates a room. + ZIMRoomEventActiveCreate = 4, + + /// Description: Failed to create room. + ZIMRoomEventCreateFailed = 5, + + /// Description: The user starts to enter the room. + ZIMRoomEventActiveEnter = 6, + + /// Description: user failed to enter the room. + ZIMRoomEventEnterFailed = 7, + + /// Description: user was kicked out of the room. + ZIMRoomEventKickedOut = 8, + + /// Description: user was out of the room because of connect timeout + ZIMRoomEventConnectTimeout = 9, + + ZIMRoomEventKickedOutByOtherDevice = 10, + + ZIMRoomEventActiveSwitch = 11, + + ZIMRoomEventSwitchFailed = 12 +}; + +/// The priority of the message. +/// +/// Description: Identifies the priority of a message. +/// +/// Use cases: It can be used to set the priority when a message is sent. The higher the priority, the higher the reliability. Low priority may be discarded due to weak network. +/// +/// Caution: The higher the priority, the higher the cost. +/// +typedef NS_ENUM(NSUInteger, ZIMMessagePriority) { + + /// Description: Low priority. + /// + /// Use cases: Generally used to send unimportant messages such as barrage message in a room. + ZIMMessagePriorityLow = 1, + + /// Description: Medium priority. + /// + /// Use cases: Generally used to send regular chat messages. + ZIMMessagePriorityMedium = 2, + + /// Description: High priority. + /// + /// Use cases: Generally used to send important information such as gifts and rewards in a room. + ZIMMessagePriorityHigh = 3 + +}; + +/// The type of the message. +/// +/// Description: Identifies the type of current message. +/// +/// Use cases: It can be used to determine what type of message this message is. +/// +typedef NS_ENUM(NSUInteger, ZIMMessageType) { + /// Description: Unknown message. + /// + /// Use cases: A message of an unknown type is received, indicating that the sender may have sent a message type that the user does not support, and the user needs to be advised to update the version. + ZIMMessageTypeUnknown = 0, + /// Description: Normal text message. + /// + /// Use cases: Can be used to deliver ordinary text messages. + ZIMMessageTypeText = 1, + /// Description: Custom binary message. + /// + /// Use cases: Can be used to transfer custom binary messages. This message type does not support offline messages and local storage. + ZIMMessageTypeCommand = 2, + /// Description: Image message. + /// + /// Use cases: Can be used to send image messages, only ".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tiff" image types are supported. After sending the image, the server will generate a large image and a thumbnail of the original image. + ZIMMessageTypeImage = 11, + /// Description: File message. + /// + /// Use cases: For sending file messages, no file type restrictions. + ZIMMessageTypeFile = 12, + /// Description: Audio message. + /// + /// Use cases: For sending audio messages, only ".mp3" audio type is supported. + ZIMMessageTypeAudio = 13, + /// Description: Video message. + /// + /// Use cases: For sending video messages, only ".mp4", ".mov" video types are supported. After sending the video message, the server will generate the first frame of the video file. + ZIMMessageTypeVideo = 14, + /// Description: Barrage message. + /// + /// Use cases: Can be used for the barrage sent by the live room. This message type does not support offline messages and local storage. + ZIMMessageTypeBarrage = 20, + + ZIMMessageTypeSystem = 30, + + ZIMMessageTypeRevoke = 31, + + ZIMMessageTypeTips = 32, + + ZIMMessageTypeCombine = 100, + + ZIMMessageTypeCustom = 200, +}; + +typedef NS_ENUM(NSUInteger, ZIMTipsMessageEvent) { + ZIMTipsMessageEventGroupCreated = 1, + + ZIMTipsMessageEventGroupDismissed = 2, + + ZIMTipsMessageEventGroupJoined = 3, + + ZIMTipsMessageEventGroupInvited = 4, + + ZIMTipsMessageEventGroupLeft = 5, + + ZIMTipsMessageEventGroupKickedOut = 6, + + ZIMTipsMessageEventGroupInfoChanged = 7, + + ZIMTipsMessageEventGroupMemberInfoChanged = 8, +}; + +typedef NS_ENUM(NSUInteger, ZIMTipsMessageChangeInfoType) { + ZIMTipsMessageChangeInfoTypeGroupDataChanged = 1, + ZIMTipsMessageChangeInfoTypeGroupNoticeChanged = 2, + ZIMTipsMessageChangeInfoTypeGroupNameChanged = 3, + ZIMTipsMessageChangeInfoTypeGroupAvatarUrlChanged = 4, + ZIMTipsMessageChangeInfoTypeGroupMuteChanged = 5, + + ZIMTipsMessageChangeInfoTypeGroupOwnerTransferred = 10, + ZIMTipsMessageChangeInfoTypeGroupMemberRoleChanged = 11, + ZIMTipsMessageChangeInfoTypeGroupMemberMuteChanged = 12, +}; + +typedef NS_ENUM(NSInteger, ZIMRevokeType) { + + ZIMRevokeTypeUnknown = -1, + + ZIMRevokeTypeTwoWay = 0, + + ZIMRevokeTypeOneWay = 1, + +}; + +typedef NS_ENUM(NSInteger, ZIMBlacklistChangeAction) { + + ZIMBlacklistChangeActionAdded = 0, + + ZIMBlacklistChangeActionRemoved = 1, + +}; + +typedef NS_ENUM(NSInteger, ZIMMessageRevokeStatus) { + + ZIMMessageRevokeStatusUnknown = -1, + + ZIMMessageRevokeStatusSelfRevoke = 0, + + ZIMMessageRevokeStatusSystemRevoke = 1, + + ZIMMessageRevokeStatusServerApiRevoke = 2, + + ZIMMessageRevokeStatusGroupAdminRevoke = 3, + + ZIMMessageRevokeStatusGroupOwnerRevoke = 4, + + ZIMMessageRevokeStatusAuditRejectRevoke = 4, + +}; + +/// he types of media files that are allowed to be downloaded include original images, large images, thumbnails, general files, audio files, video files and their first frame images. +typedef NS_ENUM(NSUInteger, ZIMMediaFileType) { + /// Original file type, suitable for original images, audio files, and video files. After calling [downloadMediaFile], the SDK will update the fileLocalPath property in [ZIMMediaMessage]. + ZIMMediaFileTypeOriginalFile = 1, + /// Large image type. After calling [downloadMediaFile], the SDK will update the largeImageLocalPath property in [ZIMImageMessage]. + ZIMMediaFileTypeLargeImage = 2, + /// Image thumbnail type. After calling [downloadMediaFile], the SDK will update the thumbnailLocalPath property in [ZIMImageMessage]. + ZIMMediaFileTypeThumbnail = 3, + /// The type of the first frame of the video. After calling [downloadMediaFile], the SDK will update the videoFirstFrameLocalPath property in [ZIMVideoMessage]. + ZIMMediaFileTypeVideoFirstFrame = 4 +}; + +typedef NS_ENUM(NSUInteger, ZIMFriendListChangeAction) { + ZIMFriendListChangeActionAdded = 0, + ZIMFriendListChangeActionDeleted = 1, +}; + +typedef NS_ENUM(NSUInteger, ZIMFriendApplicationListChangeAction) { + ZIMFriendApplicationListChangeActionAdded = 0, + ZIMFriendApplicationListChangeActionDeleted = 1, +}; + +typedef NS_ENUM(NSUInteger, ZIMMessageReceiptStatus) { + ZIMMessageReceiptStatusNone = 0, + ZIMMessageReceiptStatusProcessing = 1, + ZIMMessageReceiptStatusDone = 2, + ZIMMessageReceiptStatusExpired = 3, + ZIMMessageReceiptStatusFailed = 4, +}; + +/// Room attributes update action. +/// +/// Description: Room attributes update action. +typedef NS_ENUM(NSUInteger, ZIMRoomAttributesUpdateAction) { + /// Set action. + ZIMRoomAttributesUpdateActionSet = 0, + /// Delete action. + ZIMRoomAttributesUpdateActionDelete = 1 + +}; + +/// Description: Room attributes update action. +typedef NS_ENUM(NSUInteger, ZIMRoomMemberAttributesUpdateAction) { + /// Set action. + ZIMRoomMemberAttributesUpdateActionSet = 0 + +}; + +/// the direction of the message. +/// +/// Description: Describes whether the current message was sent or received. +typedef NS_ENUM(NSUInteger, ZIMMessageDirection) { + /// Message has been sent. + ZIMMessageDirectionSend = 0, + /// Message accepted. + ZIMMessageDirectionReceive = 1 +}; + +/// The status of the message being sent. +/// +/// Description: Describes the condition of the currently sent message. +typedef NS_ENUM(NSUInteger, ZIMMessageSentStatus) { + /// The message is being sent. + ZIMMessageSentStatusSending = 0, + /// Message sent successfully. + ZIMMessageSentStatusSendSuccess = 1, + /// Message sending failed. + ZIMMessageSentStatusSendFailed = 2 + +}; + +typedef NS_ENUM(NSUInteger, ZIMMessageOrder) { + // DESC + ZIMMessageOrderDescending = 0, + // ASC + ZIMMessageOrderAscending = 1 +}; + +typedef NS_ENUM(NSUInteger, ZIMMessageMentionedType) { + ZIMMessageMentionedTypeMentionMe = 1, + ZIMMessageMentionedTypeMentionAll = 2, + ZIMMessageMentionedTypeMentionAllAndMe = 3 +}; + +typedef NS_ENUM(NSUInteger, ZIMMessageDeleteType) { + + ZIMMessageDeleteTypeMessageListDeleted = 0, + + ZIMMessageDeleteTypeConversationAllMessagesDeleted = 1, + + ZIMMessageDeleteTypeAllConversationMessagesDeleted = 2 +}; + +typedef NS_ENUM(NSUInteger, ZIMMessageRepliedInfoState) { + ZIMMessageRepliedInfoStateNormal = 0, + ZIMMessageRepliedInfoStateDeleted = 1, + ZIMMessageRepliedInfoStateNotFound = 2 +}; + +/// conversation type. +typedef NS_ENUM(NSInteger, ZIMConversationType) { + + ZIMConversationTypeUnknown = -1, + + ZIMConversationTypePeer = 0, + + ZIMConversationTypeRoom = 1, + + ZIMConversationTypeGroup = 2 + +}; + +typedef NS_ENUM(NSUInteger, ZIMConversationEvent) { + + ZIMConversationEventAdded = 0, + + ZIMConversationEventUpdated = 1, + + ZIMConversationEventDisabled = 2, + + ZIMConversationEventDeleted = 3, + +}; + +typedef NS_ENUM(NSUInteger, ZIMConversationNotificationStatus) { + + ZIMConversationNotificationStatusNotify = 1, + + ZIMConversationNotificationStatusDoNotDisturb = 2 + +}; + +/// Description: Group events. +typedef NS_ENUM(NSUInteger, ZIMGroupEvent) { + /// Create groups. + ZIMGroupEventCreated = 1, + /// Disband the group. + ZIMGroupEventDismissed = 2, + /// Join the group. + ZIMGroupEventJoined = 3, + /// Invite to the group. + ZIMGroupEventInvited = 4, + /// Leave the group. + ZIMGroupEventLeft = 5, + /// Kick out of the group. + ZIMGroupEventKickedout = 6 + +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupState) { + /// Quit + ZIMGroupStateQuit = 0, + /// Enter + ZIMGroupStateEnter = 1 + +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupMuteMode) { + + ZIMGroupMuteModeNone = 0, + + ZIMGroupMuteModeNormal = 1, + + ZIMGroupMuteModeAll = 2, + + ZIMGroupMuteModeCustom = 3 + +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupMemberEvent) { + + ZIMGroupMemberEventJoined = 1, + + ZIMGroupMemberEventLeft = 2, + + ZIMGroupMemberEventKickedout = 4, + + ZIMGroupMemberEventInvited = 5 + +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupMemberState) { + + ZIMGroupMemberStateQuit = 0, + + ZIMGroupMemberStateEnter = 1 + +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupAttributesUpdateAction) { + + ZIMGroupAttributesUpdateActionSet = 0, + + ZIMGroupAttributesUpdateActionDelete = 1 + +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupMessageNotificationStatus) { + + ZIMGroupMessageNotificationStatusNotify = 1, + + ZIMGroupMessageNotificationStatusDoNotDisturb = 2 + +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupJoinMode) { + ZIMGroupJoinModeAny = 0, + ZIMGroupJoinModeAuth = 1, + ZIMGroupJoinModeForbid = 2 +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupInviteMode) { + ZIMGroupInviteModeAny = 0, + ZIMGroupInviteModeAdmin = 1, +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupBeInviteMode) { + ZIMGroupBeInviteModeNone = 0, + ZIMGroupBeInviteModeAuth = 1, +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupEnterType) { + ZIMGroupEnterTypeUnknown = 0, + ZIMGroupEnterTypeCreated = 1, + ZIMGroupEnterTypeJoinApply = 2, + ZIMGroupEnterTypeJoined = 3, + ZIMGroupEnterTypeInvited = 4, + ZIMGroupEnterTypeInviteApply = 5 +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupApplicationType) { + ZIMGroupApplicationTypeNone = 0, + ZIMGroupApplicationTypeJoin = 1, + ZIMGroupApplicationTypeInvite = 2, + ZIMGroupApplicationTypeBeInvite = 3 +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupApplicationState) { + ZIMGroupApplicationStateWaiting = 1, + ZIMGroupApplicationStateAccepted = 2, + ZIMGroupApplicationStateRejected = 3, + ZIMGroupApplicationStateExpired = 4, + ZIMGroupApplicationStateDisabled = 5 +}; + +typedef NS_ENUM(NSUInteger, ZIMGroupApplicationListChangeAction) { + ZIMGroupApplicationListChangeActionAdded = 0 +}; + +typedef int ZIMGroupMemberRole; +#define ZIMGroupMemberRoleOwner 1 +#define ZIMGroupMemberRoleAdmin 2 +#define ZIMGroupMemberRoleMember 3 + +typedef unsigned int ZIMGroupDataFlag; +#define ZIMGroupDataFlagName 0b0001 +#define ZIMGroupDataFlagNotice 0b0010 +#define ZIMGroupDataFlagAvatarUrl 0b0100 + +typedef NS_ENUM(NSInteger, ZIMGeofencingType) { + ZIMGeofencingTypeNone = 0, + ZIMGeofencingTypeInclude = 1, + ZIMGeofencingTypeExclude = 2 +}; + +typedef int ZIMGeofencingArea; +#define ZIMZIMGeofencingAreaCN 2 +#define ZIMZIMGeofencingAreaNA 3 +#define ZIMZIMGeofencingAreaEU 4 +#define ZIMZIMGeofencingAreaAS 5 +#define ZIMZIMGeofencingAreaIN 6 + +typedef NS_ENUM(NSInteger, ZIMCallState) { + ZIMCallStateUnknown = -1, + ZIMCallStateStarted = 1, + ZIMCallStateEnded = 2 +}; + +typedef NS_ENUM(NSInteger, ZIMCallInvitationMode) { + ZIMCallInvitationModeUnknown = -1, + ZIMCallInvitationModeGeneral = 0, + ZIMCallInvitationModeAdvanced = 1 +}; + +typedef NS_ENUM(NSInteger, ZIMCXHandleType) { + ZIMCXHandleTypeGeneric = 1, + ZIMCXHandleTypePhoneNumber = 2, + ZIMCXHandleTypeEmailAddress = 3, +}; + +typedef NS_ENUM(NSInteger, ZIMPlatformType) { + ZIMPlatformTypeWin = 1, + ZIMPlatformTypeIPhoneOS = 2, + ZIMPlatformTypeAndroid = 3, + ZIMPlatformTypeMacOS = 4, + ZIMPlatformTypeLinux = 5, + ZIMPlatformTypeWeb = 6, + ZIMPlatformTypeMiniProgram = 7, + ZIMPlatformTypeIPadOS = 9, + ZIMPlatformTypeUnknown = 32 +}; + +typedef NS_ENUM(NSUInteger, ZIMUserOnlineStatus) { + + ZIMUserOnlineStatusOnline = 0, + + ZIMUserOnlineStatusOffline = 1, + + ZIMUserOnlineStatusLogout = 2, + + ZIMUserOnlineStatusUnknown = 99 + +}; +// MARK: - Model + +/// Error infomation +/// +/// Description: Error infomation. +/// +@interface ZIMError : NSObject + +/// The storage path of the log files. Refer to the official website document for the default path. +@property (nonatomic, assign) ZIMErrorCode code; + +/// Error infomation description. +@property (nonatomic, copy) NSString *message; + +@end + +/// User information object. +/// +/// Description: Identifies a unique user. +/// +/// Caution: Note that the userID must be unique under the same appID, otherwise mutual kicks out will occur. +/// It is strongly recommended that userID corresponds to the user ID of the business APP, +/// that is, a userID and a real user are fixed and unique, and should not be passed to the SDK in a random userID. +/// Because the unique and fixed userID allows ZEGO technicians to quickly locate online problems. +/// +@interface ZIMUserInfo : NSObject + +/// User ID, a string with a maximum length of 32 bytes or less. Only support numbers, English characters and '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '/', '\'. +@property (nonatomic, copy) NSString *userID; + +/// User name, a string with a maximum length of 64 bytes or less +@property (nonatomic, copy) NSString *userName; + +@property (nonatomic, copy) NSString *userAvatarUrl; + +@end + +@interface ZIMUserFullInfo : NSObject + +/// User base info. including userID and userName. +@property (nonatomic, strong) ZIMUserInfo *baseInfo; + +//userAvatarUrl is deprecated since ZIM 2.13.0 +@property (nonatomic, copy) NSString *userAvatarUrl; +/// User extended data. +@property (nonatomic, copy) NSString *extendedData; + +@end + +@interface ZIMUsersInfoQueryConfig : NSObject + +/// User base info. including userID and userName. +@property (nonatomic, assign) BOOL isQueryFromServer; + +@end + +// +@interface ZIMUserOfflinePushRule : NSObject +//这些指定的平台在线时 +@property (nonatomic, strong) NSArray *onlinePlatforms; +//这些指定的平台不收到离线推送 +@property (nonatomic, strong) NSArray *notToReceiveOfflinePushPlatforms; + +@end + +@interface ZIMUserRule : NSObject + +@property (nonatomic, strong) ZIMUserOfflinePushRule *offlinePushRule; + +@end + +@interface ZIMUserStatus : NSObject + +@property (nonatomic, copy) NSString *userID; + +@property (nonatomic, assign) ZIMUserOnlineStatus onlineStatus; + +@property (nonatomic, strong) NSArray *onlinePlatforms; + +@property (nonatomic, assign) long long lastUpdateTime; + +@end + +@interface ZIMUserStatusSubscription : NSObject + +@property (nonatomic, strong) ZIMUserStatus *userStatus; + +@property (nonatomic, assign) long long subscribeExpiredTime; + +@end + +@interface ZIMSelfUserInfo : NSObject + +@property (nonatomic, strong) ZIMUserRule *userRule; + +@property (nonatomic, strong) ZIMUserFullInfo *userFullInfo; + +@property (nonatomic, strong) ZIMUserStatus *userStatus; + +@end +// MARK: - Model + +@interface ZIMAppConfig : NSObject + +@property (nonatomic, assign) unsigned int appID; + +@property (nonatomic, copy) NSString *appSign; + +@end + +/// Log configuration +/// +/// Description: Configure the storage path of log files and the maximum log file size. +/// +@interface ZIMLogConfig : NSObject + +/// The storage path of the log files. Refer to the official website document for the default path. +@property (nonatomic, copy) NSString *logPath; + +/// The maximum log file size (Bytes). The default maximum size is 5MB (5 * 1024 * 1024 Bytes) +@property (nonatomic, assign) unsigned long long logSize; + +@end + +@interface ZIMCacheConfig : NSObject + +@property (nonatomic, copy) NSString *cachePath; + +@end + +@interface ZIMVoIPConfig : NSObject + +@property (nonatomic, assign) ZIMCXHandleType iOSVoIPHandleType; + +@property (nonatomic, copy) NSString *iOSVoIPHandleValue; + +@property (nonatomic, assign) BOOL iOSVoIPHasVideo; + +@end + +@interface ZIMLoginConfig : NSObject + +@property (nonatomic, copy) NSString *userName; + +@property (nonatomic, copy) NSString *token; + +@property (nonatomic, assign) BOOL isOfflineLogin; + +@end + +/// Description:Offline push configuration. +@interface ZIMPushConfig : NSObject + +/// Description: Used to set the push title. +@property (nonatomic, copy) NSString *title; + +/// Description: Used to set offline push content. +@property (nonatomic, copy) NSString *content; + +/// Description: This parameter is used to set the pass-through field of offline push. +@property (nonatomic, copy) NSString *payload; + +@property (nonatomic, copy) NSString *resourcesID; + +@property (nonatomic, assign) BOOL enableBadge; + +@property (nonatomic, assign) int badgeIncrement; + +@property (nonatomic, strong) ZIMVoIPConfig *voIPConfig; + +@end + +@interface ZIMMessageReactionUserInfo : NSObject +@property (nonatomic, copy) NSString *userID; +@end + +@interface ZIMMessageReaction : NSObject +@property (nonatomic, copy) NSString *reactionType; +@property (nonatomic, copy) NSString *conversationID; +@property (nonatomic, assign) ZIMConversationType conversationType; +@property (nonatomic, assign) long long messageID; +@property (nonatomic, assign) unsigned int totalCount; +@property (nonatomic, assign) BOOL isSelfIncluded; +@property (nonatomic, strong) NSArray *userList; + +@end + +@interface ZIMMessageReactionUserQueryConfig : NSObject +@property (nonatomic, assign) unsigned long long nextFlag; +@property (nonatomic, assign) unsigned int count; +@property (nonatomic, copy) NSString *reactionType; + +@end + +@interface ZIMTipsMessageChangeInfo : NSObject + +@property (nonatomic, assign) ZIMTipsMessageChangeInfoType type; + +@end + +@class ZIMGroupMuteInfo; + +@interface ZIMTipsMessageGroupChangeInfo : ZIMTipsMessageChangeInfo + +@property (nonatomic, assign) ZIMGroupDataFlag groupDataFlag; + +@property (nonatomic, copy) NSString *groupName; + +@property (nonatomic, copy) NSString *groupNotice; + +@property (nonatomic, copy) NSString *groupAvatarUrl; + +@property (nonatomic, strong) ZIMGroupMuteInfo *groupMutedInfo; + +@end + +@interface ZIMTipsMessageGroupMemberChangeInfo : ZIMTipsMessageChangeInfo + +@property (nonatomic, assign) int memberRole; + +@property (nonatomic, assign) long long muteExpiredTime; + +@end + +@interface ZIMMessageLiteInfo : NSObject + +@property (nonatomic, assign) ZIMMessageType type; + +@end + +@interface ZIMTextMessageLiteInfo : ZIMMessageLiteInfo + +@property (nonatomic, copy) NSString *message; + +@end + +@interface ZIMCustomMessageLiteInfo : ZIMMessageLiteInfo + +@property (nonatomic, copy) NSString *message; + +@property (nonatomic, assign) unsigned int subType; + +@end + +@interface ZIMCombineMessageLiteInfo : ZIMMessageLiteInfo + +@property (nonatomic, copy) NSString *title; + +@property (nonatomic, copy) NSString *summary; + +@end + +@interface ZIMRevokeMessageLiteInfo : ZIMMessageLiteInfo + +@end + +@interface ZIMMediaMessageLiteInfo : ZIMMessageLiteInfo + +@property (nonatomic, assign) long long fileSize; + +@property (nonatomic, copy) NSString *fileName; + +@property (nonatomic, copy) NSString *fileLocalPath; + +@property (nonatomic, copy) NSString *fileDownloadUrl; + +@end + +@interface ZIMImageMessageLiteInfo : ZIMMediaMessageLiteInfo + +@property (nonatomic, assign) CGSize originalImageSize; + +@property (nonatomic, assign) CGSize largeImageSize; + +@property (nonatomic, copy) NSString *largeImageLocalPath; + +@property (nonatomic, copy) NSString *largeImageDownloadUrl; + +@property (nonatomic, assign) CGSize thumbnailSize; + +@property (nonatomic, copy) NSString *thumbnailLocalPath; + +@property (nonatomic, copy) NSString *thumbnailDownloadUrl; + +@end + +@interface ZIMFileMessageLiteInfo : ZIMMediaMessageLiteInfo + +@end + +@interface ZIMAudioMessageLiteInfo : ZIMMediaMessageLiteInfo + +@property (nonatomic, assign) unsigned int audioDuration; + +@end + +@interface ZIMVideoMessageLiteInfo : ZIMMediaMessageLiteInfo + +@property (nonatomic, assign) unsigned int videoDuration; + +@property (nonatomic, copy) NSString *videoFirstFrameDownloadUrl; + +@property (nonatomic, copy) NSString *videoFirstFrameLocalPath; + +@property (nonatomic, assign) CGSize videoFirstFrameSize; + +@end + +@interface ZIMMessageRepliedInfo : NSObject + +@property (nonatomic, assign) ZIMMessageRepliedInfoState state; + +@property (nonatomic, strong) ZIMMessageLiteInfo *messageInfo; + +@property (nonatomic, copy) NSString *senderUserID; + +@property (nonatomic, assign) unsigned long long sentTime; + +@property (nonatomic, assign) long long messageID; + +@property (nonatomic, assign) long long messageSeq; + +@end + +@interface ZIMMessageRootRepliedCountInfo : NSObject + +@property (nonatomic, assign) long long messageID; + +@property (nonatomic, copy) NSString *conversationID; + +@property (nonatomic, assign) ZIMConversationType conversationType; + +@property (nonatomic, assign) unsigned int count; + +@end + +/// Base class of message object +/// +/// Description: Identifies the basic parameters of a message. +/// +/// Caution: Some of the parameters, such as Message ID, only have values ​​during the callback. +/// Developers do not need to assign values ​​to these parameters when they actively create this object for sending messages. +/// +@interface ZIMMessage : NSObject + +/// Identifies the type of this message. +@property (nonatomic, assign, readonly) ZIMMessageType type; + +/// Description: The unique ID that identifies this message. +/// +/// Use cases: Can be used to index other messages. +/// +/// Caution: When the developer actively creates a message, there is no need to modify this parameter. +/// This parameter only has a value during callback. +@property (nonatomic, assign, readonly) long long messageID; + +@property (nonatomic, assign, readonly) long long localMessageID; + +@property (nonatomic, assign, readonly) long long messageSeq; + +/// Description: Identifies which User sent this message. +/// +/// Use cases: Used to show who sent a message. +/// +/// Caution: When the developer actively creates a message, there is no need to modify this parameter. +/// This parameter only has a value during callback. +@property (nonatomic, copy, readonly) NSString *senderUserID; + +/// Description: Session ID. Ids of the same session type are unique. +@property (nonatomic, copy, readonly) NSString *conversationID; + +/// Description: Used to describe whether a message is sent or received. +@property (nonatomic, assign, readonly) ZIMMessageDirection direction; + +/// Description: Describes the sending status of a message. +@property (nonatomic, assign, readonly) ZIMMessageSentStatus sentStatus; + +/// Description: The type of session to which the message belongs. +@property (nonatomic, assign, readonly) ZIMConversationType conversationType; + +/// Description: Identifies the sending time of a message +/// +/// Use cases: Used to present the sending time of a message, and can be used for message sorting. +/// +/// Caution: This is a standard UNIX timestamp, in milliseconds. +@property (nonatomic, assign, readonly) unsigned long long timestamp; + +/// Description: Indicates the sequence number of the message in the session. +@property (nonatomic, assign, readonly) long long conversationSeq; + +/// Description:The larger the orderKey, the newer the message, and can be used for ordering messages. +@property (nonatomic, assign, readonly) long long orderKey; + +@property (nonatomic, assign, readonly) BOOL isUserInserted; + +@property (nonatomic, assign, readonly) ZIMMessageReceiptStatus receiptStatus; + +@property (nonatomic, copy) NSString *extendedData; + +@property (nonatomic, copy) NSString *localExtendedData; + +@property (nonatomic, strong) NSArray *reactions; + +@property (nonatomic, assign, readonly) BOOL isBroadcastMessage; + +@property (nonatomic, strong) NSArray *mentionedUserIDs; + +@property (nonatomic, assign) BOOL isMentionAll; + +@property (nonatomic, assign, readonly) unsigned int rootRepliedCount; + +@property (nonatomic, strong, nullable, readonly) ZIMMessageRepliedInfo *repliedInfo; + +@property (nonatomic, assign, readonly) BOOL isServerMessage; + +@property (nonatomic, copy, readonly) NSString *cbInnerID; + +@end + +/// Base class for media message objects. +/// +/// Detail description: Identifies a media message. +/// +/// Note: This base class is the basis of all media messages and contains the properties required by media messages. +@interface ZIMMediaMessage : ZIMMessage + +/// Detail description: The local absolute path of the media message. +/// +/// Required: Required by the sender, otherwise the message will fail to be sent. +@property (nonatomic, copy) NSString *fileLocalPath; + +/// Detail description: The external download url of the media message is used for the developer to transparently transmit the media file to other users by filling in this URL when the developer uploads the media file to his own server. +/// +/// Required or not: optional at the sender. +@property (nonatomic, copy) NSString *fileDownloadUrl; + +/// Detail description: The unique ID of the media file. +/// +/// Required or not: The sender does not need to fill in, this value is generated by the SDK. +@property (nonatomic, copy, readonly) NSString *fileUID; + +/// Detail description: The filename of the media file. +/// +/// Required or not: The sender does not need to fill in, this value is generated by the SDK. +@property (nonatomic, copy) NSString *fileName; + +/// Detail description: The size of the media file. +/// +/// Required or not: The sender does not need to fill in, this value is generated by the SDK. +@property (nonatomic, assign, readonly) long long fileSize; + +@end + +/// Normal text message object. +/// +/// Description: Identifies the basic parameters of a message. +/// +/// Caution: If the Type parameter of the base class is Text during callback, +/// you can force the base class message object to be of this type. +/// +@interface ZIMTextMessage : ZIMMessage + +/// The content of the text message. +@property (nonatomic, copy) NSString *message; + +- (instancetype)initWithMessage:(NSString *)message; + +@end + +__attribute__((deprecated("Deprecated since ZIM 2.8.0, please use [ZIMCustomMessage] instead."))) +@interface ZIMSystemMessage : ZIMMessage + +/// The content of the system message. +@property (nonatomic, copy) NSString *message; + +- (instancetype)initWithMessage:(NSString *)message; + +@end + +/// Available since: 2.8.0 and above. +/// +/// Description: Identifies a custom message. +/// +/// Caution: When calling back, if the Type parameter of the base class is Custom, the base class message object can be forcibly converted to this class. +@interface ZIMCustomMessage : ZIMMessage + +/// The content of the system message. +@property (nonatomic, copy) NSString *message; + +/// Description: Search fields for custom messages. Since you cannot search for a custom message by directly searching the message field, you can concatenate the content you want to be searched in the custom message (such as the title of the poll, etc.) and put it in this parameter (the length is 64 bytes by default), so that follow-up search. +@property (nonatomic, copy) NSString *searchedContent; + +/// Description: The subtype of the message, which is used by customers to customize the usage of different custom messages. +/// Required: The sender is required, otherwise the message will fail to be sent. +@property (nonatomic, assign) unsigned int subType; + +- (instancetype)initWithMessage:(NSString *)message subType:(unsigned int)subType; + +@end + +/// Custom binary message object. +/// +/// Description: Identifies a binary message. +/// +/// Caution: If the Type parameter of the base class is Custom during callback, +/// you can force the base class message object to be of this type. +/// +@interface ZIMCommandMessage : ZIMMessage + +/// The content of the command message. +@property (nonatomic, copy) NSData *message; + +- (instancetype)initWithMessage:(NSData *)message; + +@end + +/// Description: The barrage message class does not appear in the session and does not store historical messages. +@interface ZIMBarrageMessage : ZIMMessage + +/// The content of the barrage message. +@property (nonatomic, copy) NSString *message; + +- (instancetype)initWithMessage:(NSString *)message; + +@end + +/// Description: Identifies the basic parameters of a message. +/// +/// Caution: If the Type parameter of the base class is Image during callback, you can force the base class message object to be of this type. +@interface ZIMImageMessage : ZIMMediaMessage + +/// Detail description: Thumbnail external download URL of the image file. When developers upload thumbnails to their own servers, the SDK can pass through this field to other users. +/// +/// Required or not: optional on the sender side, this field will only take effect when fileDownloadUrl is filled in. +@property (nonatomic, copy) NSString *thumbnailDownloadUrl; + +/// Detailed description: The thumbnail local path of the image file. +/// +/// Required or not: The sender does not need to fill in it. After calling [downloadMediaFile] to download, the SDK will generate this value. +@property (nonatomic, copy, readonly) NSString *thumbnailLocalPath; + +/// Detail description: Large image external download URL of the image file. When developers upload large image to their own servers, the SDK can pass through this field to other users. +/// +/// Required or not: optional on the sender side, this field will only take effect when fileDownloadUrl is filled in. +@property (nonatomic, copy) NSString *largeImageDownloadUrl; + +/// Detailed description: The large image local path of the image file. +/// +/// Required or not: The sender does not need to fill in it. After calling [downloadMediaFile] to download, the SDK will generate this value. +@property (nonatomic, copy, readonly) NSString *largeImageLocalPath; + +@property (nonatomic, assign, readonly) CGSize originalImageSize; + +@property (nonatomic, assign, readonly) CGSize largeImageSize; + +@property (nonatomic, assign, readonly) CGSize thumbnailSize; + +- (instancetype)initWithFileLocalPath:(NSString *)fileLocalPath; + +@end + +/// Description: Identifies the basic parameters of a message. +/// +/// Caution: If the Type parameter of the base class is File during callback, +/// you can force the base class message object to be of this type. +@interface ZIMFileMessage : ZIMMediaMessage + +- (instancetype)initWithFileLocalPath:(NSString *)fileLocalPath; + +@end + +/// Description: Identifies the basic parameters of a message. +/// +/// Caution: If the Type parameter of the base class is Audio during callback, +/// you can force the base class message object to be of this type. +@interface ZIMAudioMessage : ZIMMediaMessage + +/// Detail description: The duration of the audio file. +/// +/// Required: Required by the sender, if not filled, the audio message will fail to be sent. +@property (nonatomic, assign) unsigned int audioDuration; + +- (instancetype)initWithFileLocalPath:(NSString *)fileLocalPath + audioDuration:(unsigned int)audioDuration; + +@end + +@interface ZIMRevokeMessage : ZIMMessage + +@property (nonatomic, assign, readonly) ZIMRevokeType revokeType; + +@property (nonatomic, assign, readonly) unsigned long long revokeTimestamp; + +@property (nonatomic, copy, readonly) NSString *operatedUserID; + +@property (nonatomic, assign, readonly) ZIMMessageType originalMessageType; + +@property (nonatomic, copy, readonly) NSString *originalTextMessageContent; + +@property (nonatomic, copy, readonly) NSString *revokeExtendedData; + +@property (nonatomic, assign, readonly) ZIMMessageRevokeStatus revokeStatus; + +@end + +/// Description: Identifies the basic parameters of a message. +/// +/// Caution: If the Type parameter of the base class is Video during callback, +/// you can force the base class message object to be of this type. +@interface ZIMVideoMessage : ZIMMediaMessage + +/// Detail description: The duration of the video file. +/// +/// Required: Required by the sender, if not filled, the video message will fail to be sent. +@property (nonatomic, assign) unsigned int videoDuration; + +/// Detail description: Video first frame external download URL of the video file. When developers upload thumbnails to their own servers, the SDK can pass through this field to other users. +/// +/// Required or not: optional on the sender side, this field will only take effect when fileDownloadUrl is filled in. +@property (nonatomic, copy) NSString *videoFirstFrameDownloadUrl; + +/// Detailed description: The video first frame local path of the video file. +/// +/// Required or not: The sender does not need to fill in it. After calling [downloadMediaFile] to download, the SDK will generate this value. +@property (nonatomic, copy, readonly) NSString *videoFirstFrameLocalPath; + +@property (nonatomic, assign, readonly) CGSize videoFirstFrameSize; + +- (instancetype)initWithFileLocalPath:(NSString *)fileLocalPath + videoDuration:(unsigned int)videoDuration; + +@end + +@interface ZIMCombineMessage : ZIMMessage + +@property (nonatomic, copy) NSString *title; + +@property (nonatomic, copy) NSString *summary; + +@property (nonatomic, readonly) NSString *combineID; + +@property (nonatomic, strong) NSArray *messageList; + +- (instancetype)initWithTitle:(NSString *)title + summary:(unsigned int)summary + messageList:(NSArray *)messageList; + +@end + +@interface ZIMTipsMessage : ZIMMessage + +@property (nonatomic, assign) ZIMTipsMessageEvent event; + +@property (nonatomic, strong) ZIMUserInfo *operatedUser; + +@property (nonatomic, strong) NSArray *targetUserList; + +@property (nonatomic, strong, nullable) ZIMTipsMessageChangeInfo *changeInfo; + +@end + +@interface ZIMMessageMentionedInfo : NSObject + +@property (nonatomic, assign) long long messageID; + +@property (nonatomic, assign) long long messageSeq; + +@property (nonatomic, copy) NSString *fromUserID; + +@property (nonatomic, assign) ZIMMessageMentionedType type; + +@end + +@interface ZIMMessageRootRepliedInfo : NSObject + +@property (nonatomic, assign) ZIMMessageRepliedInfoState state; + +@property (nonatomic, strong, nullable) ZIMMessage *message; + +@property (nonatomic, copy) NSString *senderUserID; + +@property (nonatomic, assign) unsigned long long sentTime; + +@property (nonatomic, assign) unsigned int repliedCount; + +@end + +@interface ZIMMessageReceivedInfo : NSObject + +@property (nonatomic, assign) BOOL isOfflineMessage; + +@end + +/// Details: Configure message sending. +@interface ZIMMessageSendConfig : NSObject + +/// Description: Configures the offline push function. +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +/// Enumeration value used to set message priority. The default value is Low. +@property (nonatomic, assign) ZIMMessagePriority priority; + +@property (nonatomic, assign) BOOL hasReceipt; + +@property (nonatomic, assign) BOOL isNotifyMentionedUsers; + +@end + +/// Example Query message configuration. +@interface ZIMMessageQueryConfig : NSObject + +/// Description: Query the anchor point of the message. +/// Required: This parameter is not required for the first query but is required for subsequent paging queries. +/// Default value: The default value is nil. +@property (nonatomic, strong, nullable) ZIMMessage *nextMessage; + +/// Description: Number of query messages. The default value is 0. +@property (nonatomic, assign) unsigned int count; + +/// Description: Indicates whether the query is in reverse order. The default value is NO. +@property (nonatomic, assign) BOOL reverse; + +@end + +/// Description: Revoke configurations related to messages. +@interface ZIMMessageRevokeConfig : NSObject + +/// Description: Configures the offline push function, If Android or iOS platform is integrated, it is strongly recommended to configure this. +/// Required: Not mandatory. +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +/// Description: revoking additional messages. +@property (nonatomic, copy) NSString *revokeExtendedData; + +@end + +/// Delete message configuration. +@interface ZIMMessageDeleteConfig : NSObject + +/// Description: Whether to remove flags for server messages. The default value is YES. +@property (nonatomic, assign) BOOL isAlsoDeleteServerMessage; + +@end + +@interface ZIMMessageDeletedInfo : NSObject + +@property (nonatomic, copy) NSString *conversationID; + +@property (nonatomic, assign) ZIMConversationType conversationType; + +@property (nonatomic, assign) ZIMMessageDeleteType messageDeleteType; + +@property (nonatomic, assign) BOOL isDeleteConversationAllMessage; + +@property (nonatomic, strong) NSArray *messageList; + +@end + +typedef void (^ZIMMessageAttachedCallback)(ZIMMessage *message); + +/// Supported versions: 2.1.0 and above +/// +/// Detail description: The progress callback for sending media messages. +/// +/// Business scenario: The developer can obtain the sending progress of the media message through this callback. +/// +/// Notification timing: When the developer calls the [sendMediaMessage] interface, the callback will be triggered, and will be triggered multiple times during the sending process. +/// +/// Related interface: Through [sendMediaMessage], the sending progress will be notified through this callback. +typedef void (^ZIMMediaUploadingProgress)(ZIMMediaMessage *message, + unsigned long long currentFileSize, + unsigned long long totalFileSize); + +@interface ZIMMessageSendNotification : NSObject + +@property (nonatomic, copy, nullable) ZIMMessageAttachedCallback onMessageAttached; +@property (nonatomic, copy, nullable) ZIMMediaUploadingProgress onMediaUploadingProgress; + +@end + +@interface ZIMMediaMessageSendNotification : NSObject + +@property (nonatomic, copy, nullable) ZIMMessageAttachedCallback onMessageAttached; +@property (nonatomic, copy, nullable) ZIMMediaUploadingProgress onMediaUploadingProgress; + +@end + +/// Detailed description: receipt information. +@interface ZIMMessageReceiptInfo : NSObject + +/// Detail description: receipt status. +@property (nonatomic, assign) ZIMMessageReceiptStatus status; + +/// Detailed Description: Message ID. +/// +/// Business scenario: Developers can match the loaded message list according to this ID. +/// +/// Is it required: No, SDK fills in. +@property (nonatomic, assign) long long messageID; + +/// Detailed Description: Session ID. +/// +/// Business scenario: Receipt information used to indicate which session this belongs to. +/// +/// Is it required: No, SDK fills in. +@property (nonatomic, copy) NSString *conversationID; + +/// Detailed Description: Session type. +/// +/// Business scenario: Indicates the type of the session. +/// +/// Is it required: If no, the SDK is filled. +@property (nonatomic, assign) ZIMConversationType conversationType; + +/// Detailed description: Indicates the number of people who have read the receipt. +/// +/// Business scenario: When used to query receipt information, it can display how many people have read the message. +/// +/// Is it required: no. +/// +/// Default: 0. +/// +/// Note: This value indicates how many people have read the message, it is only applicable to the message has been read; if the message is not sent by yourself, the value is 0. +@property (nonatomic, assign) unsigned int readMemberCount; + +/// Detailed description: Indicates the number of unread people of the receipt. +/// +/// Business scenario: When used to query receipt information, it can display how many people have unread the message. +/// +/// Is it required: no. +/// +/// Default: 0. +/// +/// Note: This value indicates how many people have not read the message, and it is only applicable to the message that has been read; if the message is not sent by yourself, the value is 0. +@property (nonatomic, assign) unsigned int unreadMemberCount; + +@property (nonatomic, assign) BOOL isSelfOperated; + +@end + +@interface ZIMConversation : NSObject + +/// Description: conversationID. +@property (nonatomic, copy) NSString *conversationID; + +/// Description: conversationName is the same as the groupName/userName value corresponding to the session. +@property (nonatomic, copy) NSString *conversationName; + +@property (nonatomic, copy) NSString *conversationAlias; + +@property (nonatomic, copy) NSString *conversationAvatarUrl; + +/// Description: conversation type. +@property (nonatomic, assign) ZIMConversationType type; + +/// Description: session notification status. +@property (nonatomic, assign) ZIMConversationNotificationStatus notificationStatus; + +/// Description: Session unread. +@property (nonatomic, assign) unsigned int unreadMessageCount; + +/// Description: last message. +@property (nonatomic, strong) ZIMMessage *lastMessage; + +/// Description: OrderKey is used to describe the order of messages in the session. The larger orderKey is, the newer it is. +@property (nonatomic, assign) long long orderKey; + +/// Description: conversation pinned state +@property (nonatomic, assign) BOOL isPinned; + +@property (nonatomic, strong) NSArray *mentionedInfoList; +/// Description: conversation draft. +@property (nonatomic, copy) NSString *draft; + +@property (nonatomic, strong) NSArray *marks; + +@end + +@interface ZIMConversationBaseInfo : NSObject + +@property (nonatomic, copy) NSString *conversationID; + +@property (nonatomic, assign) ZIMConversationType conversationType; + +@end + +@interface ZIMGroupConversation : ZIMConversation + +@property (nonatomic, assign) long long mutedExpiredTime; + +@property (nonatomic, assign) BOOL isDisabled; + +@end + +/// Description: Query the relevant configuration of the session. +@interface ZIMConversationQueryConfig : NSObject + +/// Description: Session that needs to be queried. +@property (nonatomic, strong, nullable) ZIMConversation *nextConversation; + +/// Description: The number of sessions to query. +@property (nonatomic, assign) unsigned int count; + +@end + +@interface ZIMConversationFilterOption : NSObject + +@property (nonatomic, strong) NSArray *marks; + +@property (nonatomic, strong) NSArray *conversationTypes; + +@property (nonatomic, assign) BOOL isOnlyUnreadConversation; + +@end + +@interface ZIMConversationTotalUnreadMessageCountQueryConfig : NSObject + +@property (nonatomic, strong) NSArray *marks; + +@property (nonatomic, strong) NSArray *conversationTypes; + +@end + +/// Description: Delete session configuration. +@interface ZIMConversationDeleteConfig : NSObject + +/// Description: just remove the session flag. +@property (nonatomic, assign) BOOL isAlsoDeleteServerConversation; + +@end + +@interface ZIMConversationsAllDeletedInfo : NSObject + +@property (nonatomic, assign) unsigned int count; + +@end + +/// Description: Session change information. +@interface ZIMConversationChangeInfo : NSObject + +/// Description: session events. +@property (nonatomic, assign) ZIMConversationEvent event; + +/// Description: Session specific information. +@property (nonatomic, strong) ZIMConversation *conversation; + +@end + +/// Description: Session sent status change information. +@interface ZIMMessageSentStatusChangeInfo : NSObject + +/// Description: sentStatus +@property (nonatomic, assign) ZIMMessageSentStatus status; + +/// Description: Session specific information. +@property (nonatomic, strong) ZIMMessage *message; + +/// Descruotion: Custom reason +@property (nonatomic, copy) NSString *reason; + +@end + +@interface ZIMMessageImportConfig : NSObject + +@end + +@interface ZIMMessageExportConfig : NSObject + +@end + +@interface ZIMFileCacheClearConfig : NSObject + +@property (nonatomic, assign) long long endTime; + +@end + +@interface ZIMFileCacheQueryConfig : NSObject + +@property (nonatomic, assign) long long endTime; + +@end + +@interface ZIMFileCacheInfo : NSObject + +@property (nonatomic, assign) long long totalFileSize; + +@end + +@interface ZIMMessageSearchConfig : NSObject + +@property (nonatomic, strong, nullable) ZIMMessage *nextMessage; + +@property (nonatomic, assign) unsigned int count; + +@property (nonatomic, assign) ZIMMessageOrder order; + +@property (nonatomic, strong) NSArray *keywords; + +@property (nonatomic, strong) NSArray *messageTypes; + +@property (nonatomic, strong) NSArray *subMessageTypes; + +@property (nonatomic, strong) NSArray *senderUserIDs; + +@property (nonatomic, assign) long long startTime; + +@property (nonatomic, assign) long long endTime; + +@end + +@interface ZIMMessageRepliedListQueryConfig : NSObject + +@property (nonatomic, assign) long long nextFlag; + +@property (nonatomic, assign) unsigned int count; + +@end + +@interface ZIMConversationSearchConfig : NSObject + +@property (nonatomic, assign) unsigned int nextFlag; + +@property (nonatomic, assign) unsigned int totalConversationCount; + +@property (nonatomic, assign) unsigned int conversationMessageCount; + +@property (nonatomic, strong) NSArray *keywords; + +@property (nonatomic, strong) NSArray *messageTypes; + +@property (nonatomic, strong) NSArray *subMessageTypes; + +@property (nonatomic, strong) NSArray *senderUserIDs; + +@property (nonatomic, assign) long long startTime; + +@property (nonatomic, assign) long long endTime; + +@end + +@interface ZIMConversationSearchInfo : NSObject + +@property (nonatomic, copy) NSString *conversationID; + +@property (nonatomic, assign) ZIMConversationType conversationType; + +@property (nonatomic, assign) unsigned int totalMessageCount; + +@property (nonatomic, strong) NSArray *messageList; + +@end + +/// Room information object. +/// +/// Description: Identifies a unique room. +/// +@interface ZIMRoomInfo : NSObject + +/// Room ID, a string with a maximum length of 32 bytes or less. Only support numbers, English characters and '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '/', '\'. +@property (nonatomic, copy) NSString *roomID; + +/// Room name, a string with a maximum length of 64 bytes or less +@property (nonatomic, copy) NSString *roomName; + +@end + +/// The room details object. +/// +/// Description: Identifies the basic parameters of a message. +/// +/// Caution: Identifies the detailed information of a room. +/// +@interface ZIMRoomFullInfo : NSObject + +/// The base object of the room. +@property (nonatomic, strong) ZIMRoomInfo *baseInfo; + +@end + +@interface ZIMRoomMemberInfo : ZIMUserInfo + +@end + +/// Configuration for querying member. +/// +/// Description: When querying member, you need to configure this object. +/// +@interface ZIMRoomMemberQueryConfig : NSObject + +/// Description: The flag of the paging query. For the first query, set this field to an empty string. If the "nextFlag" field of the callback is not an empty string, it needs to be set here to continue the query on the next page. +@property (nonatomic, copy) NSString *nextFlag; + +/// Description: How many messages are retrieved in one query. +/// +/// Caution: To obtain messages in pages to reduce overhead, it is recommended to obtain within 100 messages at a time. +@property (nonatomic, assign) unsigned int count; + +@end + +/// +/// +/// +/// +/// Room advanced config. +@interface ZIMRoomAdvancedConfig : NSObject + +/// Description: Room attributes of a room. +@property (nonatomic, strong, nullable) NSDictionary *roomAttributes; + +@property (nonatomic, assign) unsigned int roomDestroyDelayTime; + +@end + +/// The behavior attribute set by the room attribute. +@interface ZIMRoomAttributesSetConfig : NSObject + +/// Description: Whether the operation is mandatory, that is, the property of the room whose owner is another user can be modified. +@property (nonatomic, assign) BOOL isForce; + +/// Description: Room attributes are automatically deleted after the owner leaves the room. +@property (nonatomic, assign) BOOL isDeleteAfterOwnerLeft; + +/// Description: Whether to update the owner of the room attribute involved. +@property (nonatomic, assign) BOOL isUpdateOwner; + +@end + +/// The behavior attribute set by the room attribute. +@interface ZIMRoomAttributesBatchOperationConfig : NSObject + +/// Description: Whether the operation is mandatory, that is, the property of the room whose owner is another user can be modified. +@property (nonatomic, assign) BOOL isForce; + +/// Description: Room attributes are automatically deleted after the owner leaves the room. +@property (nonatomic, assign) BOOL isDeleteAfterOwnerLeft; + +/// Description: Whether to update the owner of the room attribute involved. +@property (nonatomic, assign) BOOL isUpdateOwner; + +@end +/// +/// +/// +/// +@interface ZIMRoomAttributesDeleteConfig : NSObject + +/// Description: Whether the operation is mandatory, that is, the property of the room whose owner is another user can be deleted. +@property (nonatomic, assign) BOOL isForce; + +@end + +/// +/// +/// +///Notice of Room Attribute Change. +@interface ZIMRoomAttributesUpdateInfo : NSObject + +/// Description: Behavioral information of room attribute change notification. +@property (nonatomic, assign) ZIMRoomAttributesUpdateAction action; + +/// Description: Room attributes. +@property (nonatomic, strong) NSDictionary *roomAttributes; + +@end + +///Room user attribute information. +@interface ZIMRoomMemberAttributesInfo : NSObject + +/// Description: Detail description: User ID. +@property (nonatomic, copy) NSString *userID; +/// +/// Description: room user attributes. +@property (nonatomic, strong) NSDictionary *attributes; + +@end + +///Room user attribute operation information. +@interface ZIMRoomMemberAttributesOperatedInfo : NSObject + +/// Description: room user attribute information. +@property (nonatomic, strong) ZIMRoomMemberAttributesInfo *attributesInfo; + +/// Description: The key of the room user attribute operation failure. +@property (nonatomic, strong) NSArray *errorKeys; + +@end + +///Room user attribute update information. +@interface ZIMRoomMemberAttributesUpdateInfo : NSObject + +/// Description: room user attributes. +@property (nonatomic, strong) ZIMRoomMemberAttributesInfo *attributesInfo; + +@end + +///Room user property settings configuration. +@interface ZIMRoomMemberAttributesSetConfig : NSObject + +/// Description: Configure whether the room user attributes are saved after the user leaves the room. +@property (nonatomic, assign) BOOL isDeleteAfterOwnerLeft; + +@end + +///Room user attribute query configuration. +@interface ZIMRoomMemberAttributesQueryConfig : NSObject + +/// Description: Query anchor for room user properties. +@property (nonatomic, copy) NSString *nextFlag; + +/// Description: The number of paginated queries. +@property (nonatomic, assign) unsigned int count; + +@end + +///Room operation information. +@interface ZIMRoomOperatedInfo : NSObject + +/// Description: UserID of the operator. +@property (nonatomic, copy) NSString *userID; + +@end +/// +/// +/// +/// +/// When userInfo is queried, the failed userInfo is displayed through this data class. +@interface ZIMErrorUserInfo : NSObject + +/// Description:userID. +@property (nonatomic, copy) NSString *userID; + +/// Description: Description Reason for the query failure. +@property (nonatomic, assign) unsigned int reason; + +@end + +@interface ZIMGroupMemberSimpleInfo : ZIMUserInfo + +/// Description: Group nickname. +@property (nonatomic, copy) NSString *memberNickname; + +/// Description: group role. +@property (nonatomic, assign) ZIMGroupMemberRole memberRole; + +@end + +/// +/// +/// +/// group information. +@interface ZIMGroupInfo : NSObject + +/// Description: groupID. +@property (nonatomic, copy) NSString *groupID; + +/// Description: Group name. +@property (nonatomic, copy) NSString *groupName; + +@property (nonatomic, copy) NSString *groupAvatarUrl; + +@end + +@interface ZIMGroupMuteInfo : NSObject + +@property (nonatomic, assign) ZIMGroupMuteMode mode; + +@property (nonatomic, assign) long long expiredTime; + +@property (nonatomic, strong) NSArray *roles; + +@end + +@interface ZIMGroupVerifyInfo : NSObject + +@property (nonatomic, assign) ZIMGroupJoinMode joinMode; + +@property (nonatomic, assign) ZIMGroupInviteMode inviteMode; + +@property (nonatomic, assign) ZIMGroupBeInviteMode beInviteMode; + +@end + +@interface ZIMGroupEnterInfo : NSObject + +@property (nonatomic, assign) long long enterTime; + +@property (nonatomic, assign) ZIMGroupEnterType enterType; + +@property (nonatomic, strong, nullable) ZIMGroupMemberSimpleInfo *operatedUser; + +@end + +/// +/// +/// +/// Description: complete group information. +@interface ZIMGroupFullInfo : NSObject + +/// Description: basic group information. +@property (nonatomic, strong) ZIMGroupInfo *baseInfo; + +@property (nonatomic, copy) NSString *groupAlias; + +/// Description: basic group notice. +@property (nonatomic, copy) NSString *groupNotice; + +/// Description: where developers can customize key-value +@property (nonatomic, strong) NSDictionary *groupAttributes; + +/// Description: group DND status. +@property (nonatomic, assign) ZIMGroupMessageNotificationStatus notificationStatus; + +@property (nonatomic, strong) ZIMGroupMuteInfo *mutedInfo; + +@property (nonatomic, assign) long long createTime; + +@property (nonatomic, assign) unsigned int maxMemberCount; + +@property (nonatomic, strong) ZIMGroupVerifyInfo *verifyInfo; + +@end + +/// Description: group class. +@interface ZIMGroup : NSObject + +/// Description: basic group information. +@property (nonatomic, strong) ZIMGroupInfo *baseInfo; + +@property (nonatomic, copy) NSString *groupAlias; + +/// Description: group DND status. +@property (nonatomic, assign) ZIMGroupMessageNotificationStatus notificationStatus; + +@end + +/// +/// +/// +/// Group member information. +@interface ZIMGroupMemberInfo : ZIMUserInfo + +/// Description: Group nickname. +@property (nonatomic, copy) NSString *memberNickname; + +/// Description: group role. +@property (nonatomic, assign) ZIMGroupMemberRole memberRole; + +//memberAvatarUrl is deprecated since ZIM 2.13.0 +@property (nonatomic, copy) NSString *memberAvatarUrl; + +@property (nonatomic, assign) long long muteExpiredTime; + +@property (nonatomic, strong) ZIMGroupEnterInfo *groupEnterInfo; + +@end + +@interface ZIMGroupApplicationInfo : NSObject + +@property (nonatomic, assign) ZIMGroupApplicationType type; + +@property (nonatomic, assign) ZIMGroupApplicationState state; + +@property (nonatomic, strong) ZIMGroupInfo *groupInfo; + +@property (nonatomic, strong) ZIMUserInfo *applyUser; + +@property (nonatomic, assign) long long createTime; + +@property (nonatomic, assign) long long updateTime; + +@property (nonatomic, copy) NSString *wording; + +@property (nonatomic, strong, nullable) ZIMGroupMemberSimpleInfo *operatedUser; + +@end + +/// +/// +/// +/// Information that the group has operated on. +@interface ZIMGroupOperatedInfo : NSObject +/// Description: Group member information. +//ZIMGroupMemberInfo is deprecated. +@property (nonatomic, strong) ZIMGroupMemberInfo *operatedUserInfo; + +@property (nonatomic, copy) NSString *userID; + +@property (nonatomic, copy) NSString *userName; + +@property (nonatomic, copy) NSString *memberNickname; + +@property (nonatomic, assign) ZIMGroupMemberRole memberRole; + +@end + +/// +/// +/// +/// group member query configuration. +@interface ZIMGroupMemberQueryConfig : NSObject + +/// Description: nextFlag. +@property (nonatomic, assign) unsigned int nextFlag; + +/// Description: count. +@property (nonatomic, assign) unsigned int count; + +@end + +/// +/// +/// +/// Group advanced configuration. +@interface ZIMGroupAdvancedConfig : NSObject + +@property (nonatomic, copy) NSString *groupNotice; + +@property (nonatomic, strong, nullable) NSDictionary *groupAttributes; + +@property (nonatomic, assign) unsigned int maxMemberCount; + +@property (nonatomic, assign) ZIMGroupJoinMode joinMode; + +@property (nonatomic, assign) ZIMGroupInviteMode inviteMode; + +@property (nonatomic, assign) ZIMGroupBeInviteMode beInviteMode; + +@end + +@interface ZIMGroupMuteConfig : NSObject + +@property (nonatomic, assign) ZIMGroupMuteMode mode; + +@property (nonatomic, assign) int duration; + +@property (nonatomic, strong) NSArray *roles; + +@end + +@interface ZIMGroupMemberMuteConfig : NSObject + +@property (nonatomic, assign) int duration; + +@end + +@interface ZIMGroupMemberMutedListQueryConfig : NSObject + +/// Description: nextFlag. +@property (nonatomic, assign) unsigned long long nextFlag; + +/// Description: count. +@property (nonatomic, assign) unsigned int count; + +@end + +/// +/// +/// +/// Group attribute update information. +@interface ZIMGroupAttributesUpdateInfo : NSObject + +/// Description: Group attribute update action. +@property (nonatomic, assign) ZIMGroupAttributesUpdateAction action; + +/// Description: group properties. +@property (nonatomic, strong) NSDictionary *groupAttributes; + +@end + +@interface ZIMGroupMessageReceiptMemberQueryConfig : NSObject + +@property (nonatomic, assign) unsigned int nextFlag; + +@property (nonatomic, assign) unsigned int count; + +@end + +@interface ZIMGroupSearchConfig : NSObject + +@property (nonatomic, assign) unsigned int nextFlag; + +@property (nonatomic, assign) unsigned int count; + +@property (nonatomic, strong) NSArray *keywords; + +@property (nonatomic, assign) BOOL isAlsoMatchGroupMemberUserName; + +@property (nonatomic, assign) BOOL isAlsoMatchGroupMemberNickname; + +@end + +@interface ZIMGroupSearchInfo : NSObject + +@property (nonatomic, strong) ZIMGroupInfo *groupInfo; + +@property (nonatomic, strong) NSArray *userList; + +@end + +@interface ZIMGroupMemberSearchConfig : NSObject + +@property (nonatomic, assign) unsigned int nextFlag; + +@property (nonatomic, assign) unsigned int count; + +@property (nonatomic, strong) NSArray *keywords; + +@property (nonatomic, assign) BOOL isAlsoMatchGroupMemberNickname; + +@end + +@interface ZIMGroupJoinApplicationSendConfig : NSObject + +@property (nonatomic, copy) NSString *wording; + +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMGroupJoinApplicationAcceptConfig : NSObject + +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMGroupJoinApplicationRejectConfig : NSObject + +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMGroupInviteApplicationSendConfig : NSObject + +@property (nonatomic, copy) NSString *wording; + +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMGroupInviteApplicationAcceptConfig : NSObject + +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMGroupInviteApplicationRejectConfig : NSObject + +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMGroupApplicationListQueryConfig : NSObject + +@property (nonatomic, assign) unsigned int nextFlag; + +@property (nonatomic, assign) unsigned int count; + +@end + +typedef NS_ENUM(NSInteger, ZIMCallUserState) { + ZIMCallUserStateUnknown = -1, + ZIMCallUserStateInviting = 0, + ZIMCallUserStateAccepted = 1, + ZIMCallUserStateRejected = 2, + ZIMCallUserStateCancelled = 3, + //ZIMCallUserStateOffline is deprecated since ZIM 2.9.0 + ZIMCallUserStateOffline = 4, + ZIMCallUserStateReceived = 5, + ZIMCallUserStateTimeout = 6, + ZIMCallUserStateQuit = 7, + ZIMCallUserStateEnd = 8, + ZIMCallUserStateNotYetReceived = 9, + ZIMCallUserStateBeCancelled = 10, +}; + +typedef NS_ENUM(NSInteger, ZIMFriendApplicationType) { + ZIMFriendApplicationTypeUnknown = -1, + ZIMFriendApplicationTypeNone = 0, + ZIMFriendApplicationTypeReceived = 1, + ZIMFriendApplicationTypeSent = 2, + ZIMFriendApplicationTypeBoth = 3, +}; + +typedef NS_ENUM(NSInteger, ZIMFriendRelationCheckType) { + ZIMFriendRelationCheckTypeUnknown = -1, + ZIMFriendRelationCheckTypeBoth = 0, + ZIMFriendRelationCheckTypeSingle = 1, +}; + +typedef NS_ENUM(NSInteger, ZIMFriendDeleteType) { + ZIMFriendDeleteTypeBoth = 0, + ZIMFriendDeleteTypeSingle = 1, +}; + +typedef NS_ENUM(NSInteger, ZIMFriendApplicationState) { + ZIMFriendApplicationStateUnknown = -1, + ZIMFriendApplicationStateWaiting = 1, + ZIMFriendApplicationStateAccepted = 2, + ZIMFriendApplicationStateRejected = 3, + ZIMFriendApplicationStateExpired = 4, + ZIMFriendApplicationStateDisabled = 5, +}; + +typedef NS_ENUM(NSUInteger, ZIMUserRelationType) { + ZIMUserRelationTypeUnknown = 0, + ZIMUserRelationTypeSingleNo = 1, + ZIMUserRelationTypeSingleHave = 2, + ZIMUserRelationTypeBothAllNo = 3, + ZIMUserRelationTypeBothSelfHave = 4, + ZIMUserRelationTypeBothOtherHave = 5, + ZIMUserRelationTypeBothAllHave = 6, +}; + +/// Call invitation user information. +@interface ZIMCallUserInfo : NSObject + +/// Description: userID. +@property (nonatomic, copy) NSString *userID; + +/// Description: user status. +@property (nonatomic, assign) ZIMCallUserState state; + +@property (nonatomic, copy) NSString *extendedData; + +@end + +/// The behavior property of the Send Call Invitation setting. +@interface ZIMCallInviteConfig : NSObject +/// Description: The timeout setting of the call invitation, the unit is seconds. The default value is 90s. +@property (nonatomic, assign) unsigned int timeout; + +@property (nonatomic, assign) ZIMCallInvitationMode mode; + +/// Description: Extended field, through which the inviter can carry information to the invitee. +@property (nonatomic, copy) NSString *extendedData; + +@property (nonatomic, assign) BOOL enableNotReceivedCheck; + +/// Description: Configures the offline push function. +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMCallingInviteConfig : NSObject + +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMCallJoinConfig : NSObject + +@property (nonatomic, copy) NSString *extendedData; + +@end + +@interface ZIMCallQuitConfig : NSObject + +@property (nonatomic, copy) NSString *extendedData; + +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMCallEndConfig : NSObject + +/// Description: Extended field, through which the inviter can carry information to the invitee. +/// +/// Required: not required. +@property (nonatomic, copy) NSString *extendedData; + +/// Description: Offline push configuration. +/// Required: not required. +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +@end + +/// Behavior property that cancels the call invitation setting. +@interface ZIMCallCancelConfig : NSObject + +/// Description: Configures the offline push function. +@property (nonatomic, strong, nullable) ZIMPushConfig *pushConfig; + +/// Description: Extended field. +@property (nonatomic, copy) NSString *extendedData; + +@end + +/// Behavior property that accept the call invitation setting. +@interface ZIMCallAcceptConfig : NSObject + +/// Description: Extended field. +@property (nonatomic, copy) NSString *extendedData; + +@end + +/// The behavior property of the reject call invitation setting. +@interface ZIMCallRejectConfig : NSObject + +/// Description: Extended field, through which the inviter can carry information to the invitee. +@property (nonatomic, copy) NSString *extendedData; + +@end + +/// Call invitation sent message. +@interface ZIMCallInvitationSentInfo : NSObject + +/// Description: The timeout setting of the call invitation, the unit is seconds. +@property (nonatomic, assign) unsigned int timeout; + +/// Description: User id that has not received a call invitation. +@property (nonatomic, strong) NSArray *errorUserList; + +@property (nonatomic, strong) NSArray *errorInvitees DEPRECATED_MSG_ATTRIBUTE( + "Deprecated since ZIM 2.9.0, please use errorList instead."); + +@end + +@interface ZIMCallingInvitationSentInfo : NSObject + +/// Description: User id that has not received a call invitation. +@property (nonatomic, strong) NSArray *errorUserList; + +@end + +@interface ZIMCallJoinSentInfo : NSObject + +@property (nonatomic, copy) NSString *extendedData; + +/// Description: Timestamp of the time when the call invitation was created. +@property (nonatomic, assign) long long createTime; + +/// Description: Time stamp of the person joining the call invitation. +@property (nonatomic, assign) long long joinTime; + +@property (nonatomic, strong) NSArray *callUserList; + +@end + +@interface ZIMCallQuitSentInfo : NSObject + +/// Description: Timestamp of the time when the call invitation was created. +@property (nonatomic, assign) long long createTime; + +/// Description: Time stamp of the person accepting the call invitation. +@property (nonatomic, assign) long long acceptTime; + +/// Description: The time stamp for me to exit the call. +@property (nonatomic, assign) long long quitTime; + +@end + +@interface ZIMCallEndedSentInfo : NSObject + +/// Description: Timestamp of the time when the call invitation was created. +@property (nonatomic, assign) long long createTime; + +/// Description: Time stamp of the person accepting the call invitation. +@property (nonatomic, assign) long long acceptTime; + +/// Description: The time stamp for me to exit the call. +@property (nonatomic, assign) long long endTime; + +@end + +/// Information to accept the call invitation. +@interface ZIMCallInvitationReceivedInfo : NSObject + +@property (nonatomic, assign) ZIMCallInvitationMode mode; + +/// Description: The timeout setting of the call invitation, the unit is seconds. +@property (nonatomic, assign) unsigned int timeout; + +@property (nonatomic, copy) NSString *caller; + +/// Description: Inviter ID. +@property (nonatomic, copy) NSString *inviter; + +@property (nonatomic, assign) long long createTime; + +@property (nonatomic, strong) NSArray *callUserList; + +/// Description: Extended field, through which the inviter can carry information to the invitee. +@property (nonatomic, copy) NSString *extendedData; + +@end + +@interface ZIMCallInvitationCreatedInfo : NSObject + +@property (nonatomic, assign) ZIMCallInvitationMode mode; + +@property (nonatomic, copy) NSString *caller; + +@property (nonatomic, copy) NSString *extendedData; + +@property (nonatomic, assign) unsigned int timeout; + +@property (nonatomic, assign) long long createTime; + +@property (nonatomic, strong) NSArray *callUserList; + +@end + +/// Cancel the call invitation message. +@interface ZIMCallInvitationCancelledInfo : NSObject + +/// Description: The inviter ID of the call invitation. +@property (nonatomic, copy) NSString *inviter; + +@property (nonatomic, assign) ZIMCallInvitationMode mode; + +/// Description: Extended field, through which the inviter can carry information to the invitee. +@property (nonatomic, copy) NSString *extendedData; + +@end + +/// Accept the call invitation message. +@interface ZIMCallInvitationAcceptedInfo : NSObject + +/// Description: Invitee ID. +@property (nonatomic, copy) NSString *invitee; + +/// Description: Extended field, through which the inviter can carry information to the invitee. +@property (nonatomic, copy) NSString *extendedData; + +@end + +/// Reject the call invitation message. +@interface ZIMCallInvitationRejectedInfo : NSObject + +/// Description: Invitee ID. +@property (nonatomic, copy) NSString *invitee; + +/// Description: Extended field, through which the inviter can carry information to the invitee. +@property (nonatomic, copy) NSString *extendedData; + +@end + +@interface ZIMCallInvitationEndedInfo : NSObject + +@property (nonatomic, copy) NSString *caller; + +@property (nonatomic, copy) NSString *operatedUserID; + +@property (nonatomic, copy) NSString *extendedData; + +@property (nonatomic, assign) ZIMCallInvitationMode mode; + +@property (nonatomic, assign) long long endTime; + +@end + +@interface ZIMCallInvitationTimeoutInfo : NSObject + +@property (nonatomic, assign) ZIMCallInvitationMode mode; + +@end + +@interface ZIMCallInvitationQueryConfig : NSObject + +/// Description: The query number is limited to up to 100. +/// +/// Required: required. +@property (nonatomic, assign) unsigned int count; + +/// Description: The flag of the query list.No padding is required for the first query. After the query, callback will return a nextFlag, which can be filled in the next query to continue the query based on the last query. +/// Required: not required. +@property (nonatomic, assign) long long nextFlag; + +@end + +@interface ZIMCallInfo : NSObject + +/// Call invite ID. +@property (nonatomic, copy) NSString *callID; + +/// Call invitation initiator ID. +@property (nonatomic, copy) NSString *caller; + +@property (nonatomic, copy) NSString *inviter; + +/// Call invites to create a timestamp. +@property (nonatomic, assign) long long createTime; + +/// Call invitation end time. +@property (nonatomic, assign) long long endTime; + +/// Call invitation status. +@property (nonatomic, assign) ZIMCallState state; + +/// Call invitation mode. +@property (nonatomic, assign) ZIMCallInvitationMode mode; + +/// Create a call invitation additional information. +@property (nonatomic, copy) NSString *extendedData; + +/// The list of call member. +@property (nonatomic, strong) NSArray *callUserList; + +@end + +@interface ZIMBlacklistQueryConfig : NSObject + +/// Description: The query number is limited to up to 100. +/// +/// Required: required. +@property (nonatomic, assign) unsigned int count; + +/// Description: The flag of the query list.No padding is required for the first query. After the query, callback will return a nextFlag, which can be filled in the next query to continue the query based on the last query. +/// Required: not required. +@property (nonatomic, assign) unsigned int nextFlag; + +@end + +@interface ZIMCallUserStateChangeInfo : NSObject + +/// Description: List of call members whose status changes. +@property (nonatomic, strong) NSArray *callUserList; + +@end + +@interface ZIMFriendAddConfig : NSObject + +@property (nonatomic, copy) NSString *friendAlias; +@property (nonatomic, copy) NSString *wording; +@property (nonatomic, strong) NSDictionary *friendAttributes; + +@end + +@interface ZIMFriendApplicationListQueryConfig : NSObject + +@property (nonatomic, assign) unsigned int count; +@property (nonatomic, assign) unsigned int nextFlag; + +@end + +@interface ZIMFriendSearchConfig : NSObject + +@property (nonatomic, assign) unsigned int count; +@property (nonatomic, assign) unsigned int nextFlag; +@property (nonatomic, strong) NSArray *keywords; +@property (nonatomic, assign) BOOL isAlsoMatchFriendAlias; + +@end + +@interface ZIMFriendRelationCheckConfig : NSObject + +@property (nonatomic, assign) ZIMFriendRelationCheckType type; + +@end + +@interface ZIMFriendDeleteConfig : NSObject + +@property (nonatomic, assign) ZIMFriendDeleteType type; + +@end + +@interface ZIMFriendListQueryConfig : NSObject + +@property (nonatomic, assign) unsigned int count; +@property (nonatomic, assign) unsigned int nextFlag; + +@end + +@interface ZIMFriendApplicationInfo : NSObject + +@property (nonatomic, strong) ZIMUserInfo *applyUser; +@property (nonatomic, copy) NSString *wording; +@property (nonatomic, assign) long long createTime; +@property (nonatomic, assign) long long updateTime; +@property (nonatomic, assign) ZIMFriendApplicationType type; +@property (nonatomic, assign) ZIMFriendApplicationState state; + +@end + +@interface ZIMFriendApplicationRejectConfig : NSObject + +@property (nonatomic, strong) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMFriendRelationInfo : NSObject + +@property (nonatomic, assign) ZIMUserRelationType type; +@property (nonatomic, copy) NSString *userID; + +@end + +@interface ZIMFriendApplicationSendConfig : NSObject + +@property (nonatomic, copy) NSString *wording; +@property (nonatomic, copy) NSString *friendAlias; +@property (nonatomic, strong) NSDictionary *friendAttributes; +@property (nonatomic, strong) ZIMPushConfig *pushConfig; + +@end + +@interface ZIMFriendApplicationAcceptConfig : NSObject +@property (nonatomic, copy) NSString *friendAlias; +@property (nonatomic, strong) NSDictionary *friendAttributes; +@property (nonatomic, strong) ZIMPushConfig *pushConfig; +@end + +@interface ZIMFriendInfo : ZIMUserInfo + +@property (nonatomic, copy) NSString *friendAlias; +@property (nonatomic, assign) long long createTime; // 添加时间 +@property (nonatomic, copy) NSString *wording; +@property (nonatomic, strong) NSDictionary *friendAttributes; + +@end + +@interface ZIMUserStatusSubscribeConfig : NSObject + +@property (nonatomic, assign) unsigned int subscriptionDuration; + +@end + +@interface ZIMSubscribedUserStatusQueryConfig : NSObject + +@property (nonatomic, strong) NSArray *userIDs; + +@end + +/// Supported version: 1.2.0 and above. +/// +/// Detailed description: After the developer uploads the log, execute the callback of the result. +/// +/// Use cases: Developers can use the [errorCode] in the callback to determine whether the upload is successful. +/// +/// Notification timing: When the developer calls the [uploadLog] interface, the callback will be triggered. +/// +/// Related interface: call log upload via [uploadLog], success or failure will be notified through this callback. +typedef void (^ZIMLogUploadedCallback)(ZIMError *errorInfo); + +/// @param errorInfo Error code. +typedef void (^ZIMLoggedInCallback)(ZIMError *errorInfo); + +// MARK: Main + +/// Callback of the result of renewing the token. +/// +/// @param token The renewed token. +/// @param errorInfo Error code. +typedef void (^ZIMTokenRenewedCallback)(NSString *token, ZIMError *errorInfo); + +typedef void (^ZIMUserNameUpdatedCallback)(NSString *userName, ZIMError *errorInfo); + +typedef void (^ZIMUserAvatarUrlUpdatedCallback)(NSString *userAvatarUrl, ZIMError *errorInfo); + +typedef void (^ZIMUserExtendedDataUpdatedCallback)(NSString *extendedData, ZIMError *errorInfo); + +/// Supported version: 2.0.0 and above. +/// +/// Detailed description: Callback after developer queries user information. +/// +/// Use cases: The developer can check whether the login succeeded by using [errorCode] in this callback. +/// +/// Notification timing: This callback is triggered when a developer invokes the [queryUserInfo] interface. +/// +/// Related interface: Run the queryUserInfo command to query information. +/// +/// @param errorInfo Error code. +/// @param userList List of the userInfo queried. +/// @param errorUserList Failed to query the userInfo list. +typedef void (^ZIMUsersInfoQueriedCallback)(NSArray *userList, + NSArray *errorUserList, + ZIMError *errorInfo); + +//修改推送行为回调 +typedef void (^ZIMUserOfflinePushRuleUpdatedCallback)(ZIMUserOfflinePushRule *offlinePushRule, + ZIMError *errorInfo); + +//查询本人用户信息回调 +typedef void (^ZIMSelfUserInfoQueriedCallback)(ZIMSelfUserInfo *selfUserInfo, ZIMError *errorInfo); + +// MARK: Conversation + +typedef void (^ZIMConversationQueriedCallback)(ZIMConversation *conversation, ZIMError *errorInfo); + +/// Available since: 2.0.0 and above. +/// +/// Description: After the session list is queried, the callback is used to return the query result. +/// +/// Use cases: The logic after the session list query can be done in this callback. +/// +/// When to call /Trigger: Description Triggered when the session list is queried. +/// +/// Related APIs: [queryConversationList]. +/// +/// @param conversationList Session list. +/// @param errorInfo Error code for querying the conversation list. 0 means querying the session list succeeds, non-0 means querying the session list fails. If there is a failure to query the call list, the developer should check the official website error code document to query the solution. +typedef void (^ZIMConversationListQueriedCallback)(NSArray *conversationList, + ZIMError *errorInfo); + +typedef void (^ZIMConversationTotalUnreadMessageCountQueriedCallback)( + unsigned int unreadMessageCount, ZIMError *errorInfo); +/// Available since: 2.0.0 and above. +/// +/// Description: After a session is deleted, the deletion result is returned using this callback. +/// +/// Use cases: You can do the deleted session logic in this callback. +/// +/// When to call /Trigger: Description Triggered after the session was deleted. +/// +/// Related APIs: [[deleteConversation]. +/// +/// @param errorInfo Delete the error code of the call. 0 means that the session was deleted successfully, non-0 means that the session was deleted failed. If the deletion of the call fails, the developer should check the official website error code document to query the solution. +/// @param conversationID Conversation ID. +/// @param conversationType Conversation type. +typedef void (^ZIMConversationDeletedCallback)(NSString *conversationID, + ZIMConversationType conversationType, + ZIMError *errorInfo); + +typedef void (^ZIMConversationsAllDeletedCallback)(ZIMError *errorInfo); + +/// Available since: 2.0.0 and above. +/// +/// Description: This callback returns the result of clearing a session if the session is not read. +/// +/// Use cases: You can do clear unread logic in this callback. +/// +/// When to call /Trigger: Triggered after clearing session unread. +/// +/// Related APIs: [clearConversationUnreadMessageCount]. +/// +/// @param errorInfo Clears the error code for the number of unread calls. 0 means clearing the unread number of the session successfully, non-0 means the clearing the unread number of the session failed. If there is a failure to clear the number of unread calls, the developer should check the official website error code document to query the solution. +/// @param conversationID Conversation ID. +/// @param conversationType Conversation type. +typedef void (^ZIMConversationUnreadMessageCountClearedCallback)( + NSString *conversationID, ZIMConversationType conversationType, ZIMError *errorInfo); + +typedef void (^ZIMConversationTotalUnreadMessageCountClearedCallback)(ZIMError *errorInfo); + +/// Available since: 2.0.0 and above. +/// +/// Description: This callback returns the result of group notification after the group notification status is set. +/// +/// Use cases: You can do the logic after setting the group notification status in this callback. +/// +/// When to call /Trigger: Triggered when the group notification status is set. +/// +/// Related APIs: [setConversationNotificationStatus]. +/// +/// @param conversationID conversationID. +/// @param errorInfo Set the error code for the callback notification state. 0 means setting the call back notification state successfully, non-0 means setting the call back notification state fails. If there is a failure to set the callback notification status, the developer should check the official website error code document to query the solution. +/// @param conversationType Conversation type. +typedef void (^ZIMConversationNotificationStatusSetCallback)(NSString *conversationID, + ZIMConversationType conversationType, + ZIMError *errorInfo); + +/// Available since: 2.5.0 and above. +/// +/// Description: Set the callback interface for the read receipt conversation. +/// +/// Use cases: Developers can judge whether the sending is successful through [errorCode] in the callback. +/// +/// Trigger: When the developer calls the [sendConversationMessageReceiptRead] interface, this callback will be triggered. +/// +/// Related APIs: The success or failure of the conversation read result set by [sendConversationMessageReceiptRead] will be notified through this callback. +/// +/// @param conversationID ConversationID. +/// @param conversationType Conversation Type. +/// @param errorInfo Set the error code of the receipt conversation read. 0 indicates that the setting is successful, and non-zero indicates that the setting fails. If the setting fails, the developer should check the [official website error code document](https://doc-zh.zego.im/article/11605) for solutions. +typedef void (^ZIMConversationMessageReceiptReadSentCallback)(NSString *conversationID, + ZIMConversationType conversationType, + ZIMError *errorInfo); + +typedef void (^ZIMConversationPinnedStateUpdatedCallback)(NSString *conversationID, + ZIMConversationType conversationType, + ZIMError *errorInfo); + +typedef void (^ZIMConversationPinnedListQueriedCallback)( + NSArray *conversationList, ZIMError *errorInfo); + +typedef void (^ZIMConversationDraftSetCallback)(NSString *conversationID, + ZIMConversationType conversationType, + ZIMError *errorInfo); + +typedef void (^ZIMConversationMarkSetCallback)( + NSArray *failedConversationInfos, ZIMError *errorInfo); +/// Supported Versions: 2.4.0 and above. + +/// Detail description: A callback for the result of inserting a local message. + +/// Business scenario: The developer can use the [errorCode] in the callback to determine whether the insertion is successful. + +/// Notification timing: This callback is triggered when the developer calls the [insertMessageToLocalDB] interface. + +/// Related interfaces: Insert local messages through [insertMessageToLocalDB], and the success or failure will be notified through this callback. +/// @param Message object. +/// @param errorInfo Insert the error code for the local message. 0 means inserting the message successfully, non-0 means inserting the message failed. If there is a failure to insert the message, the developer should check the official website error code document to query the solution. +typedef void (^ZIMMessageInsertedCallback)(ZIMMessage *message, ZIMError *errorInfo); + +/// Callback of the result of sending the message. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: This callback is triggered when the developer calls the [sendPeerMessage] and [sendRoomMessage] interfaces. The developer can check whether the callback is sent successfully by [errorCode] in the callback. +/// +/// @param message The sent message object, from which parameters such as messageID can be obtained. If the sending fails, the messageID parameter in the message will be an empty string. +/// @param errorInfo Error information. +typedef void (^ZIMMessageSentCallback)(ZIMMessage *message, ZIMError *errorInfo); + +/// The developer uses this callback to get a list of queried messages, which can be used to display historical messages. +/// +/// @param messageList The message list of the query result. +/// @param errorInfo Error information. +typedef void (^ZIMMessageQueriedCallback)(NSString *conversationID, + ZIMConversationType conversationType, + NSArray *messageList, ZIMError *errorInfo); + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: After the message is deleted, the result of message deletion is returned through this callback. +/// +/// Business scenario: The developer can judge whether the deletion is successful through the [errorCode] in the callback. +/// +/// Notification timing: Triggered after calling the delete message interface [deleteMessage]. +/// +/// Related interface: [deleteMessage]. +/// +/// @param conversationID Conversation ID. +/// @param conversationType Conversation Type. +/// @param errorInfo Delete the error code of the message. 0 means the deletion of the message succeeded, non-0 means the deletion of the message failed. If the deletion message fails, the developer should check the official website error code document to query the solution. +typedef void (^ZIMMessageDeletedCallback)(NSString *conversationID, + ZIMConversationType conversationType, + ZIMError *errorInfo); + +typedef void (^ZIMConversationMessagesAllDeletedCallback)(ZIMError *errorInfo); + +/// Available sinces: 2.5.0 and above. +/// +/// Detail description: Consequential recap of withdrawal news. +/// +/// Use cases: Developer allowed through this process during response [errorCode] Successful delivery. +/// +/// Trigger: For our developers [revokeMessage] When contacting, this revoke will be sent. +/// +/// Related APIs: If the revoked message is the latest message of the session, the [conversationChanged] callback will be triggered, and if the message is unread, the [conversationTotalUnreadMessageCountUpdated] callback will be triggered. +/// @param message Message object. +/// @param errorInfo Retraction notice. 0 representative withdraw successfully, non 0 withdraw unsuccessful. When the withdrawal fails, the developer responds to the [official website](https://doc-zh.zego.im/article/11605) Review the solution. +typedef void (^ZIMMessageRevokedCallback)(ZIMMessage *message, ZIMError *errorInfo); + +typedef void (^ZIMMessageLocalExtendedDataUpdatedCallback)(ZIMMessage *message, + ZIMError *errorInfo); + +/// Available since: 2.5.0 and above. +/// +/// Description: Set the callback interface for the read receipt message. +/// +/// Use cases: Developers can judge whether the setting is successful through [errorCode] in the callback. +/// +/// Trigger: When the developer calls the [sendMessageReceiptsRead] interface, this callback will be triggered. +/// +/// Related APIs: The success or failure of the message read result set by [sendMessageReceiptsRead] will be notified through this callback. +/// @param conversationID ConversationID. +/// @param conversationType Conversation Type. +/// @param errorMessageIDs Set the message ID corresponding to the message receipt failure. +/// @param errorInfo Set the error code of the receipt message read. 0 indicates that the setting is successful, and non-zero indicates that the setting fails. If the setting fails, the developer should check the [official website error code document](https://doc-zh.zego.im/article/11605) for solutions. +typedef void (^ZIMMessageReceiptsReadSentCallback)(NSString *conversationID, + ZIMConversationType conversationType, + NSArray *errorMessageIDs, + ZIMError *errorInfo); + +/// Available since: 2.5.0 and above. +/// +/// Description: Callback interface for querying receipt message information. +/// +/// Use cases: Developers can judge whether the sending is successful through [errorCode] in the callback. +/// +/// Trigger: When the developer calls the [queryMessageReceiptsInfo] interface, this callback will be triggered. +/// +/// Related APIs: through [queryMessageReceiptsInfo], whether the result of querying the receipt information is successful or not will be notified through this callback. +/// @param infos Query receipt information. +/// @param errorMessageIDs Query the wrong message ID of the message receipt information. +/// @param errorInfo Query the error code of the message receipt. 0 means the query is successful, and non-zero means the query failed. If the query fails, the developer should check the [official website error code document](https://doc-zh.zego.im/article/11605) for solutions. +typedef void (^ZIMMessageReceiptsInfoQueriedCallback)(NSArray *infos, + NSArray *errorMessageIDs, + ZIMError *errorInfo); + +/// Supported versions: 2.1.0 and above. +/// +/// Detail description: The progress callback for downloading media messages. +/// +/// Business scenario: The developer can obtain the download progress of the media message through this callback. +/// +/// Notification timing: When the developer calls the [downloadMediaFile] interface, this callback will be triggered, and will be triggered multiple times during the download process. +/// +/// Related APIs: Through [downloadMediaFile], the download progress will be notified through this callback. +typedef void (^ZIMMediaDownloadedCallback)(ZIMMediaMessage *message, ZIMError *errorInfo); + +/// Supported versions: 2.1.0 and above. +/// +/// Detail description: The result callback of media message download. +/// +/// Business scenario: The developer can use the [errorCode] in the callback to determine whether the download is successful. +/// +/// Notification timing: This callback is triggered when the developer calls the [downloadMediaFile] interface. +/// +/// Related APIs: Download media messages through [downloadMediaFile], and it will be notified through this callback whether it is successful or not. +typedef void (^ZIMMediaDownloadingProgress)(ZIMMediaMessage *message, + unsigned long long currentFileSize, + unsigned long long totalFileSize); + +typedef void (^ZIMMessagesSearchedCallback)(NSString *conversationID, + ZIMConversationType conversationType, + NSArray *messageList, + ZIMMessage *_Nullable nextMessage, ZIMError *errorInfo); + +typedef void (^ZIMMessagesGlobalSearchedCallback)(NSArray *messageList, + ZIMMessage *_Nullable nextMessage, + ZIMError *errorInfo); + +typedef void (^ZIMConversationsSearchedCallback)( + NSArray *conversationSearchInfoList, unsigned int nextFlag, + ZIMError *errorInfo); + +typedef void (^ZIMMessageReactionDeletedCallback)(ZIMMessageReaction *reaction, + ZIMError *errorInfo); +typedef void (^ZIMMessageReactionAddedCallback)(ZIMMessageReaction *reaction, ZIMError *errorInfo); +typedef void (^ZIMMessageReactionUserListQueriedCallback)( + ZIMMessage *message, NSArray *userList, NSString *reactionType, + long long nextFlag, int totalCount, ZIMError *errorInfo); + +typedef void (^ZIMCombineMessageDetailQueriedCallback)(ZIMCombineMessage *message, + ZIMError *errorInfo); + +typedef void (^ZIMMessageRepliedListQueriedCallback)(NSArray *messageList, + long long nextFlag, + ZIMMessageRootRepliedInfo *rootRepliedInfo, + ZIMError *errorInfo); + +// MARK: Room + +/// Callback of the result of creating the room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: The callback of the result of creating the room. +/// +/// Related APIs: Create a room through [createRoom], and the result of the creation will be notified through this callback. +/// +/// @param roomInfo Details of the room created. If the creation fails, the roomID parameter in roomInfo will be an empty string. +/// @param errorInfo Error information. +typedef void (^ZIMRoomCreatedCallback)(ZIMRoomFullInfo *roomInfo, ZIMError *errorInfo); + +/// Callback of the result of joining the room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: The callback of the result of joining the room. +/// +/// Related APIs: Join the room through [joinRoom], and the result of joining will be notified through this callback. +/// +/// @param roomInfo Details of the room joined. If the join fails, the roomID parameter in roomInfo will be an empty string. +/// @param errorInfo Error information. +typedef void (^ZIMRoomJoinedCallback)(ZIMRoomFullInfo *roomInfo, ZIMError *errorInfo); + +/// Callback of the result of entering the room. +/// +/// Available since: 2.1.0 or above. +/// +/// Description: The callback of the result of entering the room. +/// +/// Related APIs: Join the room through [enterRoom], and the result of joining will be notified through this callback. +/// +/// @param roomInfo Details of the room joined. If the join fails, the roomID parameter in roomInfo will be an empty string. +/// @param errorInfo Error information. +typedef void (^ZIMRoomEnteredCallback)(ZIMRoomFullInfo *roomInfo, ZIMError *errorInfo); + +typedef void (^ZIMRoomSwitchedCallback)(ZIMRoomFullInfo *roomInfo, ZIMError *errorInfo); + +/// Callback of the result of leaving the room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: The callback of the result of leaving the room. +/// +/// Related APIs: Leave the room through [leaveRoom], and the result of leaving will be notified through this callback. +/// +/// @param errorInfo Error information. +typedef void (^ZIMRoomLeftCallback)(NSString *roomID, ZIMError *errorInfo); + +typedef void (^ZIMRoomAllLeftCallback)(NSArray *roomIDs, ZIMError *errorInfo); + +/// Callback of the result of querying the room members list. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: Callback for the result of querying the room member list. +/// +/// Related APIs: Query the list of room members through [queryRoomMember], and the query result will be notified through this callback. +/// +/// @param memberList List of members in the room. +/// @param nextFlag The flag of the paging query. If this field is an empty string, the query has been completed. Otherwise, you need to set this value to the "nextFlag" field of ZIMRoomMemberQueryConfig for the next page query. +/// @param errorInfo Error information. +typedef void (^ZIMRoomMemberQueriedCallback)(NSString *roomID, NSArray *memberList, + NSString *nextFlag, ZIMError *errorInfo); + +typedef void (^ZIMRoomMembersQueriedCallback)(NSString *roomID, + NSArray *memberList, + NSArray *errorUserList, + ZIMError *errorInfo); + +/// Callback of the result of querying the online members count in the room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: Callback of the result of querying the online members count in the room. +/// +/// Related APIs: You can check the online number of people in the room through [queryRoomOnlineMemberCount]. +/// +/// @param count The number of online members of the room. +/// @param errorInfo Error information. +typedef void (^ZIMRoomOnlineMemberCountQueriedCallback)(NSString *roomID, unsigned int count, + ZIMError *errorInfo); + +/// Callback of the result of the room attributes operation. +/// +/// Available since: 1.3.0. +/// +/// Description: The callback of the result of room attributes operation. +/// +/// @param errorInfo Error information. +typedef void (^ZIMRoomAttributesOperatedCallback)(NSString *roomID, NSArray *errorKeys, + ZIMError *errorInfo); + +/// Callback of the result of the room attributes operation. +/// +/// Available since: 1.3.0. +/// +/// Description: The callback of the result of room attributes operation. +/// +/// @param errorInfo Error information. +typedef void (^ZIMRoomAttributesBatchOperatedCallback)(NSString *roomID, ZIMError *errorInfo); + +/// Callback of the result of the room attributes quering. +/// +/// Available since: 1.3.0. +/// +/// Description: The callback of the result of room attributes operation. +/// +/// @param roomAttributes Room attributes. +/// @param errorInfo Error information. +typedef void (^ZIMRoomAttributesQueriedCallback)( + NSString *roomID, NSDictionary *roomAttributes, ZIMError *errorInfo); + +/// Supported version: 2.4.0. +/// +/// Detail description: Returns the result of the room user attribute operation. +/// +/// Business scenario: After the custom attribute operation is performed, the success or failure can be known through this callback. +/// +/// Notification timing: The result is returned after the room user attribute operation is completed. +/// +/// Related interface: [setRoomMembersAttributes], add or modify room user attributes. +/// @param roomID Room ID. +/// @param infos The attributes information of the room member after the operation. +/// @param errorUserList List of UserIDs with errors. +/// @param errorInfo Error code for room user attribute operation. 0 means the room user attribute operation is successful, non-0 means the room user attribute operation fails. If the room user attribute operation fails, the developer should check the official website error code document to query the solution. +typedef void (^ZIMRoomMembersAttributesOperatedCallback)( + NSString *roomID, NSArray *infos, + NSArray *errorUserList, ZIMError *errorInfo); + +/// Supported version: 2.4.0. +/// +/// Detailed description: According to the UserID list, batch query results of room user attributes are returned. +/// +/// Business scenario: After querying room user attributes, the success or failure and query results can be known through this callback. +/// +/// Notification timing: The result will be returned after the room user attribute query is completed. +/// +/// Related interface: [queryRoomMembersAttributes], query room user attributes. +/// @param roomID Room ID. +/// @param infos List of room user attributes. +/// @param errorInfo Error code for room user attribute operation. 0 means the room user attribute operation is successful, non-0 means the room user attribute operation fails. If the room user attribute operation fails, the developer should check the official website error code document to query the solution. +typedef void (^ZIMRoomMembersAttributesQueriedCallback)( + NSString *roomID, NSArray *infos, ZIMError *errorInfo); + +/// Supported version: 2.4.0. +/// +/// Detail description: Returns the result of paging query of all user attribute lists in the room. +/// +/// Business scenario: After querying room user attributes, the success or failure and query results can be known through this callback. +/// +/// Notification timing: The result will be returned after the room user attribute query is completed. +/// +/// Related interface: [queryRoomMemberAttributesList], query room user attributes. +/// @param roomID Room ID. +/// @param infos List of room user attributes. +/// @param The anchor of the next paging query. If it is empty, it means that the query has been completed. +/// @param errorInfo Error code for room user attribute operation. 0 means the room user attribute operation is successful, non-0 means the room user attribute operation fails. If the room user attribute operation fails, the developer should check the official website error code document to query the solution. +typedef void (^ZIMRoomMemberAttributesListQueriedCallback)( + NSString *roomID, NSArray *infos, NSString *nextFlag, + ZIMError *errorInfo); +/// Description: Returns the result of the group creation operation. +/// +/// Use cases: After a group creation operation is performed, the success or failure can be determined by this callback. +/// +/// When to call /Trigger: The result is returned after the group creation operation is complete. +/// +/// Related API: [createGroup] : creates a group. +/// +/// @param groupInfo groupInfo. +/// @param userList user list. +/// @param errorUserList errorUserList. +/// @param errorInfo Error code for group creation. 0 means the group creation is successful, non-0 means the group creation fails. If there is a failure to create a group, the developer should check the official website error code document to query the solution. +typedef void (^ZIMGroupCreatedCallback)(ZIMGroupFullInfo *groupInfo, + NSArray *userList, + NSArray *errorUserList, + ZIMError *errorInfo); + +/// Description: Returns the result of the group dismiss operation. +/// +/// Use cases: After a group disband operation is performed, the success of the operation can be determined by the callback. +/// +/// When to call /Trigger: The result of the group disband operation is returned. +/// +/// Related API: [createGroup],creates a group. [dismissGroup],dismissGroup. +/// +/// @param errorInfo The error code for disbanding the group. 0 means that the group is successfully disbanded, and non-0 means that the group failed to be disbanded. If there is a failure to dissolve the group, the developer should check the official website error code document to find the solution. +/// @param groupID Group ID. +typedef void (^ZIMGroupDismissedCallback)(NSString *groupID, ZIMError *errorInfo); + +/// Description: Returns the result of the group join operation. +/// +/// Use cases: After a group join operation is performed, the success or failure can be determined by this callback. +/// +/// When to call /Trigger: The result of the group join operation is returned. +/// +/// Related API:[joinGroup] : joins a group. [leaveGroup], leave the group. +typedef void (^ZIMGroupJoinedCallback)(ZIMGroupFullInfo *groupInfo, ZIMError *errorInfo); + +/// Description: Returns the result of the group departure operation. +/// +/// Use cases: After a group exit operation is performed, the success or failure can be determined by the callback. +/// +/// When to call /Trigger: The result of the group departure operation is returned. +/// +/// Related API:[leaveGroup], leave the group. [joinGroup], enter the group. +typedef void (^ZIMGroupLeftCallback)(NSString *groupID, ZIMError *errorInfo); + +/// Description: Returns the result of inviting the user to join the group. +/// +/// Use cases: After a user is invited to a group, the success or failure can be determined by the callback. +/// +/// When to call /Trigger: Results are returned after the user is invited to the group. +/// +/// Related API:[inviteUsersIntoGroup] invites users to join the group. +typedef void (^ZIMGroupUsersInvitedCallback)(NSString *groupID, + NSArray *userList, + NSArray *errorUserList, + ZIMError *errorInfo); + +/// Description: Returns the result of the kick out group member operation. +/// +/// Use cases: After a group member is kicked out, the success or failure can be determined by the callback. +/// +/// When to call /Trigger: The result is returned after the group member is kicked out. +/// +/// Related API:[kickGroupMembers] Kick out group members. +typedef void (^ZIMGroupMemberKickedCallback)(NSString *groupID, + NSArray *kickedUserIDList, + NSArray *errorUserList, + ZIMError *errorInfo); + +/// Description: Returns the result of the group master transfer operation. +/// +/// Use cases: After a group master transfer operation is performed, the success of the operation can be determined by this callback. +/// +/// When to call /Trigger: The result of the group master transfer operation is returned. +/// +/// Related API:[transferGroupOwner], group master transfer. +typedef void (^ZIMGroupOwnerTransferredCallback)(NSString *groupID, NSString *toUserID, + ZIMError *errorInfo); + +/// Description: Return result of group name update operation. +/// +/// Use cases: After a group name update operation is performed, the success or failure can be determined by this callback. +/// +/// When to call /Trigger: The result of the group name update operation is returned. +/// +/// Related API:[updateGroupName], the group name is updated. +typedef void (^ZIMGroupNameUpdatedCallback)(NSString *groupID, NSString *groupName, + ZIMError *errorInfo); + +typedef void (^ZIMGroupAvatarUrlUpdatedCallback)(NSString *groupID, NSString *groupAvatarUrl, + ZIMError *errorInfo); + +typedef void (^ZIMGroupAliasUpdatedCallback)(NSString *groupID, NSString *groupAlias, + ZIMError *errorInfo); + +typedef void (^ZIMGroupMutedCallback)(NSString *groupID, BOOL isMute, ZIMGroupMuteInfo *info, + ZIMError *errorInfo); + +typedef void (^ZIMGroupMembersMutedCallback)(NSString *groupID, BOOL isMute, int duration, + NSArray *mutedMemberIDs, + NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMGroupMemberMutedListQueriedCallback)(NSString *groupID, + unsigned long long nextFlag, + NSArray *userList, + ZIMError *errorInfo); + +/// Description: Return result of group name update operation. +/// +/// Use cases: After a group name update operation is performed, the success or failure can be determined by this callback. +/// +/// When to call /Trigger: The result of the group name update operation is returned. +/// +/// Related API:[updateGroupName], the group name is updated. +typedef void (^ZIMGroupNoticeUpdatedCallback)(NSString *groupID, NSString *groupNotice, + ZIMError *errorInfo); + +/// Description: Returns the result of the group dismiss operation. +/// +/// Use cases: After a group disband operation is performed, the success of the operation can be determined by the callback. +/// +/// When to call /Trigger: The result of the group disband operation is returned. +/// +/// Related API: [createGroup],creates a group. [dismissGroup],dismissGroup. +typedef void (^ZIMGroupInfoQueriedCallback)(ZIMGroupFullInfo *groupInfo, ZIMError *errorInfo); + +/// Description: Returns the result of the group property operation. +/// +/// Use cases: This callback tells you whether a custom property operation is successful. +/// +/// When to call /Trigger: The result of the group property operation is returned. +/// +/// Related API: [setGroupAttributes], set the room properties. [deleteGroupAttributes], delete the room attribute. +typedef void (^ZIMGroupAttributesOperatedCallback)(NSString *groupID, + NSArray *errorKeys, + ZIMError *errorInfo); + +/// Description: Returns the result of group attribute query. +/// +/// Use cases: This callback is used to determine the success of a custom property query. +/// +/// When to call /Trigger: Group attribute query results are returned. +/// +/// Related API: [queryGroupAttributes], query room attributes. +typedef void (^ZIMGroupAttributesQueriedCallback)( + NSString *groupID, NSDictionary *groupAttributes, ZIMError *errorInfo); + +/// Description: Return of the result of the member role update operation. +/// +/// Use cases: After a member role update operation is performed, the success or failure can be determined by this callback. +/// +/// When to call /Trigger: The result of the member role update operation is returned. +/// +/// Related API:[setGroupMemberRole], the member role is updated. +typedef void (^ZIMGroupMemberRoleUpdatedCallback)(NSString *groupID, NSString *forUserID, + ZIMGroupMemberRole role, ZIMError *errorInfo); + +/// Description: Return result of group member nickname update operation. +/// +/// Use cases: After a group member nickname update operation is performed, the success or failure can be determined by this callback. +/// +/// When to call /Trigger: The result of the group member nickname update operation is returned. +/// +/// Related API:[setGroupMemberNickname], the nickname of the group member is updated. +typedef void (^ZIMGroupMemberNicknameUpdatedCallback)(NSString *groupID, NSString *forUserID, + NSString *nickname, ZIMError *errorInfo); + +/// Description: Return of group member query results. +/// +/// Use cases: After a group member query is performed, the success or failure can be determined by this callback. +/// +/// When to call /Trigger: Group member query results are returned. +/// +/// Related API:[queryGroupMemberInfo], queryGroupMemberInfo. +typedef void (^ZIMGroupMemberInfoQueriedCallback)(NSString *groupID, ZIMGroupMemberInfo *userInfo, + ZIMError *errorInfo); + +/// Description: Returns the group list query result. +/// +/// Use cases: The success of a group list query can be determined by this callback. +/// +/// When to call /Trigger: The result of the group list query is returned. +/// +/// Related API:[queryGroupList] to query the group list. +typedef void (^ZIMGroupListQueriedCallback)(NSArray *groupList, ZIMError *errorInfo); + +/// Description: Returns the result of querying the group member list. +/// +/// Use cases: After querying the group member list, you can use the callback to determine whether the query is successful. +/// +/// When to call /Trigger: The result is displayed after the group member list is queried. +/// +/// Related API:[queryGroupMemberList], query the group member list. +typedef void (^ZIMGroupMemberListQueriedCallback)(NSString *groupID, + NSArray *userList, + unsigned int nextFlag, ZIMError *errorInfo); + +typedef void (^ZIMGroupMemberCountQueriedCallback)(NSString *groupID, unsigned int count, + ZIMError *errorInfo); + +typedef void (^ZIMGroupMessageReceiptMemberListQueriedCallback)( + NSString *groupID, NSArray *userList, unsigned int nextFlag, + ZIMError *errorInfo); + +typedef void (^ZIMGroupsSearchedCallback)(NSArray *groupSearchInfoList, + unsigned int nextFlag, ZIMError *errorInfo); + +typedef void (^ZIMGroupMembersSearchedCallback)(NSString *groupID, + NSArray *userList, + unsigned int nextFlag, ZIMError *errorInfo); + +typedef void (^ZIMGroupJoinModeUpdatedCallback)(NSString *groupID, ZIMGroupJoinMode mode, + ZIMError *errorInfo); + +typedef void (^ZIMGroupInviteModeUpdatedCallback)(NSString *groupID, ZIMGroupInviteMode mode, + ZIMError *errorInfo); + +typedef void (^ZIMGroupBeInviteModeUpdatedCallback)(NSString *groupID, ZIMGroupBeInviteMode mode, + ZIMError *errorInfo); + +typedef void (^ZIMGroupJoinApplicationSentCallback)(NSString *groupID, ZIMError *errorInfo); + +typedef void (^ZIMGroupJoinApplicationAcceptedCallback)(NSString *groupID, NSString *userID, + ZIMError *errorInfo); + +typedef void (^ZIMGroupJoinApplicationRejectedCallback)(NSString *groupID, NSString *userID, + ZIMError *errorInfo); + +typedef void (^ZIMGroupInviteApplicationsSentCallback)(NSString *groupID, + NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMGroupInviteApplicationAcceptedCallback)(ZIMGroupFullInfo *groupInfo, + NSString *inviterUserID, + ZIMError *errorInfo); + +typedef void (^ZIMGroupInviteApplicationRejectedCallback)(NSString *groupID, + NSString *inviterUserID, + ZIMError *errorInfo); + +typedef void (^ZIMGroupApplicationListQueriedCallback)( + NSArray *applicationList, unsigned int nextFlag, + ZIMError *errorInfo); + +/// Supported version: 2.0.0. +/// +/// Detail description: Operation callback for sending a call invitation. +/// +/// Business scenario: After the operation of sending a call invitation is performed, the success or failure can be known through this callback. +/// +/// Notification timing: The result is returned after the operation of sending the call invitation is completed. +/// +/// Related interface: [callInvite], send a call invitation. +typedef void (^ZIMCallInvitationSentCallback)(NSString *callID, ZIMCallInvitationSentInfo *info, + ZIMError *errorInfo); + +/// Callback result of inviting the current call. +typedef void (^ZIMCallingInvitationSentCallback)(NSString *callID, + ZIMCallingInvitationSentInfo *info, + ZIMError *errorInfo); + +/// Supported version: 2.0.0. +/// +/// Detail description: The operation callback for canceling the call invitation. +/// +/// Business scenario: After canceling the call invitation operation, the success or failure can be known through this callback. +/// +/// Notification timing: The result is returned after the cancel call invitation operation is completed. +/// +/// Related interface: [callCancel], cancel the call invitation. +typedef void (^ZIMCallCancelSentCallback)(NSString *callID, NSArray *errorInvitees, + ZIMError *errorInfo); + +/// Supported version: 2.0.0. +/// +/// Detail description: The operation callback for accepting the call invitation. +/// +/// Business scenario: After accepting the call invitation operation, the success or failure can be known through this callback. +/// +/// Notification timing: The result will be returned after accepting the call invitation operation. +/// +/// Related interface: [callAccept], accept the call invitation. +typedef void (^ZIMCallAcceptanceSentCallback)(NSString *callID, ZIMError *errorInfo); + +/// Supported version: 2.0.0. +/// +/// Detail description: Operation callback for rejecting the call invitation. +/// +/// Business scenario: After the operation of rejecting the call invitation is performed, the success or failure can be known through this callback. +/// +/// Notification timing: The result is returned after the operation of rejecting the call invitation is completed. +/// +/// Related interface: [callReject], rejects the call invitation. +typedef void (^ZIMCallRejectionSentCallback)(NSString *callID, ZIMError *errorInfo); + +typedef void (^ZIMCallJoinSentCallback)(NSString *callID, ZIMCallJoinSentInfo *info, + ZIMError *errorInfo); + +/// Quit the callback closure of the call invitation operation. +typedef void (^ZIMCallQuitSentCallback)(NSString *callID, ZIMCallQuitSentInfo *info, + ZIMError *errorInfo); + +/// Result callback of ending the call invitation. +typedef void (^ZIMCallEndSentCallback)(NSString *callID, ZIMCallEndedSentInfo *info, + ZIMError *errorInfo); + +typedef void (^ZIMCallInvitationListQueriedCallback)(NSArray *callList, + long long nextFlag, ZIMError *errorInfo); + +/// Result Callback of querying the call list. +typedef void (^ZIMBlacklistUsersAddedCallback)(NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMBlacklistUsersRemovedCallback)(NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMBlacklistQueriedCallback)(NSArray *blacklist, + unsigned int nextFlag, ZIMError *errorInfo); + +typedef void (^ZIMBlacklistCheckedCallback)(BOOL isUserInBlacklist, ZIMError *errorInfo); + +typedef void (^ZIMMessageImportedCallback)(ZIMError *errorInfo); + +typedef void (^ZIMMessageImportingProgress)(unsigned long long importedMessageCount, + unsigned long long totalMessageCount); + +typedef void (^ZIMMessageExportedCallback)(ZIMError *errorInfo); + +typedef void (^ZIMMessageExportingProgress)(unsigned long long exportedMessageCount, + unsigned long long totalMessageCount); + +typedef void (^ZIMFileCacheClearedCallback)(ZIMError *errorInfo); + +typedef void (^ZIMFileCacheQueriedCallback)(ZIMFileCacheInfo *fileCacheInfo, ZIMError *errorInfo); +typedef void (^ZIMFriendApplicationListQueriedCallback)( + NSArray *applicationList, unsigned int nextFlag, + ZIMError *errorInfo); + +typedef void (^ZIMFriendListQueriedCallback)(NSArray *friendList, + unsigned int nextFlag, ZIMError *errorInfo); + +typedef void (^ZIMFriendApplicationRejectedCallback)(ZIMUserInfo *userInfo, ZIMError *errorInfo); + +typedef void (^ZIMFriendApplicationAcceptedCallback)(ZIMFriendInfo *friendInfo, + ZIMError *errorInfo); + +typedef void (^ZIMFriendsInfoQueriedCallback)(NSArray *friendInfos, + NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMFriendAttributesUpdatedCallback)(ZIMFriendInfo *friendInfo, ZIMError *errorInfo); + +typedef void (^ZIMFriendAliasUpdatedCallback)(ZIMFriendInfo *friendInfo, ZIMError *errorInfo); + +typedef void (^ZIMFriendsRelationCheckedCallback)(NSArray *relationInfos, + NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMFriendsDeletedCallback)(NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMFriendApplicationSentCallback)(ZIMFriendApplicationInfo *applicationInfo, + ZIMError *errorInfo); + +typedef void (^ZIMFriendAddedCallback)(ZIMFriendInfo *friendInfo, ZIMError *errorInfo); + +typedef void (^ZIMFriendsSearchedCallback)(NSArray *friendInfos, + unsigned int nextFlag, ZIMError *errorInfo); + +typedef void (^ZIMUsersStatusQueriedCallback)(NSArray *userStatusList, + NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMUsersStatusSubscribedCallback)(NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMUsersStatusUnsubscribedCallback)(NSArray *errorUserList, + ZIMError *errorInfo); + +typedef void (^ZIMSubscribedUserStatusListQueriedCallback)( + NSArray *userStatusSubscriptionList, ZIMError *errorInfo); + +NS_ASSUME_NONNULL_END diff --git a/Libs/ZIM.framework/Headers/ZIMErrorCode.h b/Libs/ZIM.framework/Headers/ZIMErrorCode.h new file mode 100644 index 0000000..b8bef1e --- /dev/null +++ b/Libs/ZIM.framework/Headers/ZIMErrorCode.h @@ -0,0 +1,196 @@ +// +// ZIMErrorCode.h +// ZIM +// +// Copyright © 2021 Zego. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// The define of error code. +/// +/// Description: Developers can find the details of the error code in the developer documentation website according to the error code. +/// +/// Use cases: It can be used to collect and record errors in the process of using the SDK. +/// +typedef NS_ENUM(NSUInteger, ZIMErrorCode) { + ZIMErrorCodeSuccess = 0, + ZIMErrorCodeFailed = 1, + + ZIMErrorCodeCommonModuleParamsInvalid = 6000001, + ZIMErrorCodeCommonModuleEngineNotInit = 6000002, + ZIMErrorCodeCommonModuleInvalidAppID = 6000003, + ZIMErrorCodeCommonModuleTriggerSDKFrequencyLimit = 6000004, + ZIMErrorCodeCommonModuleTriggerServerFrequencyLimit = 6000005, + ZIMErrorCodeCommonModuleSwitchServerError = 6000006, + ZIMErrorCodeCommonModuleIMServerError = 6000007, + ZIMErrorCodeCommonModuleIMDataBaseError = 6000008, + ZIMErrorCodeCommonModuleImServerDisconnect = 6000009, + ZIMErrorCodeCommonModuleUploadLogError = 6000010, + ZIMErrorCodeCommonModuleUserIsNotExist = 6000011, + ZIMErrorCodeCommonModuleUserInfoQueriedLimit = 6000012, + ZIMErrorCodeCommonModuleUnsupportedRequest = 6000013, + ZIMErrorCodeCommonModuleExceedDAULimit = 6000015, + ZIMErrorCodeCommonModuleExceedMAULimit = 6000016, + + ZIMErrorCodeNetworkModuleCommonError = 6000101, + ZIMErrorCodeNetworkModuleServerError = 6000102, + ZIMErrorCodeNetworkModuleTokenInvalid = 6000103, + ZIMErrorCodeNetworkModuleNetworkError = 6000104, + ZIMErrorCodeNetworkModuleRequestTimeout = 6000105, + ZIMErrorCodeNetworkModuleTokenExpired = 6000106, + ZIMErrorCodeNetworkModuleTokenVersionError = 6000107, + ZIMErrorCodeNetworkModuleTokenTimeIsTooShort = 6000108, + ZIMErrorCodeNetworkModuleUserHasAlreadyLogged = 6000111, + ZIMErrorCodeNetworkModuleUserIsNotLogged = 6000121, + ZIMErrorCodeNetworkModuleUserHasAlreadyLoggedOut = 6000122, + ZIMErrorCodeNetworkModuleUserOffline = 6000123, + ZIMErrorCodeNetworkModuleUserIDError = 6000124, + + ZIMErrorCodeMessageModuleCommonError = 6000201, + ZIMErrorCodeMessageModuleServerError = 6000202, + ZIMErrorCodeMessageModuleSendMessageFailed = 6000203, + ZIMErrorCodeMessageModuleTargetDoseNotExist = 6000204, + ZIMErrorCodeMessageModuleFileError = 6000210, + ZIMErrorCodeMessageModuleFileNotExist = 6000211, + ZIMErrorCodeMessageModuleFileServerError = 6000212, + ZIMErrorCodeMessageModuleFileTypeUnsupported = 6000213, + ZIMErrorCodeMessageModuleFileSizeInvalid = 6000214, + ZIMErrorCodeMessageModuleFileDurationInvalid = 6000215, + ZIMErrorCodeMessageModuleFilePermissionDenied = 6000216, + ZIMErrorCodeMessageModuleFileDownloadFailed = 6000217, + ZIMErrorCodeMessageModuleFileDownloadLimit = 6000218, + ZIMErrorCodeMessageModuleFileDownloadUrlNotFound = 6000219, + ZIMErrorCodeMessageModuleFileDownloadHttpRequestServerError = 6000220, + ZIMErrorCodeMessageModuleAuditRejected = 6000221, + ZIMErrorCodeMessageModuleAuditFailed = 6000222, + ZIMErrorCodeMessageModuleAuditCustomSentRejected = 6000230, + ZIMErrorCodeMessageModuleMuted = 6000231, + ZIMErrorCodeMessageModuleCacheFileOpenFailed = 6000240, + ZIMErrorCodeMessageModuleCacheFileExportOrImportIsInProgressCurrently = 6000241, + ZIMErrorCodeMessageModuleCacheFileOnlyCanImportCacheOfOneself = 6000242, + ZIMErrorCodeMessageModuleCacheFileExportFailed = 6000243, + ZIMErrorCodeMessageModuleCacheFileImportFailed = 6000244, + ZimErrorCodeMessageModuleCacheFileJsonParseFailed = 6000245, + ZIMErrorCodeMessageModuleCallError = 6000270, + ZIMErrorCodeMessageModuleCancelCallError = 6000271, + ZIMErrorCodeMessageModuleCallServerError = 6000272, + ZIMErrorCodeMessageModuleIsNotInvitor = 6000273, + ZIMErrorCodeMessageModuleIsNotInvitee = 6000274, + ZIMErrorCodeMessageModuleCallAlreadyExists = 6000275, + ZIMErrorCodeMessageModuleCallDoseNotExist = 6000276, + ZIMErrorCodeMessageModuleReceiptReadError = 6000277, + ZIMErrorCodeMessageModuleMessageExceedsRevokeTime = 6000278, + ZIMErrorCodeMessageModuleMessageHasBeenRevoked = 6000279, + ZIMErrorCodeMessageModuleMessageReactionTypeExisted = 6000280, + ZIMErrorCodeMessageModuleCallInviteUserDoesNotExist = 6000281, + ZIMErrorCodeMessageModuleMessageReceiptLimit = 6000282, + ZIMErrorCodeMessageModuleUserAlreadyInTheCall = 6000283, + ZIMErrorCodeMessageModuleSenderInBlacklist = 6000284, + + ZIMErrorCodeRoomModuleCommonError = 6000301, + ZIMErrorCodeRoomModuleServerError = 6000302, + ZIMErrorCodeRoomModuleCreateRoomError = 6000303, + ZIMErrorCodeRoomModuleJoinRoomError = 6000304, + ZIMErrorCodeRoomModuleLeaveRoomError = 6000306, + ZIMErrorCodeRoomModuleRoomMemberQueryFailed = 6000310, + ZIMErrorCodeRoomModuleRoomMemberQueryFailedCompletely = 6000311, + ZIMErrorCodeRoomModuleUserIsAlreadyInTheRoom = 6000320, + ZIMErrorCodeRoomModuleUserIsNotInTheRoom = 6000321, + ZIMErrorCodeRoomModuleTheRoomDoseNotExist = 6000322, + ZIMErrorCodeRoomModuleTheRoomAlreadyExists = 6000323, + ZIMErrorCodeRoomModuleTheNumberOfExistingRoomsHasReachedLimit = 6000324, + ZIMErrorCodeRoomModuleTheNumberOfJoinedRoomsHasReachedLimit = 6000325, + ZIMErrorCodeRoomModuleTheRoomIsConnecting = 6000326, + ZIMErrorCodeRoomModuleRoomAttributesCommonError = 6000330, + ZIMErrorCodeRoomModuleRoomAttributesOperationFailedCompletely = 6000331, + ZIMErrorCodeRoomModuleRoomAttributesOperationFailedPartly = 6000332, + ZIMErrorCodeRoomModuleRoomAttributesQueryFailed = 6000333, + ZIMErrorCodeRoomModuleTheNumberOfRoomAttributesExceedsLimit = 6000334, + ZIMErrorCodeRoomModuleTheLengthOfRoomAttributeKeyExceedsLimit = 6000335, + ZIMErrorCodeRoomModuleTheLengthOfRoomAttributeValueExceedsLimit = 6000336, + ZIMErrorCodeRoomModuleTheTotalLengthOfRoomAttributesValueExceedsLimit = 6000337, + ZIMErrorCodeRoomModuleRoomMemberAttributesCommonError = 6000350, + ZIMErrorCodeRoomModuleTheTotalLengthOfRoomMemberAttributesExceedsLimit = 6000351, + ZIMErrorCodeRoomModuleTheLengthOfRoomMemberAttributesKeyExceedsLimit = 6000352, + ZIMErrorCodeRoomModuleTheLengthOfRoomMemberAttributesValueExceedsLimit = 6000353, + ZIMErrorCodeRoomModuleTheMemberNumberOfRoomMemberAttributesExceedsLimit = 6000357, + ZIMErrorCodeZPNSModulePushIDInvalid = 6000401, + + ZIMErrorCodeGroupModuleCommonError = 6000501, + ZIMErrorCodeGroupModuleServerError = 6000502, + ZIMErrorCodeGroupModuleCreateGroupError = 6000503, + ZIMErrorCodeGroupModuleDismissGroupError = 6000504, + ZIMErrorCodeGroupModuleJoinGroupError = 6000505, + ZIMErrorCodeGroupModuleLeaveGroupError = 6000506, + ZIMErrorCodeGroupModuleKickoutGroupMemberError = 6000507, + ZIMErrorCodeGroupModuleInviteUserIntoGroupError = 6000508, + ZIMErrorCodeGroupModuleTransferOwnerError = 6000509, + ZIMErrorCodeGroupModuleUpdateGroupInfoError = 6000510, + ZIMErrorCodeGroupModuleQueryGroupInfoError = 6000511, + ZIMErrorCodeGroupModuleGroupAttributesOperationFailed = 6000512, + ZIMErrorCodeGroupModuleGroupAttributesQueryFailed = 6000513, + ZIMErrorCodeGroupModuleUpdateGroupMemberInfoError = 6000514, + ZIMErrorCodeGroupModuleQueryGroupMemberInfoError = 6000515, + ZIMErrorCodeGroupModuleQueryGroupListError = 6000516, + ZIMErrorCodeGroupModuleQueryGroupMemberListError = 6000517, + ZIMErrorCodeGroupModuleUserIsNotInTheGroup = 6000521, + ZIMErrorCodeGroupModuleMemberIsAlreadyInTheGroup = 6000522, + ZIMErrorCodeGroupModuleGroupDoseNotExist = 6000523, + ZIMErrorCodeGroupModuleGroupAlreadyExists = 6000524, + ZIMErrorCodeGroupModuleGroupMemberHasReachedLimit = 6000525, + ZIMErrorCodeGroupModuleGroupAttributeDoseNotExist = 6000526, + ZIMErrorCodeGroupModuleGroupWithDismissed = 6000527, + ZIMErrorCodeGroupModuleTheNumberOfGroupAttributesExceedsLimit = 6000531, + ZIMErrorCodeGroupModuleTheLengthOfGroupAttributeKeyExceedsLimit = 6000532, + ZIMErrorCodeGroupModuleTheLengthOfGroupAttributeValueExceedsLimit = 6000533, + ZIMErrorCodeGroupModuleTheTotalLengthOfGroupAttributeValueExceedsLimit = 6000534, + ZIMErrorCodeGroupModuleNoCorrespondingOperationAuthority = 6000541, + ZIMErrorCodeGroupModuleGroupDataBaseError = 6000542, + + ZIMErrorCodeConversationModuleCommonError = 6000601, + ZIMErrorCodeConversationModuleServerError = 6000602, + ZIMErrorCodeConversationModuleConversationDoseNotExist = 6000603, + ZIMErrorCodeConversationModuleConversationPinnedListReachedLimit = 6000604, + + ZIMErrorCodeDataBaseModuleOpenDataBaseError = 6000701, + ZIMErrorCodeDataBaseModuleModifyDataBaseError = 6000702, + ZIMErrorCodeDataBaseModuleDeleteDataBaseError = 6000703, + ZIMErrorCodeDataBaseModuleSeleteDataBaseError = 6000704, + + // 好友关系链模块错误码 + ZIMErrorCodeFriendModuleFriendsNumLimit = 6000801, + // 同意或者拒绝好友申请状态错误 + ZIMErrorCodeFriendModuleFriend_application_status_error = 6000802, + // 对方已经是好友 + ZIMErrorCodeFriendModuleIsAlreadyYourFriend = 6000803, + // 已经在黑名单内 + ZIMErrorCodeFriendModuleAlreadyAddToBlacklist = 6000804, + // 不能添加自己到黑名单 + ZIMErrorCodeFriendModuleCannotAddSelfToBlacklist = 6000805, + // 已经从黑名单中删除 + ZIMErrorCodeFriendModuleAlreadyDeleteFromBlacklist = 6000806, + // 该用户不在黑名单里 + ZIMErrorCodeFriendModuleUserNotInBlacklist = 6000807, + // 黑名单限制 + ZIMErrorCodeFriendModuleBlacklistListQuantityLimit = 6000808, + // 好友列表超出限制 + ZIMErrorCodeFriendModuleFriendOperationLimitExceeded = 6000809, + // 不允许添加自己 + ZIMErrorCodeFriendModuleCannotAddSelfToFriendList = 6000810, + // 该好友没注册 + ZIMErrorCodeFriendModuleFriendAreUnregistered = 6000811, + // 不是你的好友 + ZIMErrorCodeFriendModuleNotYourFriend = 6000812, + // 不允许删除自己 + ZIMErrorCodeFriendModuleCannotDeleteSelf = 6000813, + // 申请已经过期 + ZIMErrorCodeFriendModuleFriendApplicationExpired = 6000814, + ZIMErrorCodeFriendModuleAddBlacklistFail = 6000815, + ZIMErrorCodeFriendModuleDelBlacklistFail = 6000816, + +}; + +NS_ASSUME_NONNULL_END diff --git a/Libs/ZIM.framework/Headers/ZIMEventHandler.h b/Libs/ZIM.framework/Headers/ZIMEventHandler.h new file mode 100644 index 0000000..aeec671 --- /dev/null +++ b/Libs/ZIM.framework/Headers/ZIMEventHandler.h @@ -0,0 +1,632 @@ + +// +// ZIMEventHandler.h +// ZIM +// +// Copyright © 2021 Zego. All rights reserved. +// + +#import "ZIMDefines.h" + +@class ZIM; + +NS_ASSUME_NONNULL_BEGIN + +/// Callback. +/// +@protocol ZIMEventHandler + +@optional + +/// The event callback when the connection state changes. +/// +/// @param zim ZIM instance. +/// @param state The current connection state after changed. +/// @param event The event that caused the connection state to change. +/// @param extendedData Extra information when the event occurs, a standard JSON format data. +- (void)zim:(ZIM *)zim + connectionStateChanged:(ZIMConnectionState)state + event:(ZIMConnectionEvent)event + extendedData:(NSDictionary *)extendedData; + +// MARK: - Main + +/// The callback for error information. +/// +/// When an exception occurs in the SDK, the callback will prompt detailed information. +/// +/// @param zim ZIM instance. +/// @param errorInfo Error information, please refer to the error codes document. +- (void)zim:(ZIM *)zim errorInfo:(ZIMError *)errorInfo; + +/// A reminder callback that the token is about to expire. +/// +/// @param zim ZIM instance. +/// @param second The remaining second before the token expires. +- (void)zim:(ZIM *)zim tokenWillExpire:(unsigned int)second; + +- (void)zim:(ZIM *)zim userInfoUpdated:(ZIMUserFullInfo *)info; + +- (void)zim:(ZIM *)zim userRuleUpdated:(ZIMUserRule *)userRule; + +- (void)zim:(ZIM *)zim userStatusUpdated:(NSArray *)userStatusList; +// MARK: - Conversation +- (void)zim:(ZIM *)zim + conversationChanged:(NSArray *)conversationChangeInfoList; + +- (void)zim:(ZIM *)zim + conversationTotalUnreadMessageCountUpdated:(unsigned int)totalUnreadMessageCount; + +/// Received notification callback when the message receiver has read this receipt message. +/// +/// Available since: 2.5.0 and above. +/// +/// Description: When the message receiver has read the session, the message sender knows through this callback. +/// +/// When to call /Trigger: Trigger a notification when the message receiver has read the session. +/// +/// Related APIs: triggered when the peer calls via [sendConversationMessageReceiptRead]. +/// @param zim ZIM instance. +/// @param infos Receipt information. +- (void)zim:(ZIM *)zim conversationMessageReceiptChanged:(NSArray *)infos; + +///Available since: 2.12.0 and above. +/// +///Description: When multiple login ends delete all sessions, the local end triggers the callback to notify the local end that all sessions are deleted. +/// +///When to call /Trigger: When another end clears all unread sessions, the local end triggers a notification. +/// +///Related APIs: Triggered by [deleteAllConversations]. +- (void)zim:(ZIM *)zim conversationsAllDeleted:(ZIMConversationsAllDeletedInfo *)info; + +// MARK: - Message + +/// The callback for receiving peer-to-peer message. +/// +/// When receiving peer-to-peer message from other user, you will receive this callback. +/// +/// @param zim ZIM instance. +/// @param messageList List of received messages. +/// @param fromUserID The user ID of the message sender. +- (void)zim:(ZIM *)zim + receivePeerMessage:(NSArray *)messageList + fromUserID:(NSString *)fromUserID + DEPRECATED_MSG_ATTRIBUTE("Deprecated since ZIM 2.18.0, please use " + "[zim:peerMessageReceived:info:fromUserID:] instead."); + +- (void)zim:(ZIM *)zim + peerMessageReceived:(NSArray *)messageList + info:(ZIMMessageReceivedInfo *)info + fromUserID:(NSString *)fromUserID; + +/// The callback for receiving room message. +/// +/// This callback will be triggered when new message is received in a room. +/// +/// @param zim ZIM instance. +/// @param messageList List of received messages. +/// @param fromRoomID ID of the room where the message was received. +- (void)zim:(ZIM *)zim + receiveRoomMessage:(NSArray *)messageList + fromRoomID:(NSString *)fromRoomID + DEPRECATED_MSG_ATTRIBUTE("Deprecated since ZIM 2.18.0, please use " + "[zim:roomMessageReceived:info:fromUserID:] instead."); + +- (void)zim:(ZIM *)zim + roomMessageReceived:(NSArray *)messageList + info:(ZIMMessageReceivedInfo *)info + fromRoomID:(NSString *)fromRoomID; + +- (void)zim:(ZIM *)zim + receiveGroupMessage:(NSArray *)messageList + fromGroupID:(NSString *)fromGroupID + DEPRECATED_MSG_ATTRIBUTE("Deprecated since ZIM 2.18.0, please use " + "[zim:groupMessageReceived:info:fromUserID:] instead."); + +- (void)zim:(ZIM *)zim + groupMessageReceived:(NSArray *)messageList + info:(ZIMMessageReceivedInfo *)info + fromGroupID:(NSString *)fromGroupID; + +/// Received notification callback when some one else sends a message and then revoke a message sent by themselves. +/// +/// Available since: 2.5.0 and above. +/// +/// Description: This callback is received when some one else sends a message and then revoke. +/// +/// When to call /Trigger: This callback occurs when a ZIM instance is created with [create] and the other user revoke a message. +/// +/// Related APIs: You can revoke message to other members via [revokeMessage]. +/// @param zim ZIM instance. +/// @param messageList List of received messages.. +- (void)zim:(ZIM *)zim messageRevokeReceived:(NSArray *)messageList; + +/// Supported version: 2.10.0 or later. +/// +/// Description: The callback is received when the server interface [SendMessageToAllUsers] sends a message. +/// +/// Call time: This callback is received after logging in to the ZIM service and the server call the [SendMessageToAllUsers] interface to send a message. +/// @param zim ZIM instance. +/// @param message Received message.. +- (void)zim:(ZIM *)zim broadcastMessageReceived:(ZIMMessage *)message; + +- (void)zim:(ZIM *)zim messageDeleted:(ZIMMessageDeletedInfo *)deletedInfo; + +/// Received notification callback when the message receiver confirms that the message has been read. +/// +/// Available since: 2.5.0 and above. +/// +/// Description: When the message receiver confirms that the message has been read, the message sender knows through this callback. +/// +/// When to call /Trigger: Trigger a notification when the message receiver has read the message. +/// +/// Related APIs: Triggered when the peer calls via [sendMessageReceiptsRead]. +/// @param zim ZIM instance. +/// @param infos Receipt information. +- (void)zim:(ZIM *)zim messageReceiptChanged:(NSArray *)infos; + +- (void)zim:(ZIM *)zim + messageSentStatusChanged: + (NSArray *)messageSentStatusChangeInfoList; + +/// Supported version: 2.10.0 or later. + +/// Description: The callback is received when reactions change +/// +/// When to Call: This callback can be registered after the ZIM instance is created by [create] and before login. +/// +/// When to Trigger: After other users add or delete reactions to messages in private or group chats. +/// +/// Related APIs: [addMessageReaction]、[deleteMessageReaction] +/// @param zim ZIM instance. +/// @param reactions The list of changed reactions. +- (void)zim:(ZIM *)zim messageReactionsChanged:(NSArray *)reactions; + +- (void)zim:(ZIM *)zim messageRepliedInfoChanged:(NSArray *)messageList; + +- (void)zim:(ZIM *)zim + messageRepliedCountChanged:(NSArray *)infos; + +// MARK: - Room + +/// Callback when other members join the room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: After joining a room, when other members also join this room, they will receive this callback. +/// +/// Use cases:When other members in the room join, this callback will be called. +/// +/// When to call: After creating a ZIM instance through [create], and the user is in a room joined by other members, you can call this interface. +/// +/// Caution: If the user is not currently in this room, this callback will not be called. +/// +/// Related APIs: You can use [roomMemberLeft] to receive this callback when other room members leave. +/// +/// @param zim ZIM instance. +/// @param memberList List of members who joined the room. +/// @param roomID The ID of the room where this event occurred. +- (void)zim:(ZIM *)zim + roomMemberJoined:(NSArray *)memberList + roomID:(NSString *)roomID; + +/// Callback when other members leave the room. +/// +/// Available since: 1.1.0 or above. +/// +/// Description: After joining a room, when other members leave the room, they will receive this callback. +/// +/// Use cases: When other members in the room leave the room, this callback will be called. +/// +/// When to call: After creating a ZIM instance through [create], and the user is in the same room of other members, you can call this interface. +/// +/// Caution:If the user is not currently in this room, this callback will not be called. +/// +/// Related APIs: You can receive this callback when other room members join through [roomMemberJoined]. +/// +/// @param zim ZIM instance. +/// @param memberList List of members who left the room. +/// @param roomID The ID of the room where this event occurred. +- (void)zim:(ZIM *)zim + roomMemberLeft:(NSArray *)memberList + roomID:(NSString *)roomID; + +/// event callback when the room connection status changes. +/// +/// Available since: 1.1.0 or above. +/// +/// Description:event callback when the room connection status changes. +/// +/// When to call::After creating a ZIM instance through [create], you can call this interface. +/// +/// Related APIs:through [tokenWillExpire], the callback will be received when the token is about to expire. +/// +/// @param zim ZIM instance. +/// @param state The current room connection state after changed. +/// @param event The event that caused the room connection state to change. +/// @param extendedData Extra information when the event occurs, a standard JSON string. +- (void)zim:(ZIM *)zim + roomStateChanged:(ZIMRoomState)state + event:(ZIMRoomEvent)event + extendedData:(NSDictionary *)extendedData + roomID:(NSString *)roomID; + +/// event callback when the room attributes changes. +/// +/// Available since: 1.3.0. +/// +/// Description:When the room attribute in the room changes, it will be notified through this callback. +/// +/// @param zim ZIM instance. +/// @param updateInfo The info of the room attributes changed. +/// @param roomID The ID of the room where this event occurred. +- (void)zim:(ZIM *)zim + roomAttributesUpdated:(ZIMRoomAttributesUpdateInfo *)updateInfo + roomID:(NSString *)roomID; + +/// event callback when the room attributes changes. +/// +/// Available since: 1.3.0. +/// +/// Description:When the room attribute in the room changes, it will be notified through this callback. +/// +/// @param zim ZIM instance. +/// @param updateInfo The infos of the room attributes changed. +/// @param roomID The ID of the room where this event occurred. +- (void)zim:(ZIM *)zim + roomAttributesBatchUpdated:(NSArray *)updateInfo + roomID:(NSString *)roomID; + +/// event callback when room user property update. +/// +/// Available since: 2.4.0. +/// +/// Description: This callback will be received when a user's property in the room is changed. +/// +/// @param zim ZIM instance. +/// @param infos The infos of the room member attributes changed. +/// @param operatedInfo Room operation information. +/// @param roomID Room ID. +- (void)zim:(ZIM *)zim + roomMemberAttributesUpdated:(NSArray *)infos + operatedInfo:(ZIMRoomOperatedInfo *)operatedInfo + roomID:(NSString *)roomID; +// MARK: - Group +/// Description: allback notification of group status change. +/// +/// Use cases: Scenarios that require interaction based on the group status. +/// +/// When to call /Trigger: A notification is triggered when a group is created, joined, left, or dismissed. +/// +/// Related APIs: [createGroup] : creates a group. [joinGroup] : joins a group. [leaveGroup], leave the group. [dismissGroup]; dismiss the group. +/// +/// @param zim ZIM instance. +/// @param state The status of the group after the change. +/// @param event Group related events. +/// @param operatedInfo Group information that has been operated. +/// @param groupInfo The groupInfowhere the group state change occurred. +- (void)zim:(ZIM *)zim + groupStateChanged:(ZIMGroupState)state + event:(ZIMGroupEvent)event + operatedInfo:(ZIMGroupOperatedInfo *)operatedInfo + groupInfo:(ZIMGroupFullInfo *)groupInfo; + +/// Description: Group name change notification callback. +/// +/// Use cases: If the group name is changed, you need to synchronize the latest group name. +/// +/// When to call /Trigger: The group name is changed. Procedure +/// +/// Related APIs: [updateGroupName] : updates the group name. +/// +/// +/// @param zim ZIM instance. +/// @param groupName The updated group name. +/// @param operatedInfo Operation information after the group name is updated. +/// @param groupID The groupID where the group name update occurred. +- (void)zim:(ZIM *)zim + groupNameUpdated:(NSString *)groupName + operatedInfo:(ZIMGroupOperatedInfo *)operatedInfo + groupID:(NSString *)groupID; + +- (void)zim:(ZIM *)zim + groupAvatarUrlUpdated:(NSString *)groupAvatarUrl + operatedInfo:(ZIMGroupOperatedInfo *)operatedInfo + groupID:(NSString *)groupID; + +- (void)zim:(ZIM *)zim + groupAliasUpdated:(NSString *)groupAlias + operatedUserID:(NSString *)operatedUserID + groupID:(NSString *)groupID; + +/// Description: Group bulletin Change notification callback. +/// +/// Use cases: If a group bulletin changes, you need to synchronize the latest bulletin content. +/// +/// When to call /Trigger: The group bulletin is changed. Procedure +/// +/// Related APIs: [updateGroupNotice], which updates the group notice. +/// +/// @param zim ZIM instance. +/// @param groupNotice Updated group announcement. +/// @param operatedInfo The group announces the updated operation information. +/// @param groupID The groupID where the group announcement update occurred. +- (void)zim:(ZIM *)zim + groupNoticeUpdated:(NSString *)groupNotice + operatedInfo:(ZIMGroupOperatedInfo *)operatedInfo + groupID:(NSString *)groupID; + +- (void)zim:(ZIM *)zim + groupMutedInfoUpdated:(ZIMGroupMuteInfo *)muteInfo + operatedInfo:(ZIMGroupOperatedInfo *)operatedInfo + groupID:(NSString *)groupID; + +- (void)zim:(ZIM *)zim + groupVerifyInfoUpdated:(ZIMGroupVerifyInfo *)verifyInfo + operatedInfo:(ZIMGroupOperatedInfo *)operatedInfo + groupID:(NSString *)groupID; + +/// Description: Group attribute change notification callback. +/// +/// Use cases: When group attributes are changed, you need to synchronize the latest group attributes. +/// +/// When to call /Trigger: Triggered when group properties are set, updated, or deleted. +/// +/// Impacts on other APIs: [setGroupAttributes] updates group attributes. [deleteGroupAttributes], delete the group attribute. +/// +/// @param zim ZIM instance. +/// @param operatedInfo Operation information after the group attribute is updated. +/// @param updateInfo Information after group attribute update. +/// @param groupID The groupID for sending group attribute updates. +- (void)zim:(ZIM *)zim + groupAttributesUpdated:(NSArray *)updateInfo + operatedInfo:(ZIMGroupOperatedInfo *)operatedInfo + groupID:(NSString *)groupID; + +/// Description: Group member status change notification callback. +/// +/// Use cases: Scenarios that require interaction based on group member states. +/// +/// When to call /Trigger: Notification is triggered when a group is created, joined, left, or dismissed, or a user is invited to join or kicked out of the group. +/// +/// Related APIs: [createGroup] : creates a group. [joinGroup] : joins a group. [leaveGroup], leave the group. [dismissGroup]; dismiss the group. [intiveUsersIntoGroup], which invites users to join the group. [kickoutGroupMember] kicks the user out of the group. +/// +/// +/// @param zim ZIM instance. +/// @param state Updated membership status. +/// @param event Updated member events. +/// @param userList Updated member information. +/// @param operatedInfo Updated operational information. +/// @param groupID The groupID where the member state change occurred. +- (void)zim:(ZIM *)zim + groupMemberStateChanged:(ZIMGroupMemberState)state + event:(ZIMGroupMemberEvent)event + userList:(NSArray *)userList + operatedInfo:(ZIMGroupOperatedInfo *)operatedInfo + groupID:(NSString *)groupID; + +/// Description: Return the operation result of changing group member information. +/// +/// Use cases: After the basic information of group members is changed, you need to display or interact with group members on the page. +/// +/// When to call /Trigger: The result is displayed after the group member information is changed. +/// +/// Related APIs: [setGroupMemberNickname] : updates the nickname of a group member. [setGroupMemberRole] : updates the group member role. [transferGroupOwner], group master transfer. +/// +/// +/// @param zim ZIM instance. +/// @param operatedInfo Updated member information. +/// @param userInfo userInfo. +/// @param groupID groupID. +- (void)zim:(ZIM *)zim + groupMemberInfoUpdated:(NSArray *)userInfo + operatedInfo:(ZIMGroupOperatedInfo *)operatedInfo + groupID:(NSString *)groupID; + +- (void)zim:(ZIM *)zim + groupApplicationListChanged:(NSArray *)applicationList + action:(ZIMGroupApplicationListChangeAction)action; + +- (void)zim:(ZIM *)zim + groupApplicationUpdated:(NSArray *)applicationList; + +// MARK: - CallList +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: After the inviter initiates a call invitation, the invitee will receive this callback when the invitee is online. +/// +/// Business scenario: The invitee will call this callback after the inviter sends a call invitation. +/// +/// When to call: After creating a ZIM instance through [create]. +/// +/// Note: If the user is not in the invitation list or not online, this callback will not be called. +/// +/// Related interface: [callInvite]. +/// +/// @param zim ZIM instance. +/// @param info Information about received call invitations. +/// @param callID Received CallID. +- (void)zim:(ZIM *)zim + callInvitationReceived:(ZIMCallInvitationReceivedInfo *)info + callID:(NSString *)callID; + +- (void)zim:(ZIM *)zim + callInvitationCreated:(ZIMCallInvitationCreatedInfo *)info + callID:(NSString *)callID; + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: After the inviter cancels the call invitation, this callback will be received when the invitee is online. +/// +/// Business scenario: The invitee will call this callback after the inviter cancels the call invitation. +/// +/// When to call: After creating a ZIM instance through [create]. +/// +/// Note: If the user is not in the cancel invitation list or is offline, this callback will not be called. +/// +/// Related interface: [callCancel]. +/// +/// +/// @param zim ZIM instance. +/// @param info Information about canceled call invitations. +/// @param callID Cancelled callID. +- (void)zim:(ZIM *)zim + callInvitationCancelled:(ZIMCallInvitationCancelledInfo *)info + callID:(NSString *)callID; + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: After the invitee accepts the call invitation, this callback will be received when the inviter is online. +/// +/// Business scenario: The inviter will receive this callback after the inviter accepts the call invitation. +/// +/// When to call: After creating a ZIM instance through [create]. +/// +/// Note: This callback will not be called if the user is not online. +/// +/// Related interface: [callAccept]. +/// +/// +/// @param zim ZIM instance. +/// @param info Information about the call invitations. +/// @param callID callID. +- (void)zim:(ZIM *)zim + callInvitationAccepted:(ZIMCallInvitationAcceptedInfo *)info + callID:(NSString *)callID + DEPRECATED_MSG_ATTRIBUTE( + "Deprecated since ZIM 2.9.0, please use [zim:callUserStateChanged:] instead."); +/// Available since: 2.0.0 and above. +/// +/// Description: This callback will be received when the inviter is online after the inviter rejects the call invitation. +/// +/// Use cases: The inviter will receive this callback after the inviter declines the call invitation. +/// +/// Default value: After creating a ZIM instance through [create] and logging in. +/// +/// When to call /Trigger: After creating a ZIM instance through [create] and logging in. +/// +/// Restrictions: If the user is not the inviter of the call invitation or is not online, the callback will not be received. +/// +/// Related APIs:[callReject]. +/// @param zim ZIM instance. +/// @param info Information about the call invitations. +/// @param callID callID. +- (void)zim:(ZIM *)zim + callInvitationRejected:(ZIMCallInvitationRejectedInfo *)info + callID:(NSString *)callID + DEPRECATED_MSG_ATTRIBUTE( + "Deprecated since ZIM 2.9.0, please use [zim:callUserStateChanged:] instead."); + +/// Supported versions: 2.9.0 and above. +/// +/// Detail description: In an advanced call, a participant ends the call, and all participants will receive this callback. +/// +/// Note: If the user is not the inviter who initiated this call invitation or is not online, the callback will not be received. +/// +/// Related APIs: [callEnd] +/// +/// @param zim ZIM instance. +/// @param info Information carried by the event callback. +/// @param callID Timeout invitee ID. +- (void)zim:(ZIM *)zim + callInvitationEnded:(ZIMCallInvitationEndedInfo *)info + callID:(NSString *)callID; + +/// Available since: 2.0.0 and above. +/// +/// Description: This callback will be received when the inviter is online after the inviter rejects the call invitation. +/// +/// Use cases: The inviter will receive this callback after the inviter declines the call invitation. +/// +/// Default value: After creating a ZIM instance through [create] and logging in. +/// +/// When to call /Trigger: After creating a ZIM instance through [create] and logging in. +/// +/// Restrictions: If the user is not the inviter of the call invitation or is not online, the callback will not be received. +/// +/// Related APIs:[callReject]. +/// @param zim ZIM instance. +/// @param callID callID. +- (void)zim:(ZIM *)zim + callInvitationTimeout:(NSString *)callID + DEPRECATED_MSG_ATTRIBUTE( + "Deprecated since ZIM 2.9.0, please use [zim:callInvitationTimeout:callID:] instead."); + +/// Available since: 2.0.0 and above. +/// +/// Description: This callback will be received when the inviter is online after the inviter rejects the call invitation. +/// +/// Use cases: The inviter will receive this callback after the inviter declines the call invitation. +/// +/// Default value: After creating a ZIM instance through [create] and logging in. +/// +/// When to call /Trigger: After creating a ZIM instance through [create] and logging in. +/// +/// Restrictions: If the user is not the inviter of the call invitation or is not online, the callback will not be received. +/// +/// Related APIs:[callReject]. +/// @param zim ZIM instance. +/// @param info Information about the status change of a call member. +/// @param callID callID. +- (void)zim:(ZIM *)zim + callInvitationTimeout:(ZIMCallInvitationTimeoutInfo *)info + callID:(NSString *)callID; + +/// Supported versions: 2.0.0 and above. +/// +/// Detail description: When the call invitation times out, the invitee does not respond, and the inviter will receive a callback. +/// +/// Business scenario: The invitee does not respond before the timeout period, and the inviter will receive this callback. +/// +/// When to call: After creating a ZIM instance through [create]. +/// +/// Note: If the user is not the inviter who initiated this call invitation or is not online, the callback will not be received. +/// +/// Related interfaces: [callInvite], [callAccept], [callReject]. +/// +/// @param zim ZIM instance. +/// @param invitees Timeout invitee ID. +/// @param callID callID. +- (void)zim:(ZIM *)zim + callInviteesAnsweredTimeout:(NSArray *)invitees + callID:(NSString *)callID + DEPRECATED_MSG_ATTRIBUTE( + "Deprecated since ZIM 2.9.0, please use [zim:callUserStateChanged:] instead."); + +/// Supported versions: 2.9.0 and above. +/// +/// Detail description: Listen for calling user status changes. +/// +/// When to call: After the call invitation is initiated, the calling member accepts, rejects, or exits, or the response times out, the current calling inviting member receives this callback. +/// +/// Note: If the user is not the inviter who initiated this call invitation or is not online, the callback will not be received. +/// +/// Related APIs: [callInvite], [callingInvite], [callAccept], [callReject],[callQuit]. +/// +/// @param zim ZIM instance. +/// @param info Information about the status change of a call member. +/// @param callID Unique identifier of the call. +- (void)zim:(ZIM *)zim + callUserStateChanged:(ZIMCallUserStateChangeInfo *)info + callID:(NSString *)callID; + +- (void)zim:(ZIM *)zim + blacklistChanged:(NSArray *)userList + action:(ZIMBlacklistChangeAction)action; + +- (void)zim:(ZIM *)zim friendInfoUpdated:(NSArray *)friendInfoList; + +- (void)zim:(ZIM *)zim + friendListChanged:(NSArray *)friendInfoList + action:(ZIMFriendListChangeAction)action; + +- (void)zim:(ZIM *)zim + friendApplicationUpdated:(NSArray *)friendApplicationInfoList; + +- (void)zim:(ZIM *)zim + friendApplicationListChanged:(NSArray *)friendApplicationInfoList + action:(ZIMFriendApplicationListChangeAction)action; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/ZIM.framework/Info.plist b/Libs/ZIM.framework/Info.plist new file mode 100644 index 0000000..8c1dfbc Binary files /dev/null and b/Libs/ZIM.framework/Info.plist differ diff --git a/Libs/ZIM.framework/Modules/module.modulemap b/Libs/ZIM.framework/Modules/module.modulemap new file mode 100644 index 0000000..e155977 --- /dev/null +++ b/Libs/ZIM.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module ZIM { + umbrella header "ZIM.h" + + export * + module * { export * } +} diff --git a/Libs/ZIM.framework/PrivacyInfo.xcprivacy b/Libs/ZIM.framework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..f4bd59d --- /dev/null +++ b/Libs/ZIM.framework/PrivacyInfo.xcprivacy @@ -0,0 +1,39 @@ + + + + + NSPrivacyTracking + + NSPrivacyCollectedDataTypes + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + E174.1 + + + + + diff --git a/Libs/ZIM.framework/ZIM b/Libs/ZIM.framework/ZIM new file mode 100755 index 0000000..70f0697 Binary files /dev/null and b/Libs/ZIM.framework/ZIM differ diff --git a/Libs/ZIMUniPlugin.framework/Headers/ZIMUniPlugin.h b/Libs/ZIMUniPlugin.framework/Headers/ZIMUniPlugin.h new file mode 100644 index 0000000..c459667 --- /dev/null +++ b/Libs/ZIMUniPlugin.framework/Headers/ZIMUniPlugin.h @@ -0,0 +1,18 @@ +// +// ZIMUniPlugin.h +// ZIMUniPlugin +// +// Created by zego on 2022/5/30. +// + +#import + +//! Project version number for ZIMUniPlugin. +FOUNDATION_EXPORT double ZIMUniPluginVersionNumber; + +//! Project version string for ZIMUniPlugin. +FOUNDATION_EXPORT const unsigned char ZIMUniPluginVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Libs/ZIMUniPlugin.framework/Info.plist b/Libs/ZIMUniPlugin.framework/Info.plist new file mode 100644 index 0000000..7cd791c Binary files /dev/null and b/Libs/ZIMUniPlugin.framework/Info.plist differ diff --git a/Libs/ZIMUniPlugin.framework/Modules/module.modulemap b/Libs/ZIMUniPlugin.framework/Modules/module.modulemap new file mode 100644 index 0000000..fdeb3bb --- /dev/null +++ b/Libs/ZIMUniPlugin.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module ZIMUniPlugin { + umbrella header "ZIMUniPlugin.h" + export * + + module * { export * } +} diff --git a/Libs/ZIMUniPlugin.framework/ZIMUniPlugin b/Libs/ZIMUniPlugin.framework/ZIMUniPlugin new file mode 100644 index 0000000..6554a52 Binary files /dev/null and b/Libs/ZIMUniPlugin.framework/ZIMUniPlugin differ diff --git a/Libs/ZPNs.framework/Headers/ZPNs.h b/Libs/ZPNs.framework/Headers/ZPNs.h new file mode 100644 index 0000000..f1f548a --- /dev/null +++ b/Libs/ZPNs.framework/Headers/ZPNs.h @@ -0,0 +1,160 @@ +// +// ZPNs.h +// ZPNs +// +// Created by zego on 2021/9/28. +// + +#import +#import +//! Project version number for ZPNs. +FOUNDATION_EXPORT double ZPNsVersionNumber; + +//! Project version string for ZPNs. +FOUNDATION_EXPORT const unsigned char ZPNsVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +NS_ASSUME_NONNULL_BEGIN + +@protocol ZPNsNotificationCenterDelegate + +@optional + +/// Available since: 2.0.0 or later. + +/// Description: This callback can be implemented to return the PushID generated by ZPNs after the [setDeviceToken] call. + +/// Use cases: Developers can implement this callback if they need to get PushID after they connect to the SDK. + +/// When to call /Trigger: This notification is triggered after a call to [setDeviceToken]. +/// +/// @param Pushid ZPNs generated pushID for offline push. +- (void)onRegistered:(NSString *)Pushid; + +/// Available since: 2.0.0 or later. + +/// Description: This callback method is triggered when the application receives a push in the foreground. + +/// Use cases: When the APP is in the foreground, the push received is not displayed by default. If the developer wants to do some business logic for the push received in the foreground, the callback method can be implemented to get the push information. + +/// When to call /Trigger: Trigger this method when the APP is in the foreground and receives a remote push. +/// +/// @param center // UNNotificationRequests can be scheduled using UNUserNotificationCenter. They can also be sent to the device from a server using Apple Push Notification Service. If the application is authorized then the UNNotificationRequest will be used to create a UNNotification and it will be used to notify the user. If the user acts on the UNNotification then a UNNotificationResponse will be sent to the application. +/// @param notification iOS notification center object. +/// @param userInfo Apps can set the userInfo for locally scheduled notification requests. The contents of the push payload will be set as the userInfo for remote notifications. +/// @param completionHandler completionHandler. +- (void)ZPNsNotificationCenter:(UNUserNotificationCenter *)center + willPresentNotification:(UNNotification *)notification + userInfo:(NSDictionary *)userInfo + withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler + API_AVAILABLE(macos(10.14), ios(10.0)); + +/// Available since: 2.0.0 and above. + +/// Description: This callback method is triggered when the user clicks remote push to enter the APP. + +/// Use cases: This approach can be implemented if developers want to implement some business logic after the user clicks on the remote push notification bar. + +/// When to call /Trigger: When the user clicks remote push to enter the APP. +/// +/// @param center // UNNotificationRequests can be scheduled using UNUserNotificationCenter. They can also be sent to the device from a server using Apple Push Notification Service. If the application is authorized then the UNNotificationRequest will be used to create a UNNotification and it will be used to notify the user. If the user acts on the UNNotification then a UNNotificationResponse will be sent to the application. +/// @param response response. +/// @param userInfo Apps can set the userInfo for locally scheduled notification requests. The contents of the push payload will be set as the userInfo for remote notifications. +/// @param completionHandler completionHandler. +- (void)ZPNsNotificationCenter:(UNUserNotificationCenter *)center + didReceiveNotificationResponse:(UNNotificationResponse *)response + userInfo:(NSDictionary *)userInfo + withCompletionHandler:(void (^)(void))completionHandler + API_AVAILABLE(macos(10.14), ios(10.0)); +@end + +@interface ZPNsConfig : NSObject + +@property (nonatomic, assign) unsigned int appType; + +@end + +@interface ZPNs : NSObject + +/// Available since: 2.0.0 or later. + +/// Description: return SDK Version. + +/// When to call /Trigger: Called when you need to get the SDK version. ++ (NSString *)getVersion; + +/// Available since: 2.0.0 or later. +/// +/// Description: Get the ZPNs instance. +/// +/// Use cases: This method is used to obtain ZPNs singletons when ZPNs is used. ++ (ZPNs *)shared; + +/// Available since: 2.0.0 or later. + +/// Description: In the class can be registered, with the APNs trigger iOS APPDelete didRegisterForRemoteNotificationsWithDeviceToken deviceToken method. + +/// Use cases: You can call this interface when you need to get push functionality. + +/// When to call /Trigger: To obtain the push function. + +/// Restrictions: You need to use a networked iOS real machine to get the deviceToken correctly. +- (void)registerAPNs; + +- (void)unregisterAPNs; + +- (void)setPushConfig:(nonnull ZPNsConfig *)config; + +/// Available since: 2.0.0 or later. + +/// Description: Use this method to pass deviceToken into ZPNs and get PushID. + +/// Use cases: This method should be used after the official iOS interface didRegisterForRemoteNotificationsWithDeviceToken trigger, and on this interface will be incoming deviceToken parameters. + +/// When to call /Trigger: Official iOS interface didRegisterForRemoteNotificationsWithDeviceToken trigger after use. + +/// Caution: The isProduct Boolean value for this method is false for development and true for production. +/// +/// @param devicetoken used to generate PushID. +/// @param isProduct Used to determine whether the current environment is a development or production environment. +- (void)setDeviceToken:(NSData *)devicetoken isProduct:(BOOL)isProduct; + +- (void)setVoipToken:(NSData *)voipToken isProduct:(BOOL)isProduct; +/// Available since: 2.0.0 and above. +/// +/// Description: Set event notification callback, pass [null] to clear the set callback. +/// +/// When to call /Trigger: Need to receive the ZPNsNotificationCenterDelegate method, this method is called to set the agent. +/// +/// Caution: If the developer calls this function more than once, the callback set by the last time the function was called will be overridden. +- (void)setZPNsNotificationCenterDelegate:(id)delegate; + +- (void)addLocalNotificationRequest:(UNNotificationRequest *)request + withCompletionHandler:(nullable void (^)(NSError *__nullable error))completionHandler + API_AVAILABLE(macos(10.14), ios(10.0)); + +- (void)addLocalNotificationWithContent:(UNMutableNotificationContent *)content + trigger:(UNTimeIntervalNotificationTrigger *)trigger + withCompletionHandler: + (nullable void (^)(NSError *__nullable error))completionHandler + API_AVAILABLE(macos(10.14), ios(10.0)) + DEPRECATED_MSG_ATTRIBUTE("Deprecated since ZPNs 2.4.0, please use another " + "[addLocalNotificationRequest] instead"); + +/// Available since:ZPNs version 2.6.0 or later. +/// +/// Description:Reports the number of badge of the current App to the ZPNs server through this interface. When the app is offline, the ZPNs changes based on the previously reported badge mark number. +/// +/// Use cases: When the local badge of the developer is changed, this interface is called to report the change. +/// +/// Default value:If the receiver does not report the badge, the badge mark will not be modified when the push is sent. +/// +/// When to call /Trigger:It can be called at any time, but the actual time reported to the background is after pushID has successfully registered and the user has logged in, and before logging out. +/// +/// Restrictions: There is no single interface frequency limit. +/// +/// Caution:badge cannot be less than 0. +- (void)setBadge:(int)badge; +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/ZPNs.framework/Info.plist b/Libs/ZPNs.framework/Info.plist new file mode 100644 index 0000000..9c8da57 Binary files /dev/null and b/Libs/ZPNs.framework/Info.plist differ diff --git a/Libs/ZPNs.framework/Modules/module.modulemap b/Libs/ZPNs.framework/Modules/module.modulemap new file mode 100644 index 0000000..f9dc6cc --- /dev/null +++ b/Libs/ZPNs.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module ZPNs { + umbrella header "ZPNs.h" + + export * + module * { export * } +} diff --git a/Libs/ZPNs.framework/ZPNs b/Libs/ZPNs.framework/ZPNs new file mode 100755 index 0000000..9d66b64 Binary files /dev/null and b/Libs/ZPNs.framework/ZPNs differ diff --git a/Libs/ZPNsUniPlugin.framework/Headers/ZPNsUniPlugin.h b/Libs/ZPNsUniPlugin.framework/Headers/ZPNsUniPlugin.h new file mode 100644 index 0000000..fd65e85 --- /dev/null +++ b/Libs/ZPNsUniPlugin.framework/Headers/ZPNsUniPlugin.h @@ -0,0 +1,18 @@ +// +// ZPNsUniPlugin.h +// ZPNsUniPlugin +// +// Created by zego on 2022/5/30. +// + +#import + +//! Project version number for ZPNsUniPlugin. +FOUNDATION_EXPORT double ZPNsUniPluginVersionNumber; + +//! Project version string for ZPNsUniPlugin. +FOUNDATION_EXPORT const unsigned char ZPNsUniPluginVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Libs/ZPNsUniPlugin.framework/Info.plist b/Libs/ZPNsUniPlugin.framework/Info.plist new file mode 100644 index 0000000..9c7edc9 Binary files /dev/null and b/Libs/ZPNsUniPlugin.framework/Info.plist differ diff --git a/Libs/ZPNsUniPlugin.framework/Modules/module.modulemap b/Libs/ZPNsUniPlugin.framework/Modules/module.modulemap new file mode 100644 index 0000000..519cb90 --- /dev/null +++ b/Libs/ZPNsUniPlugin.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module ZPNsUniPlugin { + umbrella header "ZPNsUniPlugin.h" + + export * + module * { export * } +} diff --git a/Libs/ZPNsUniPlugin.framework/ZPNsUniPlugin b/Libs/ZPNsUniPlugin.framework/ZPNsUniPlugin new file mode 100644 index 0000000..aa015af Binary files /dev/null and b/Libs/ZPNsUniPlugin.framework/ZPNsUniPlugin differ diff --git a/Libs/jcore-ios-4.6.2.xcframework/Info.plist b/Libs/jcore-ios-4.6.2.xcframework/Info.plist new file mode 100644 index 0000000..2c539fa --- /dev/null +++ b/Libs/jcore-ios-4.6.2.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libJCore.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libJCore.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Libs/jcore-ios-4.6.2.xcframework/ios-arm64/Headers/JGInforCollectionAuth.h b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64/Headers/JGInforCollectionAuth.h new file mode 100644 index 0000000..1a378b8 --- /dev/null +++ b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64/Headers/JGInforCollectionAuth.h @@ -0,0 +1,27 @@ +// +// JGInforCollectionAuth.h +// JCore +// +// Created by 豆瓣 on 2021/10/27. +// Copyright © 2021 jiguang. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 合规接口,是否授权极光采集一定的设备信息 +@interface JGInforCollectionAuthItems : NSObject +/// 是否授权,默认YES +@property(nonatomic,assign)BOOL isAuth; +@end + +@interface JGInforCollectionAuth : NSObject + +/// 设备信息采集授权接口(合规接口) +/// 请务必在调用初始化、功能性接口前调用此接口进行合规授权 +/// @param authBlock auth:YES 则极光认为您同意极光采集一定的设备信息 ++(void)JCollectionAuth:(void(^_Nullable)(JGInforCollectionAuthItems *authInfo))authBlock; +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/jcore-ios-4.6.2.xcframework/ios-arm64/PrivacyInfo.xcprivacy b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..ab4651f --- /dev/null +++ b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64/PrivacyInfo.xcprivacy @@ -0,0 +1,76 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeCrashData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeDeviceID + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypePreciseLocation + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyTracking + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPITypeReasons + + E174.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + + + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + + + NSPrivacyAccessedAPITypeReasons + + C617.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + + + + diff --git a/Libs/jcore-ios-4.6.2.xcframework/ios-arm64/libJCore.a b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64/libJCore.a new file mode 100644 index 0000000..2f2c7ea Binary files /dev/null and b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64/libJCore.a differ diff --git a/Libs/jcore-ios-4.6.2.xcframework/ios-arm64_x86_64-simulator/Headers/JGInforCollectionAuth.h b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64_x86_64-simulator/Headers/JGInforCollectionAuth.h new file mode 100644 index 0000000..1a378b8 --- /dev/null +++ b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64_x86_64-simulator/Headers/JGInforCollectionAuth.h @@ -0,0 +1,27 @@ +// +// JGInforCollectionAuth.h +// JCore +// +// Created by 豆瓣 on 2021/10/27. +// Copyright © 2021 jiguang. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 合规接口,是否授权极光采集一定的设备信息 +@interface JGInforCollectionAuthItems : NSObject +/// 是否授权,默认YES +@property(nonatomic,assign)BOOL isAuth; +@end + +@interface JGInforCollectionAuth : NSObject + +/// 设备信息采集授权接口(合规接口) +/// 请务必在调用初始化、功能性接口前调用此接口进行合规授权 +/// @param authBlock auth:YES 则极光认为您同意极光采集一定的设备信息 ++(void)JCollectionAuth:(void(^_Nullable)(JGInforCollectionAuthItems *authInfo))authBlock; +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/jcore-ios-4.6.2.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..ab4651f --- /dev/null +++ b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy @@ -0,0 +1,76 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeCrashData + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeDeviceID + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypePreciseLocation + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAppFunctionality + + + + NSPrivacyTracking + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPITypeReasons + + E174.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + + + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + + + NSPrivacyAccessedAPITypeReasons + + C617.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + + + + diff --git a/Libs/jcore-ios-4.6.2.xcframework/ios-arm64_x86_64-simulator/libJCore.a b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64_x86_64-simulator/libJCore.a new file mode 100644 index 0000000..0fc0af7 Binary files /dev/null and b/Libs/jcore-ios-4.6.2.xcframework/ios-arm64_x86_64-simulator/libJCore.a differ diff --git a/Libs/jpush-ios-5.3.0.xcframework/Info.plist b/Libs/jpush-ios-5.3.0.xcframework/Info.plist new file mode 100644 index 0000000..4974f39 --- /dev/null +++ b/Libs/jpush-ios-5.3.0.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libJPush.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + HeadersPath + Headers + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + libJPush.a + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Libs/jpush-ios-5.3.0.xcframework/ios-arm64/Headers/JPUSHService.h b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64/Headers/JPUSHService.h new file mode 100644 index 0000000..2009792 --- /dev/null +++ b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64/Headers/JPUSHService.h @@ -0,0 +1,956 @@ +/* + * | | | | \ \ / / | | | | / _______| + * | |____| | \ \/ / | |____| | / / + * | |____| | \ / | |____| | | | _____ + * | | | | / \ | | | | | | |____ | + * | | | | / /\ \ | | | | \ \______| | + * | | | | /_/ \_\ | | | | \_________| + * + * Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved. + */ + +#define JPUSH_VERSION_NUMBER 5.3.0 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class CLRegion; +@class UILocalNotification; +@class CLLocation; +@class UNNotificationCategory; +@class UNNotificationSettings; +@class UNNotificationRequest; +@class UNNotification; +@class UIView; +@protocol JPUSHRegisterDelegate; +@protocol JPUSHGeofenceDelegate; +@protocol JPUSHNotiInMessageDelegate; +@protocol JPUSHInAppMessageDelegate; + +typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq); +typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq, BOOL isBind); +typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *_Nullable iAlias, NSInteger seq); +typedef void (^JPUSHPropertiesOperationCompletion)(NSInteger iResCode, NSDictionary *_Nullable properties, NSInteger seq); +typedef void (^JPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *_Nullable iLiveActivityId, NSData * _Nullable pushToken, NSInteger seq); + +extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中 +extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接 +extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接 +extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功 +extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败 +extern NSString *const kJPFNetworkDidLoginNotification; // 登录成功 +extern NSString *const kJPFNetworkDidReceiveMessageNotification; // 收到消息(非APNS) +extern NSString *const kJPFServiceErrorNotification; // 错误提示 + +typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) { + JPAuthorizationOptionNone = 0, // the application may not present any UI upon a notification being received + JPAuthorizationOptionBadge = (1 << 0), // the application may badge its icon upon a notification being received + JPAuthorizationOptionSound = (1 << 1), // the application may play a sound upon a notification being received + JPAuthorizationOptionAlert = (1 << 2), // the application may display an alert upon a notification being received + JPAuthorizationOptionCarPlay = (1 << 3), // The ability to display notifications in a CarPlay environment. + JPAuthorizationOptionCriticalAlert NS_AVAILABLE_IOS(12.0) = (1 << 4) , //The ability to play sounds for critical alerts. + JPAuthorizationOptionProvidesAppNotificationSettings NS_AVAILABLE_IOS(12.0) = (1 << 5) , //An option indicating the system should display a button for in-app notification settings. + JPAuthorizationOptionProvisional NS_AVAILABLE_IOS(12.0) = (1 << 6) , //The ability to post noninterrupting notifications provisionally to the Notification Center. + JPAuthorizationOptionAnnouncement NS_AVAILABLE_IOS(13.0) = (1 << 7) , //The ability for Siri to automatically read out messages over AirPods. +}; + +typedef NS_ENUM(NSUInteger, JPAuthorizationStatus) { + JPAuthorizationNotDetermined = 0, // The user has not yet made a choice regarding whether the application may post user notifications. + JPAuthorizationStatusDenied, // The application is not authorized to post user notifications. + JPAuthorizationStatusAuthorized, // The application is authorized to post user notifications. + JPAuthorizationStatusProvisional NS_AVAILABLE_IOS(12.0), // The application is authorized to post non-interruptive user notifications. +}; + +/*! + * 通知注册实体类 + */ +@interface JPUSHRegisterEntity : NSObject + +/*! + * 支持的类型 + * badge,sound,alert + */ +@property (nonatomic, assign) NSInteger types; +/*! + * 注入的类别 + * iOS10 UNNotificationCategory + * iOS8-iOS9 UIUserNotificationCategory + */ +@property (nonatomic, strong, nullable) NSSet *categories; +@end + +/*! + * 进行删除、查找推送实体类 + */ +@interface JPushNotificationIdentifier : NSObject + +@property (nonatomic, copy, nullable) NSArray * identifiers; // 推送的标识数组 +@property (nonatomic, copy, nullable) UILocalNotification * notificationObj NS_DEPRECATED_IOS(4_0, 10_0); // iOS10以下可以传UILocalNotification对象数据,iOS10以上无效 +@property (nonatomic, assign) BOOL delivered NS_AVAILABLE_IOS(10_0); // 在通知中心显示的或待推送的标志,默认为NO,YES表示在通知中心显示的,NO表示待推送的 +@property (nonatomic, copy, nullable) void (^findCompletionHandler)(NSArray * _Nullable results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组) + +@end + +/*! + * 推送通知声音实体类 + * iOS10以上有效 + */ +@interface JPushNotificationSound : NSObject +@property (nonatomic, copy, nullable) NSString *soundName; //普通通知铃声 +@property (nonatomic, copy, nullable) NSString *criticalSoundName NS_AVAILABLE_IOS(12.0); //警告通知铃声 +@property (nonatomic, assign) float criticalSoundVolume NS_AVAILABLE_IOS(12.0); //警告通知铃声音量,有效值在0~1之间,默认为1 +@end + + +/*! + * 推送内容实体类 + */ +@interface JPushNotificationContent : NSObject + +@property (nonatomic, copy) NSString *title; // 推送标题 +@property (nonatomic, copy) NSString *subtitle; // 推送副标题 +@property (nonatomic, copy) NSString *body; // 推送内容 +@property (nonatomic, copy, nullable) NSNumber *badge; // 角标的数字。如果不需要改变角标传@(-1) +@property (nonatomic, copy) NSString *action NS_DEPRECATED_IOS(8_0, 10_0); // 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动",iOS10以上无效) +@property (nonatomic, copy) NSString *categoryIdentifier; // 行为分类标识 +@property (nonatomic, copy) NSDictionary *userInfo; // 本地推送时可以设置userInfo来增加附加信息,远程推送时设置的payload推送内容作为此userInfo +@property (nonatomic, copy, nullable) NSString *sound; // 声音名称,不设置则为默认声音 +@property (nonatomic, copy, nullable) JPushNotificationSound *soundSetting NS_AVAILABLE_IOS(10.0); //推送声音实体 +@property (nonatomic, copy) NSArray *attachments NS_AVAILABLE_IOS(10_0); // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型 +@property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组 +@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0); // 启动图片名,iOS10以上有效,从推送启动时将会用到 +@property (nonatomic, copy) NSString *summaryArgument NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的部分参数。iOS12以上有效。 +@property (nonatomic, assign) NSUInteger summaryArgumentCount NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的项目数。iOS12以上有效。 +@property (nonatomic, copy, nullable) NSString *targetContentIdentifier NS_AVAILABLE_IOS(13.0); // An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification. +//iOS15以上的新增属性 interruptionLevel为枚举UNNotificationInterruptionLevel +// The interruption level determines the degree of interruption associated with the notification +@property (nonatomic, assign) NSUInteger interruptionLevel NS_AVAILABLE_IOS(15.0); +// Relevance score determines the sorting for the notification across app notifications. The expected range is between 0.0f and 1.0f. +@property (nonatomic, assign) double relevanceScore NS_AVAILABLE_IOS(15.0); +// iOS16以上的新增属性 +@property (nonatomic, copy, nullable) NSString * filterCriteria NS_AVAILABLE_IOS(16.0); // default nil + +@end + + +/*! + * 推送触发方式实体类 + * 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数 + */ +@interface JPushNotificationTrigger : NSObject + +@property (nonatomic, assign) BOOL repeat; // 设置是否重复,默认为NO +@property (nonatomic, copy) NSDate *fireDate NS_DEPRECATED_IOS(2_0, 10_0); // 用来设置触发推送的时间,iOS10以上无效 +@property (nonatomic, copy) CLRegion *region NS_AVAILABLE_IOS(8_0); // 用来设置触发推送的位置,iOS8以上有效,iOS10以上优先级为I,应用需要有允许使用定位的授权 +@property (nonatomic, copy) NSDateComponents *dateComponents NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的日期时间,iOS10以上有效,优先级为II +@property (nonatomic, assign) NSTimeInterval timeInterval NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的时间,iOS10以上有效,优先级为III + +@end + +/*! + * 注册或更新推送实体类 + */ +@interface JPushNotificationRequest : NSObject + +@property (nonatomic, copy) NSString *requestIdentifier; // 推送请求标识 +@property (nonatomic, copy) JPushNotificationContent *content; // 设置推送的具体内容 +@property (nonatomic, copy) JPushNotificationTrigger *trigger; // 设置推送的触发方式 +@property (nonatomic, copy, nullable) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil + +@end + + +/*! + * 应用内消息内容实体 + */ +@interface JPushInAppMessage : NSObject + +@property (nonatomic, copy) NSString *mesageId; // 消息id +@property (nonatomic, copy) NSString *title; // 标题 +@property (nonatomic, copy) NSString *content; // 内容 +@property (nonatomic, strong) NSArray *target; // 目标页面 +@property (nonatomic, copy) NSString *clickAction; // 跳转地址 +@property (nonatomic, strong) NSDictionary *extras; // 附加字段 + +@end + +@interface JPushCollectControl : NSObject + +/* gps 经纬度信息。设置为NO,不采集经纬度信息。默认为YES。 */ +@property (nonatomic, assign) BOOL gps; + +@end + +/*! + * JPush 核心头文件 + */ +@interface JPUSHService : NSObject + + +///---------------------------------------------------- +/// @name Setup 启动相关 +///---------------------------------------------------- + + +/*! + * @abstract 启动SDK + * + * @param launchingOption 启动参数. + * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识. + * @param channel 发布渠道. 可选. + * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES. + * App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致. + * + * @discussion 提供SDK启动必须的参数, 来启动 SDK. + * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作. + */ ++ (void)setupWithOption:(nullable NSDictionary *)launchingOption + appKey:(NSString *)appKey + channel:(nullable NSString *)channel + apsForProduction:(BOOL)isProduction; + +/*! + * @abstract 启动SDK + * + * @param launchingOption 启动参数. + * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识. + * @param channel 发布渠道. 可选. + * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES. + * App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致. + * @param advertisingId 广告标识符(IDFA) 如果不需要使用IDFA,传nil. + * + * @discussion 提供SDK启动必须的参数, 来启动 SDK. + * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作. + */ ++ (void)setupWithOption:(nullable NSDictionary *)launchingOption + appKey:(NSString *)appKey + channel:(nullable NSString *)channel + apsForProduction:(BOOL)isProduction + advertisingIdentifier:(nullable NSString *)advertisingId; + + +///---------------------------------------------------- +/// @name APNs about 通知相关 +///---------------------------------------------------- + +/*! + * @abstract 注册要处理的远程通知类型 + * + * @param types 通知类型 + * @param categories 类别组 + * + */ ++ (void)registerForRemoteNotificationTypes:(NSUInteger)types + categories:(nullable NSSet *)categories; +/*! + * @abstract 新版本的注册方法(兼容iOS10) + * + * @param config 注册通知配置 + * @param delegate 代理 + * + */ ++ (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(nullable id)delegate; + + ++ (void)registerDeviceToken:(NSData *)deviceToken; + +/*! + * @abstract 注册liveActivity并上报其pushToken + * 在pushToken有变化的时候同步调用该接口。 + * 在liveActivity结束的时候,请同步调用该接口,pushToken传nil + * + * @param liveActivityId 标识某一个liveActivity + * @param pushToken 对应该liveActivity的pushToken,如有更新,请及时调用该方法更新pushToken + * @param completion 响应回调 + * @param seq 请求序列号 + */ ++ (void)registerLiveActivity:(NSString *)liveActivityId + pushToken:(nullable NSData *)pushToken + completion:(nullable JPUSHLiveActivityTokenCompletion)completion + seq:(NSInteger)seq; + +/*! + * @abstract 处理收到的 APNs 消息 + */ ++ (void)handleRemoteNotification:(NSDictionary *)remoteInfo; + +/*! + * @abstract 向极光服务器提交Token + * + * @param voipToken 推送使用的Voip Token + */ ++ (void)registerVoipToken:(NSData *)voipToken; + + +/*! + * @abstract 处理收到的 Voip 消息 + * + * @param remoteInfo 下发的 Voip 内容 + */ ++ (void)handleVoipNotification:(NSDictionary *)remoteInfo; + + +/*! +* @abstract 检测通知授权状态 +* @param completion 授权结果通过status值返回,详见JPAuthorizationStatus +*/ ++ (void)requestNotificationAuthorization:(nullable void (^)(JPAuthorizationStatus status))completion; + +/*! +* @abstract 跳转至系统设置页面,iOS8及以上有效 +*/ ++ (void)openSettingsForNotification:(nullable void (^)(BOOL success))completionHandler NS_AVAILABLE_IOS(8_0); + +/*! + * Tags操作接口 + * 支持增加/覆盖/删除/清空/查询操作 + * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) + */ + +/** + 增加tags + + @param tags 需要增加的tags集合 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)addTags:(NSSet *)tags + completion:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 覆盖tags + 调用该接口会覆盖用户所有的tags + + @param tags 需要设置的tags集合 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)setTags:(NSSet *)tags + completion:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 删除指定tags + + @param tags 需要删除的tags集合 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)deleteTags:(NSSet *)tags + completion:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 清空所有tags + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)cleanTags:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 查询全部tags + + @param completion 响应回调,请在回调中获取查询结果 + @param seq 请求序列号 + */ ++ (void)getAllTags:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 验证tag是否绑定 + + @param completion 响应回调,回调中查看是否绑定 + @param seq 请求序列号 + */ ++ (void)validTag:(NSString *)tag + completion:(nullable JPUSHTagValidOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 设置Alias + + @param alias 需要设置的alias + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)setAlias:(NSString *)alias + completion:(nullable JPUSHAliasOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 删除alias + + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)deleteAlias:(nullable JPUSHAliasOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 查询当前alias + + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)getAlias:(nullable JPUSHAliasOperationCompletion)completion + seq:(NSInteger)seq; + + +/*! + * @abstract 过滤掉无效的 tags + * + * @discussion 如果 tags 数量超过限制数量, 则返回靠前的有效的 tags. + * 建议设置 tags 前用此接口校验. SDK 内部也会基于此接口来做过滤. + */ ++ (NSSet *)filterValidTags:(NSSet *)tags; + + +/*! + * Property操作接口 + * 支持增加/删除/清空操作 + * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) + */ + +/** + 新增/更新用户属性 + + 如果某个用户属性之前已经存在了,则会更新;不存在,则会新增 + + @param properties 需要新增或者更新的的用户属性内容,类型为NSDictionary; + Key 为用户属性名称,类型必须是 NSString 类型;Value为用户属性值,只支持 NSString、NSNumber、NSDate类型,如果属性为BOOL类型,传值时请转成NSNumber类型 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)setProperties:(NSDictionary *)properties + completion:(nullable JPUSHPropertiesOperationCompletion)completion + seq:(NSInteger)seq; + + +/** + 删除指定属性 + + @param keys 需要删除的属性名称集合 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)deleteProperties:(NSSet *)keys + completion:(nullable JPUSHPropertiesOperationCompletion)completion + seq:(NSInteger)seq; + + +/** + 清空所有属性 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)cleanProperties:(nullable JPUSHPropertiesOperationCompletion)completion + seq:(NSInteger)seq; + + +/*! + * 应用内消息接口 + * 使用应用内消息需要配置以下两个接口。请在进入页面和离开页面的时候相应地配置。以下两个接口请配套调用。 + */ + +/** + 进入页面 + + 请与 + (void)pageLeave:(NSString *)pageName; 方法配套使用 + + @param pageName 页面名 + @discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。 + */ ++ (void)pageEnterTo:(NSString *)pageName; + + +/** + 离开页面 + + 请与 + (void)pageEnterTo:(NSString *)pageName;方法配套使用 + + @param pageName 页面名 + @discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。 + */ ++ (void)pageLeave:(NSString *)pageName; + + +/*! +* @abstract 设置应用内消息的代理 +* +* @discussion 遵守JPUSHInAppMessageDelegate的代理对象 +* +*/ ++ (void)setInAppMessageDelegate:(id)inAppMessageDelegate; + + +///---------------------------------------------------- +/// @name Stats 统计功能 +///---------------------------------------------------- + +/*! + * @abstract 开始记录页面停留 + * + * @param pageName 页面名称 + * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics + */ ++ (void)startLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期"))); + +/*! + * @abstract 停止记录页面停留 + * + * @param pageName 页面 + * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics + */ ++ (void)stopLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期"))); + +/*! + * @abstract 直接上报在页面的停留时间 + * + * @param pageName 页面 + * @param seconds 停留的秒数 + * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics + */ ++ (void)beginLogPageView:(NSString *)pageName duration:(int)seconds __attribute__((deprecated("JCore 1.1.8 版本已过期"))); + +/*! + * @abstract 开启Crash日志收集 + * + * @discussion 默认是关闭状态. + */ ++ (void)crashLogON; + +/*! + * @abstract 地理位置上报 + * + * @param latitude 纬度. + * @param longitude 经度. + * + */ ++ (void)setLatitude:(double)latitude longitude:(double)longitude; + +/*! + * @abstract 地理位置上报 + * + * @param location 直接传递 CLLocation * 型的地理信息 + * + * @discussion 需要链接 CoreLocation.framework 并且 #import + */ ++ (void)setLocation:(CLLocation *)location; + +/** + 设置地理围栏的最大个数 + 默认值为 10 ,iOS系统默认地理围栏最大个数为20 + @param count 个数 count + */ ++ (void)setGeofeneceMaxCount:(NSInteger)count; + +/** + 设置地理围栏'圈内'类型的检测周期 + 默认15分钟检测一次 + */ ++ (void)setGeofenecePeriodForInside:(NSInteger)seconds; + +/** + 注册地理围栏的代理 + + @param delegate 代理 + @param launchOptions app启动完成是收到的字段参数 + */ ++ (void)registerLbsGeofenceDelegate:(id)delegate withLaunchOptions:(nullable NSDictionary *)launchOptions; + +/** + 删除地理围栏 + + @param geofenceId 地理围栏id + */ ++ (void)removeGeofenceWithIdentifier:(NSString *)geofenceId; + +///---------------------------------------------------- +/// @name Local Notification 本地通知 +///---------------------------------------------------- +/*! + * @abstract 注册或更新推送 (支持iOS10,并兼容iOS10以下版本) + * + * JPush 2.1.9新接口 + * @param request JPushNotificationRequest类型,设置推送的属性,设置已有推送的request.requestIdentifier即更新已有的推送,否则为注册新推送,更新推送仅仅在iOS10以上有效,结果通过request.completionHandler返回 + * @discussion 旧的注册本地推送接口被废弃,使用此接口可以替换 + * + */ ++ (void)addNotification:(JPushNotificationRequest *)request; + +/*! + * @abstract 移除推送 (支持iOS10,并兼容iOS10以下版本) + * + * JPush 2.1.9新接口 + * @param identifier JPushNotificationIdentifier类型,iOS10以上identifier设置为nil,则移除所有在通知中心显示推送和待推送请求,也可以通过设置identifier.delivered和identifier.identifiers来移除相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则移除相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier设置为nil,则移除所有推送,identifier.delivered属性无效,另外可以通过identifier.notificationObj传入特定推送对象来移除此推送。 + * @discussion 旧的所有删除推送接口被废弃,使用此接口可以替换 + * + */ ++ (void)removeNotification:(nullable JPushNotificationIdentifier *)identifier; + +/*! + * @abstract 查找推送 (支持iOS10,并兼容iOS10以下版本) + * + * JPush 2.1.9新接口 + * @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有未触发的推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。 + * @discussion 旧的查找推送接口被废弃,使用此接口可以替换 + * + */ ++ (void)findNotification:(JPushNotificationIdentifier *)identifier; + +/*! + * @abstract 本地推送,最多支持64个 + * + * @param fireDate 本地推送触发的时间 + * @param alertBody 本地推送需要显示的内容 + * @param badge 角标的数字。如果不需要改变角标传-1 + * @param alertAction 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动") + * @param notificationKey 本地推送标示符 + * @param userInfo 自定义参数,可以用来标识推送和增加附加信息 + * @param soundName 自定义通知声音,设置为nil为默认声音 + * + * @discussion 最多支持 64 个定义,此方法被[addNotification:]方法取代 + */ ++ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate + alertBody:(NSString *)alertBody + badge:(int)badge + alertAction:(NSString *)alertAction + identifierKey:(NSString *)notificationKey + userInfo:(NSDictionary *)userInfo + soundName:(NSString *)soundName __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 本地推送 (支持 iOS8 新参数) + * + * IOS8新参数 + * @param region 自定义参数 + * @param regionTriggersOnce 自定义参数 + * @param category 自定义参数 + * @discussion 此方法被[addNotification:]方法取代 + */ ++ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate + alertBody:(NSString *)alertBody + badge:(int)badge + alertAction:(NSString *)alertAction + identifierKey:(NSString *)notificationKey + userInfo:(NSDictionary *)userInfo + soundName:(NSString *)soundName + region:(CLRegion *)region + regionTriggersOnce:(BOOL)regionTriggersOnce + category:(NSString *)category NS_AVAILABLE_IOS(8_0) __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 前台展示本地推送 + * + * @param notification 本地推送对象 + * @param notificationKey 需要前台显示的本地推送通知的标示符 + * + * @discussion 默认App在前台运行时不会进行弹窗,在程序接收通知调用此接口可实现指定的推送弹窗。--iOS10以下还可继续使用,iOS10以上在[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]方法中调用completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);即可 + */ ++ (void)showLocalNotificationAtFront:(UILocalNotification *)notification + identifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); +/*! + * @abstract 删除本地推送定义 + * + * @param notificationKey 本地推送标示符 + * @discussion 此方法被[removeNotification:]方法取代 + */ ++ (void)deleteLocalNotificationWithIdentifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 删除本地推送定义 + * @discussion 此方法被[removeNotification:]方法取代 + */ ++ (void)deleteLocalNotification:(UILocalNotification *)localNotification __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 获取指定通知 + * + * @param notificationKey 本地推送标示符 + * @return 本地推送对象数组, [array count]为0时表示没找到 + * @discussion 此方法被[findNotification:]方法取代 + */ ++ (NSArray *)findLocalNotificationWithIdentifier:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 清除所有本地推送对象 + * @discussion 此方法被[removeNotification:]方法取代 + */ ++ (void)clearAllLocalNotifications __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + + +///---------------------------------------------------- +/// @name Server badge 服务器端 badge 功能 +///---------------------------------------------------- + +/*! + * @abstract 设置角标(到服务器) + * + * @param value 新的值. 会覆盖服务器上保存的值(这个用户) + * + * @discussion 本接口不会改变应用本地的角标值. + * 本地仍须调用 UIApplication:setApplicationIconBadgeNumber 函数来设置脚标. + * + * 本接口用于配合 JPush 提供的服务器端角标功能. + * 该功能解决的问题是, 服务器端推送 APNs 时, 并不知道客户端原来已经存在的角标是多少, 指定一个固定的数字不太合理. + * + * JPush 服务器端脚标功能提供: + * + * - 通过本 API 把当前客户端(当前这个用户的) 的实际 badge 设置到服务器端保存起来; + * - 调用服务器端 API 发 APNs 时(通常这个调用是批量针对大量用户), + * 使用 "+1" 的语义, 来表达需要基于目标用户实际的 badge 值(保存的) +1 来下发通知时带上新的 badge 值; + */ ++ (BOOL)setBadge:(NSInteger)value; + +/*! + * @abstract 重置脚标(为0) + * + * @discussion 相当于 [setBadge:0] 的效果. + * 参考 [JPUSHService setBadge:] 说明来理解其作用. + */ ++ (void)resetBadge; + +///---------------------------------------------------- +/// @name Other Feature 其他功能 +///---------------------------------------------------- + +/*! + * @abstract 设置手机号码(到服务器) + * + * @param mobileNumber 手机号码. 会与用户信息一一对应。可为空,为空则清除号码 + * @param completion 响应回调。成功则error为空,失败则error带有错误码及错误信息 + * + * @discussion 设置手机号码后,可实现“推送不到短信到”的通知方式,提高推送达到率。结果信息通过completion异步返回,也可将completion设置为nil不处理结果信息。 + * + */ ++ (void)setMobileNumber:(NSString *)mobileNumber completion:(nullable void (^)(NSError *error))completion; + +///---------------------------------------------------- +/// @name Logs and others 日志与其他 +///---------------------------------------------------- + +/*! + * @abstract JPush标识此设备的 registrationID + * + * @discussion SDK注册成功后, 调用此接口获取到 registrationID 才能够获取到. + * + * JPush 支持根据 registrationID 来进行推送. + * 如果你需要此功能, 应该通过此接口获取到 registrationID 后, 上报到你自己的服务器端, 并保存下来. + * registrationIDCompletionHandler:是新增的获取registrationID的方法,需要在block中获取registrationID,resCode为返回码,模拟器调用此接口resCode返回1011,registrationID返回nil. + * 更多的理解请参考 JPush 的文档网站. + */ ++ (NSString *)registrationID; + ++ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString * _Nullable registrationID))completionHandler; + +/*! + * @abstract 打开日志级别到 Debug + * + * @discussion JMessage iOS 的日志系统参考 Android 设计了级别. + * 从低到高是: Verbose, Debug, Info, Warning, Error. + * 对日志级别的进一步理解, 请参考 Android 相关的说明. + * + * SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志. + * + * 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志. + */ ++ (void)setDebugMode; + +/*! + * @abstract 关闭日志 + * + * @discussion 关于日志级别的说明, 参考 [JPUSHService setDebugMode] + * + * 虽说是关闭日志, 但还是会打印 Warning, Error 日志. 这二种日志级别, 在程序运行正常时, 不应有打印输出. + * + * 建议在发布的版本里, 调用此接口, 关闭掉日志打印. + */ ++ (void)setLogOFF; + +/*! + 数据采集控制 + + @param control 数据采集配置。 + */ ++ (void)setCollectControl:(JPushCollectControl *)control; + +/*! + * @abstract 设置SDK地理位置权限开关 + * + * @discussion 关闭地理位置之后,SDK地理围栏的相关功能将受到影响,默认是开启。 + * + */ ++ (void)setLocationEanable:(BOOL)isEanble; + +/*! + * @abstract 设置PUSH开关 + * + * @discussion 关闭PUSH之后,将接收不到极光通知推送、自定义消息推送、liveActivity消息推送,默认是开启。 + * + */ ++ (void)setPushEnable:(BOOL)isEnable completion:(nullable void (^)(NSInteger iResCode))completion; + + +/*! +* @abstract 设置应用内提醒消息的代理 +* +* @discussion 遵守JPushNotiInMessageDelegate的代理对象 +* +*/ ++ (void)setNotiInMessageDelegate:(id)notiInMessageDelegate; + + + +///---------------------------------------------------- +///********************下列方法已过期******************** +///**************请使用新版tag/alias操作接口************** +///---------------------------------------------------- +/// @name Tag alias setting 设置别名与标签 +///---------------------------------------------------- + +/*! + * 下面的接口是可选的 + * 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) + * setTags:alias:fetchCompletionHandle:是新的设置标签别名的方法,不再需要显示声明回调函数,只需要在block里面处理设置结果即可. + * WARN: 使用block时需要注意循环引用问题 + */ ++ (void) setTags:(NSSet *)tags + alias:(NSString *)alias +callbackSelector:(SEL)cbSelector + target:(id)theTarget __attribute__((deprecated("JPush 2.1.1 版本已过期"))); ++ (void) setTags:(NSSet *)tags + alias:(NSString *)alias +callbackSelector:(SEL)cbSelector + object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); ++ (void) setTags:(NSSet *)tags +callbackSelector:(SEL)cbSelector + object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); ++ (void)setTags:(NSSet *)tags + alias:(NSString *)alias +fetchCompletionHandle:(void (^)(int iResCode, NSSet *iTags, NSString *iAlias))completionHandler __attribute__((deprecated("JPush 3.0.6 版本已过期"))); ++ (void) setTags:(NSSet *)tags +aliasInbackground:(NSString *)alias __attribute__((deprecated("JPush 3.0.6 版本已过期"))); ++ (void)setAlias:(NSString *)alias +callbackSelector:(SEL)cbSelector + object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); + +@end + +@class UNUserNotificationCenter; +@class UNNotificationResponse; + +@protocol JPUSHRegisterDelegate + +/* + * @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:] + * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 + * @param notification 前台得到的的通知对象 + * @param completionHandler 该callback中的options 请使用UNNotificationPresentationOptions + */ +- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger options))completionHandler; +/* + * @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:] + * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 + * @param response 通知响应对象 + * @param completionHandler + */ +- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler; + +/* + * @brief handle UserNotifications.framework [openSettingsForNotification:] + * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 + * @param notification 当前管理的通知对象 + */ +- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification NS_AVAILABLE_IOS(12.0); + +/** + * 监测通知授权状态返回的结果 + * @param status 授权通知状态,详见JPAuthorizationStatus + * @param info 更多信息,预留参数 + */ +- (void)jpushNotificationAuthorization:(JPAuthorizationStatus)status withInfo:(nullable NSDictionary *)info; + +@end + +@protocol JPUSHGeofenceDelegate +/** + 触发地理围栏 + @param geofence 地理围栏触发时返回的信息 + @param error 错误信息 + */ +- (void)jpushGeofenceRegion:(nullable NSDictionary *)geofence + error:(nullable NSError *)error; + +/** + 拉取地理围栏列表的回调 + + @param geofenceList 地理围栏列表 + */ +- (void)jpushCallbackGeofenceReceived:(nullable NSArray *)geofenceList; + +/** + 进入地理围栏区域 + + @param geofenceId 地理围栏id + @param userInfo 地理围栏触发时返回的信息 + @param error 错误信息 + */ +- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didEnterRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期"))); + +/** + 离开地理围栏区域 + + @param geofenceId 地理围栏id + @param userInfo 地理围栏触发时返回的信息 + @param error 错误信息 + */ +- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didExitRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期"))); + +@end + + +@protocol JPUSHNotiInMessageDelegate + +/** + 应用内提醒消息展示的回调 + + @param content 应用内提醒消息的内容 + + */ +- (void)jPushNotiInMessageDidShowWithContent:(NSDictionary *)content; + +/** + 应用内提醒消息点击的回调 + + @param content 应用内提醒消息的内容 + + */ +- (void)jPushNotiInMessageDidClickWithContent:(NSDictionary *)content; + +@end + + +@protocol JPUSHInAppMessageDelegate + +/** + 应用内消息展示的回调 + + @param inAppMessage 应用内消息的内容 + + */ +- (void)jPushInAppMessageDidShow:(JPushInAppMessage *)inAppMessage; + +/** + 应用内消息点击的回调 + + @param inAppMessage 应用内消息的内容 + + */ +- (void)jPushInAppMessageDidClick:(JPushInAppMessage *)inAppMessage; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/jpush-ios-5.3.0.xcframework/ios-arm64/PrivacyInfo.xcprivacy b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..e2920ec --- /dev/null +++ b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64/PrivacyInfo.xcprivacy @@ -0,0 +1,23 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + + + + diff --git a/Libs/jpush-ios-5.3.0.xcframework/ios-arm64/libJPush.a b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64/libJPush.a new file mode 100644 index 0000000..8dbd94f Binary files /dev/null and b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64/libJPush.a differ diff --git a/Libs/jpush-ios-5.3.0.xcframework/ios-arm64_x86_64-simulator/Headers/JPUSHService.h b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64_x86_64-simulator/Headers/JPUSHService.h new file mode 100644 index 0000000..2009792 --- /dev/null +++ b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64_x86_64-simulator/Headers/JPUSHService.h @@ -0,0 +1,956 @@ +/* + * | | | | \ \ / / | | | | / _______| + * | |____| | \ \/ / | |____| | / / + * | |____| | \ / | |____| | | | _____ + * | | | | / \ | | | | | | |____ | + * | | | | / /\ \ | | | | \ \______| | + * | | | | /_/ \_\ | | | | \_________| + * + * Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved. + */ + +#define JPUSH_VERSION_NUMBER 5.3.0 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class CLRegion; +@class UILocalNotification; +@class CLLocation; +@class UNNotificationCategory; +@class UNNotificationSettings; +@class UNNotificationRequest; +@class UNNotification; +@class UIView; +@protocol JPUSHRegisterDelegate; +@protocol JPUSHGeofenceDelegate; +@protocol JPUSHNotiInMessageDelegate; +@protocol JPUSHInAppMessageDelegate; + +typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq); +typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq, BOOL isBind); +typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *_Nullable iAlias, NSInteger seq); +typedef void (^JPUSHPropertiesOperationCompletion)(NSInteger iResCode, NSDictionary *_Nullable properties, NSInteger seq); +typedef void (^JPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *_Nullable iLiveActivityId, NSData * _Nullable pushToken, NSInteger seq); + +extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中 +extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接 +extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接 +extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功 +extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败 +extern NSString *const kJPFNetworkDidLoginNotification; // 登录成功 +extern NSString *const kJPFNetworkDidReceiveMessageNotification; // 收到消息(非APNS) +extern NSString *const kJPFServiceErrorNotification; // 错误提示 + +typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) { + JPAuthorizationOptionNone = 0, // the application may not present any UI upon a notification being received + JPAuthorizationOptionBadge = (1 << 0), // the application may badge its icon upon a notification being received + JPAuthorizationOptionSound = (1 << 1), // the application may play a sound upon a notification being received + JPAuthorizationOptionAlert = (1 << 2), // the application may display an alert upon a notification being received + JPAuthorizationOptionCarPlay = (1 << 3), // The ability to display notifications in a CarPlay environment. + JPAuthorizationOptionCriticalAlert NS_AVAILABLE_IOS(12.0) = (1 << 4) , //The ability to play sounds for critical alerts. + JPAuthorizationOptionProvidesAppNotificationSettings NS_AVAILABLE_IOS(12.0) = (1 << 5) , //An option indicating the system should display a button for in-app notification settings. + JPAuthorizationOptionProvisional NS_AVAILABLE_IOS(12.0) = (1 << 6) , //The ability to post noninterrupting notifications provisionally to the Notification Center. + JPAuthorizationOptionAnnouncement NS_AVAILABLE_IOS(13.0) = (1 << 7) , //The ability for Siri to automatically read out messages over AirPods. +}; + +typedef NS_ENUM(NSUInteger, JPAuthorizationStatus) { + JPAuthorizationNotDetermined = 0, // The user has not yet made a choice regarding whether the application may post user notifications. + JPAuthorizationStatusDenied, // The application is not authorized to post user notifications. + JPAuthorizationStatusAuthorized, // The application is authorized to post user notifications. + JPAuthorizationStatusProvisional NS_AVAILABLE_IOS(12.0), // The application is authorized to post non-interruptive user notifications. +}; + +/*! + * 通知注册实体类 + */ +@interface JPUSHRegisterEntity : NSObject + +/*! + * 支持的类型 + * badge,sound,alert + */ +@property (nonatomic, assign) NSInteger types; +/*! + * 注入的类别 + * iOS10 UNNotificationCategory + * iOS8-iOS9 UIUserNotificationCategory + */ +@property (nonatomic, strong, nullable) NSSet *categories; +@end + +/*! + * 进行删除、查找推送实体类 + */ +@interface JPushNotificationIdentifier : NSObject + +@property (nonatomic, copy, nullable) NSArray * identifiers; // 推送的标识数组 +@property (nonatomic, copy, nullable) UILocalNotification * notificationObj NS_DEPRECATED_IOS(4_0, 10_0); // iOS10以下可以传UILocalNotification对象数据,iOS10以上无效 +@property (nonatomic, assign) BOOL delivered NS_AVAILABLE_IOS(10_0); // 在通知中心显示的或待推送的标志,默认为NO,YES表示在通知中心显示的,NO表示待推送的 +@property (nonatomic, copy, nullable) void (^findCompletionHandler)(NSArray * _Nullable results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组) + +@end + +/*! + * 推送通知声音实体类 + * iOS10以上有效 + */ +@interface JPushNotificationSound : NSObject +@property (nonatomic, copy, nullable) NSString *soundName; //普通通知铃声 +@property (nonatomic, copy, nullable) NSString *criticalSoundName NS_AVAILABLE_IOS(12.0); //警告通知铃声 +@property (nonatomic, assign) float criticalSoundVolume NS_AVAILABLE_IOS(12.0); //警告通知铃声音量,有效值在0~1之间,默认为1 +@end + + +/*! + * 推送内容实体类 + */ +@interface JPushNotificationContent : NSObject + +@property (nonatomic, copy) NSString *title; // 推送标题 +@property (nonatomic, copy) NSString *subtitle; // 推送副标题 +@property (nonatomic, copy) NSString *body; // 推送内容 +@property (nonatomic, copy, nullable) NSNumber *badge; // 角标的数字。如果不需要改变角标传@(-1) +@property (nonatomic, copy) NSString *action NS_DEPRECATED_IOS(8_0, 10_0); // 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动",iOS10以上无效) +@property (nonatomic, copy) NSString *categoryIdentifier; // 行为分类标识 +@property (nonatomic, copy) NSDictionary *userInfo; // 本地推送时可以设置userInfo来增加附加信息,远程推送时设置的payload推送内容作为此userInfo +@property (nonatomic, copy, nullable) NSString *sound; // 声音名称,不设置则为默认声音 +@property (nonatomic, copy, nullable) JPushNotificationSound *soundSetting NS_AVAILABLE_IOS(10.0); //推送声音实体 +@property (nonatomic, copy) NSArray *attachments NS_AVAILABLE_IOS(10_0); // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型 +@property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组 +@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0); // 启动图片名,iOS10以上有效,从推送启动时将会用到 +@property (nonatomic, copy) NSString *summaryArgument NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的部分参数。iOS12以上有效。 +@property (nonatomic, assign) NSUInteger summaryArgumentCount NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的项目数。iOS12以上有效。 +@property (nonatomic, copy, nullable) NSString *targetContentIdentifier NS_AVAILABLE_IOS(13.0); // An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification. +//iOS15以上的新增属性 interruptionLevel为枚举UNNotificationInterruptionLevel +// The interruption level determines the degree of interruption associated with the notification +@property (nonatomic, assign) NSUInteger interruptionLevel NS_AVAILABLE_IOS(15.0); +// Relevance score determines the sorting for the notification across app notifications. The expected range is between 0.0f and 1.0f. +@property (nonatomic, assign) double relevanceScore NS_AVAILABLE_IOS(15.0); +// iOS16以上的新增属性 +@property (nonatomic, copy, nullable) NSString * filterCriteria NS_AVAILABLE_IOS(16.0); // default nil + +@end + + +/*! + * 推送触发方式实体类 + * 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数 + */ +@interface JPushNotificationTrigger : NSObject + +@property (nonatomic, assign) BOOL repeat; // 设置是否重复,默认为NO +@property (nonatomic, copy) NSDate *fireDate NS_DEPRECATED_IOS(2_0, 10_0); // 用来设置触发推送的时间,iOS10以上无效 +@property (nonatomic, copy) CLRegion *region NS_AVAILABLE_IOS(8_0); // 用来设置触发推送的位置,iOS8以上有效,iOS10以上优先级为I,应用需要有允许使用定位的授权 +@property (nonatomic, copy) NSDateComponents *dateComponents NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的日期时间,iOS10以上有效,优先级为II +@property (nonatomic, assign) NSTimeInterval timeInterval NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的时间,iOS10以上有效,优先级为III + +@end + +/*! + * 注册或更新推送实体类 + */ +@interface JPushNotificationRequest : NSObject + +@property (nonatomic, copy) NSString *requestIdentifier; // 推送请求标识 +@property (nonatomic, copy) JPushNotificationContent *content; // 设置推送的具体内容 +@property (nonatomic, copy) JPushNotificationTrigger *trigger; // 设置推送的触发方式 +@property (nonatomic, copy, nullable) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil + +@end + + +/*! + * 应用内消息内容实体 + */ +@interface JPushInAppMessage : NSObject + +@property (nonatomic, copy) NSString *mesageId; // 消息id +@property (nonatomic, copy) NSString *title; // 标题 +@property (nonatomic, copy) NSString *content; // 内容 +@property (nonatomic, strong) NSArray *target; // 目标页面 +@property (nonatomic, copy) NSString *clickAction; // 跳转地址 +@property (nonatomic, strong) NSDictionary *extras; // 附加字段 + +@end + +@interface JPushCollectControl : NSObject + +/* gps 经纬度信息。设置为NO,不采集经纬度信息。默认为YES。 */ +@property (nonatomic, assign) BOOL gps; + +@end + +/*! + * JPush 核心头文件 + */ +@interface JPUSHService : NSObject + + +///---------------------------------------------------- +/// @name Setup 启动相关 +///---------------------------------------------------- + + +/*! + * @abstract 启动SDK + * + * @param launchingOption 启动参数. + * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识. + * @param channel 发布渠道. 可选. + * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES. + * App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致. + * + * @discussion 提供SDK启动必须的参数, 来启动 SDK. + * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作. + */ ++ (void)setupWithOption:(nullable NSDictionary *)launchingOption + appKey:(NSString *)appKey + channel:(nullable NSString *)channel + apsForProduction:(BOOL)isProduction; + +/*! + * @abstract 启动SDK + * + * @param launchingOption 启动参数. + * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识. + * @param channel 发布渠道. 可选. + * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES. + * App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致. + * @param advertisingId 广告标识符(IDFA) 如果不需要使用IDFA,传nil. + * + * @discussion 提供SDK启动必须的参数, 来启动 SDK. + * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作. + */ ++ (void)setupWithOption:(nullable NSDictionary *)launchingOption + appKey:(NSString *)appKey + channel:(nullable NSString *)channel + apsForProduction:(BOOL)isProduction + advertisingIdentifier:(nullable NSString *)advertisingId; + + +///---------------------------------------------------- +/// @name APNs about 通知相关 +///---------------------------------------------------- + +/*! + * @abstract 注册要处理的远程通知类型 + * + * @param types 通知类型 + * @param categories 类别组 + * + */ ++ (void)registerForRemoteNotificationTypes:(NSUInteger)types + categories:(nullable NSSet *)categories; +/*! + * @abstract 新版本的注册方法(兼容iOS10) + * + * @param config 注册通知配置 + * @param delegate 代理 + * + */ ++ (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(nullable id)delegate; + + ++ (void)registerDeviceToken:(NSData *)deviceToken; + +/*! + * @abstract 注册liveActivity并上报其pushToken + * 在pushToken有变化的时候同步调用该接口。 + * 在liveActivity结束的时候,请同步调用该接口,pushToken传nil + * + * @param liveActivityId 标识某一个liveActivity + * @param pushToken 对应该liveActivity的pushToken,如有更新,请及时调用该方法更新pushToken + * @param completion 响应回调 + * @param seq 请求序列号 + */ ++ (void)registerLiveActivity:(NSString *)liveActivityId + pushToken:(nullable NSData *)pushToken + completion:(nullable JPUSHLiveActivityTokenCompletion)completion + seq:(NSInteger)seq; + +/*! + * @abstract 处理收到的 APNs 消息 + */ ++ (void)handleRemoteNotification:(NSDictionary *)remoteInfo; + +/*! + * @abstract 向极光服务器提交Token + * + * @param voipToken 推送使用的Voip Token + */ ++ (void)registerVoipToken:(NSData *)voipToken; + + +/*! + * @abstract 处理收到的 Voip 消息 + * + * @param remoteInfo 下发的 Voip 内容 + */ ++ (void)handleVoipNotification:(NSDictionary *)remoteInfo; + + +/*! +* @abstract 检测通知授权状态 +* @param completion 授权结果通过status值返回,详见JPAuthorizationStatus +*/ ++ (void)requestNotificationAuthorization:(nullable void (^)(JPAuthorizationStatus status))completion; + +/*! +* @abstract 跳转至系统设置页面,iOS8及以上有效 +*/ ++ (void)openSettingsForNotification:(nullable void (^)(BOOL success))completionHandler NS_AVAILABLE_IOS(8_0); + +/*! + * Tags操作接口 + * 支持增加/覆盖/删除/清空/查询操作 + * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) + */ + +/** + 增加tags + + @param tags 需要增加的tags集合 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)addTags:(NSSet *)tags + completion:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 覆盖tags + 调用该接口会覆盖用户所有的tags + + @param tags 需要设置的tags集合 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)setTags:(NSSet *)tags + completion:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 删除指定tags + + @param tags 需要删除的tags集合 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)deleteTags:(NSSet *)tags + completion:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 清空所有tags + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)cleanTags:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 查询全部tags + + @param completion 响应回调,请在回调中获取查询结果 + @param seq 请求序列号 + */ ++ (void)getAllTags:(nullable JPUSHTagsOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 验证tag是否绑定 + + @param completion 响应回调,回调中查看是否绑定 + @param seq 请求序列号 + */ ++ (void)validTag:(NSString *)tag + completion:(nullable JPUSHTagValidOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 设置Alias + + @param alias 需要设置的alias + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)setAlias:(NSString *)alias + completion:(nullable JPUSHAliasOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 删除alias + + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)deleteAlias:(nullable JPUSHAliasOperationCompletion)completion + seq:(NSInteger)seq; + +/** + 查询当前alias + + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)getAlias:(nullable JPUSHAliasOperationCompletion)completion + seq:(NSInteger)seq; + + +/*! + * @abstract 过滤掉无效的 tags + * + * @discussion 如果 tags 数量超过限制数量, 则返回靠前的有效的 tags. + * 建议设置 tags 前用此接口校验. SDK 内部也会基于此接口来做过滤. + */ ++ (NSSet *)filterValidTags:(NSSet *)tags; + + +/*! + * Property操作接口 + * 支持增加/删除/清空操作 + * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) + */ + +/** + 新增/更新用户属性 + + 如果某个用户属性之前已经存在了,则会更新;不存在,则会新增 + + @param properties 需要新增或者更新的的用户属性内容,类型为NSDictionary; + Key 为用户属性名称,类型必须是 NSString 类型;Value为用户属性值,只支持 NSString、NSNumber、NSDate类型,如果属性为BOOL类型,传值时请转成NSNumber类型 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)setProperties:(NSDictionary *)properties + completion:(nullable JPUSHPropertiesOperationCompletion)completion + seq:(NSInteger)seq; + + +/** + 删除指定属性 + + @param keys 需要删除的属性名称集合 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)deleteProperties:(NSSet *)keys + completion:(nullable JPUSHPropertiesOperationCompletion)completion + seq:(NSInteger)seq; + + +/** + 清空所有属性 + @param completion 响应回调 + @param seq 请求序列号 + */ ++ (void)cleanProperties:(nullable JPUSHPropertiesOperationCompletion)completion + seq:(NSInteger)seq; + + +/*! + * 应用内消息接口 + * 使用应用内消息需要配置以下两个接口。请在进入页面和离开页面的时候相应地配置。以下两个接口请配套调用。 + */ + +/** + 进入页面 + + 请与 + (void)pageLeave:(NSString *)pageName; 方法配套使用 + + @param pageName 页面名 + @discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。 + */ ++ (void)pageEnterTo:(NSString *)pageName; + + +/** + 离开页面 + + 请与 + (void)pageEnterTo:(NSString *)pageName;方法配套使用 + + @param pageName 页面名 + @discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。 + */ ++ (void)pageLeave:(NSString *)pageName; + + +/*! +* @abstract 设置应用内消息的代理 +* +* @discussion 遵守JPUSHInAppMessageDelegate的代理对象 +* +*/ ++ (void)setInAppMessageDelegate:(id)inAppMessageDelegate; + + +///---------------------------------------------------- +/// @name Stats 统计功能 +///---------------------------------------------------- + +/*! + * @abstract 开始记录页面停留 + * + * @param pageName 页面名称 + * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics + */ ++ (void)startLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期"))); + +/*! + * @abstract 停止记录页面停留 + * + * @param pageName 页面 + * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics + */ ++ (void)stopLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期"))); + +/*! + * @abstract 直接上报在页面的停留时间 + * + * @param pageName 页面 + * @param seconds 停留的秒数 + * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics + */ ++ (void)beginLogPageView:(NSString *)pageName duration:(int)seconds __attribute__((deprecated("JCore 1.1.8 版本已过期"))); + +/*! + * @abstract 开启Crash日志收集 + * + * @discussion 默认是关闭状态. + */ ++ (void)crashLogON; + +/*! + * @abstract 地理位置上报 + * + * @param latitude 纬度. + * @param longitude 经度. + * + */ ++ (void)setLatitude:(double)latitude longitude:(double)longitude; + +/*! + * @abstract 地理位置上报 + * + * @param location 直接传递 CLLocation * 型的地理信息 + * + * @discussion 需要链接 CoreLocation.framework 并且 #import + */ ++ (void)setLocation:(CLLocation *)location; + +/** + 设置地理围栏的最大个数 + 默认值为 10 ,iOS系统默认地理围栏最大个数为20 + @param count 个数 count + */ ++ (void)setGeofeneceMaxCount:(NSInteger)count; + +/** + 设置地理围栏'圈内'类型的检测周期 + 默认15分钟检测一次 + */ ++ (void)setGeofenecePeriodForInside:(NSInteger)seconds; + +/** + 注册地理围栏的代理 + + @param delegate 代理 + @param launchOptions app启动完成是收到的字段参数 + */ ++ (void)registerLbsGeofenceDelegate:(id)delegate withLaunchOptions:(nullable NSDictionary *)launchOptions; + +/** + 删除地理围栏 + + @param geofenceId 地理围栏id + */ ++ (void)removeGeofenceWithIdentifier:(NSString *)geofenceId; + +///---------------------------------------------------- +/// @name Local Notification 本地通知 +///---------------------------------------------------- +/*! + * @abstract 注册或更新推送 (支持iOS10,并兼容iOS10以下版本) + * + * JPush 2.1.9新接口 + * @param request JPushNotificationRequest类型,设置推送的属性,设置已有推送的request.requestIdentifier即更新已有的推送,否则为注册新推送,更新推送仅仅在iOS10以上有效,结果通过request.completionHandler返回 + * @discussion 旧的注册本地推送接口被废弃,使用此接口可以替换 + * + */ ++ (void)addNotification:(JPushNotificationRequest *)request; + +/*! + * @abstract 移除推送 (支持iOS10,并兼容iOS10以下版本) + * + * JPush 2.1.9新接口 + * @param identifier JPushNotificationIdentifier类型,iOS10以上identifier设置为nil,则移除所有在通知中心显示推送和待推送请求,也可以通过设置identifier.delivered和identifier.identifiers来移除相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则移除相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier设置为nil,则移除所有推送,identifier.delivered属性无效,另外可以通过identifier.notificationObj传入特定推送对象来移除此推送。 + * @discussion 旧的所有删除推送接口被废弃,使用此接口可以替换 + * + */ ++ (void)removeNotification:(nullable JPushNotificationIdentifier *)identifier; + +/*! + * @abstract 查找推送 (支持iOS10,并兼容iOS10以下版本) + * + * JPush 2.1.9新接口 + * @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有未触发的推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。 + * @discussion 旧的查找推送接口被废弃,使用此接口可以替换 + * + */ ++ (void)findNotification:(JPushNotificationIdentifier *)identifier; + +/*! + * @abstract 本地推送,最多支持64个 + * + * @param fireDate 本地推送触发的时间 + * @param alertBody 本地推送需要显示的内容 + * @param badge 角标的数字。如果不需要改变角标传-1 + * @param alertAction 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动") + * @param notificationKey 本地推送标示符 + * @param userInfo 自定义参数,可以用来标识推送和增加附加信息 + * @param soundName 自定义通知声音,设置为nil为默认声音 + * + * @discussion 最多支持 64 个定义,此方法被[addNotification:]方法取代 + */ ++ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate + alertBody:(NSString *)alertBody + badge:(int)badge + alertAction:(NSString *)alertAction + identifierKey:(NSString *)notificationKey + userInfo:(NSDictionary *)userInfo + soundName:(NSString *)soundName __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 本地推送 (支持 iOS8 新参数) + * + * IOS8新参数 + * @param region 自定义参数 + * @param regionTriggersOnce 自定义参数 + * @param category 自定义参数 + * @discussion 此方法被[addNotification:]方法取代 + */ ++ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate + alertBody:(NSString *)alertBody + badge:(int)badge + alertAction:(NSString *)alertAction + identifierKey:(NSString *)notificationKey + userInfo:(NSDictionary *)userInfo + soundName:(NSString *)soundName + region:(CLRegion *)region + regionTriggersOnce:(BOOL)regionTriggersOnce + category:(NSString *)category NS_AVAILABLE_IOS(8_0) __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 前台展示本地推送 + * + * @param notification 本地推送对象 + * @param notificationKey 需要前台显示的本地推送通知的标示符 + * + * @discussion 默认App在前台运行时不会进行弹窗,在程序接收通知调用此接口可实现指定的推送弹窗。--iOS10以下还可继续使用,iOS10以上在[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]方法中调用completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);即可 + */ ++ (void)showLocalNotificationAtFront:(UILocalNotification *)notification + identifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); +/*! + * @abstract 删除本地推送定义 + * + * @param notificationKey 本地推送标示符 + * @discussion 此方法被[removeNotification:]方法取代 + */ ++ (void)deleteLocalNotificationWithIdentifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 删除本地推送定义 + * @discussion 此方法被[removeNotification:]方法取代 + */ ++ (void)deleteLocalNotification:(UILocalNotification *)localNotification __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 获取指定通知 + * + * @param notificationKey 本地推送标示符 + * @return 本地推送对象数组, [array count]为0时表示没找到 + * @discussion 此方法被[findNotification:]方法取代 + */ ++ (NSArray *)findLocalNotificationWithIdentifier:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + +/*! + * @abstract 清除所有本地推送对象 + * @discussion 此方法被[removeNotification:]方法取代 + */ ++ (void)clearAllLocalNotifications __attribute__((deprecated("JPush 2.1.9 版本已过期"))); + + +///---------------------------------------------------- +/// @name Server badge 服务器端 badge 功能 +///---------------------------------------------------- + +/*! + * @abstract 设置角标(到服务器) + * + * @param value 新的值. 会覆盖服务器上保存的值(这个用户) + * + * @discussion 本接口不会改变应用本地的角标值. + * 本地仍须调用 UIApplication:setApplicationIconBadgeNumber 函数来设置脚标. + * + * 本接口用于配合 JPush 提供的服务器端角标功能. + * 该功能解决的问题是, 服务器端推送 APNs 时, 并不知道客户端原来已经存在的角标是多少, 指定一个固定的数字不太合理. + * + * JPush 服务器端脚标功能提供: + * + * - 通过本 API 把当前客户端(当前这个用户的) 的实际 badge 设置到服务器端保存起来; + * - 调用服务器端 API 发 APNs 时(通常这个调用是批量针对大量用户), + * 使用 "+1" 的语义, 来表达需要基于目标用户实际的 badge 值(保存的) +1 来下发通知时带上新的 badge 值; + */ ++ (BOOL)setBadge:(NSInteger)value; + +/*! + * @abstract 重置脚标(为0) + * + * @discussion 相当于 [setBadge:0] 的效果. + * 参考 [JPUSHService setBadge:] 说明来理解其作用. + */ ++ (void)resetBadge; + +///---------------------------------------------------- +/// @name Other Feature 其他功能 +///---------------------------------------------------- + +/*! + * @abstract 设置手机号码(到服务器) + * + * @param mobileNumber 手机号码. 会与用户信息一一对应。可为空,为空则清除号码 + * @param completion 响应回调。成功则error为空,失败则error带有错误码及错误信息 + * + * @discussion 设置手机号码后,可实现“推送不到短信到”的通知方式,提高推送达到率。结果信息通过completion异步返回,也可将completion设置为nil不处理结果信息。 + * + */ ++ (void)setMobileNumber:(NSString *)mobileNumber completion:(nullable void (^)(NSError *error))completion; + +///---------------------------------------------------- +/// @name Logs and others 日志与其他 +///---------------------------------------------------- + +/*! + * @abstract JPush标识此设备的 registrationID + * + * @discussion SDK注册成功后, 调用此接口获取到 registrationID 才能够获取到. + * + * JPush 支持根据 registrationID 来进行推送. + * 如果你需要此功能, 应该通过此接口获取到 registrationID 后, 上报到你自己的服务器端, 并保存下来. + * registrationIDCompletionHandler:是新增的获取registrationID的方法,需要在block中获取registrationID,resCode为返回码,模拟器调用此接口resCode返回1011,registrationID返回nil. + * 更多的理解请参考 JPush 的文档网站. + */ ++ (NSString *)registrationID; + ++ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString * _Nullable registrationID))completionHandler; + +/*! + * @abstract 打开日志级别到 Debug + * + * @discussion JMessage iOS 的日志系统参考 Android 设计了级别. + * 从低到高是: Verbose, Debug, Info, Warning, Error. + * 对日志级别的进一步理解, 请参考 Android 相关的说明. + * + * SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志. + * + * 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志. + */ ++ (void)setDebugMode; + +/*! + * @abstract 关闭日志 + * + * @discussion 关于日志级别的说明, 参考 [JPUSHService setDebugMode] + * + * 虽说是关闭日志, 但还是会打印 Warning, Error 日志. 这二种日志级别, 在程序运行正常时, 不应有打印输出. + * + * 建议在发布的版本里, 调用此接口, 关闭掉日志打印. + */ ++ (void)setLogOFF; + +/*! + 数据采集控制 + + @param control 数据采集配置。 + */ ++ (void)setCollectControl:(JPushCollectControl *)control; + +/*! + * @abstract 设置SDK地理位置权限开关 + * + * @discussion 关闭地理位置之后,SDK地理围栏的相关功能将受到影响,默认是开启。 + * + */ ++ (void)setLocationEanable:(BOOL)isEanble; + +/*! + * @abstract 设置PUSH开关 + * + * @discussion 关闭PUSH之后,将接收不到极光通知推送、自定义消息推送、liveActivity消息推送,默认是开启。 + * + */ ++ (void)setPushEnable:(BOOL)isEnable completion:(nullable void (^)(NSInteger iResCode))completion; + + +/*! +* @abstract 设置应用内提醒消息的代理 +* +* @discussion 遵守JPushNotiInMessageDelegate的代理对象 +* +*/ ++ (void)setNotiInMessageDelegate:(id)notiInMessageDelegate; + + + +///---------------------------------------------------- +///********************下列方法已过期******************** +///**************请使用新版tag/alias操作接口************** +///---------------------------------------------------- +/// @name Tag alias setting 设置别名与标签 +///---------------------------------------------------- + +/*! + * 下面的接口是可选的 + * 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) + * setTags:alias:fetchCompletionHandle:是新的设置标签别名的方法,不再需要显示声明回调函数,只需要在block里面处理设置结果即可. + * WARN: 使用block时需要注意循环引用问题 + */ ++ (void) setTags:(NSSet *)tags + alias:(NSString *)alias +callbackSelector:(SEL)cbSelector + target:(id)theTarget __attribute__((deprecated("JPush 2.1.1 版本已过期"))); ++ (void) setTags:(NSSet *)tags + alias:(NSString *)alias +callbackSelector:(SEL)cbSelector + object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); ++ (void) setTags:(NSSet *)tags +callbackSelector:(SEL)cbSelector + object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); ++ (void)setTags:(NSSet *)tags + alias:(NSString *)alias +fetchCompletionHandle:(void (^)(int iResCode, NSSet *iTags, NSString *iAlias))completionHandler __attribute__((deprecated("JPush 3.0.6 版本已过期"))); ++ (void) setTags:(NSSet *)tags +aliasInbackground:(NSString *)alias __attribute__((deprecated("JPush 3.0.6 版本已过期"))); ++ (void)setAlias:(NSString *)alias +callbackSelector:(SEL)cbSelector + object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); + +@end + +@class UNUserNotificationCenter; +@class UNNotificationResponse; + +@protocol JPUSHRegisterDelegate + +/* + * @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:] + * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 + * @param notification 前台得到的的通知对象 + * @param completionHandler 该callback中的options 请使用UNNotificationPresentationOptions + */ +- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger options))completionHandler; +/* + * @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:] + * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 + * @param response 通知响应对象 + * @param completionHandler + */ +- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler; + +/* + * @brief handle UserNotifications.framework [openSettingsForNotification:] + * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 + * @param notification 当前管理的通知对象 + */ +- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification NS_AVAILABLE_IOS(12.0); + +/** + * 监测通知授权状态返回的结果 + * @param status 授权通知状态,详见JPAuthorizationStatus + * @param info 更多信息,预留参数 + */ +- (void)jpushNotificationAuthorization:(JPAuthorizationStatus)status withInfo:(nullable NSDictionary *)info; + +@end + +@protocol JPUSHGeofenceDelegate +/** + 触发地理围栏 + @param geofence 地理围栏触发时返回的信息 + @param error 错误信息 + */ +- (void)jpushGeofenceRegion:(nullable NSDictionary *)geofence + error:(nullable NSError *)error; + +/** + 拉取地理围栏列表的回调 + + @param geofenceList 地理围栏列表 + */ +- (void)jpushCallbackGeofenceReceived:(nullable NSArray *)geofenceList; + +/** + 进入地理围栏区域 + + @param geofenceId 地理围栏id + @param userInfo 地理围栏触发时返回的信息 + @param error 错误信息 + */ +- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didEnterRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期"))); + +/** + 离开地理围栏区域 + + @param geofenceId 地理围栏id + @param userInfo 地理围栏触发时返回的信息 + @param error 错误信息 + */ +- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didExitRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期"))); + +@end + + +@protocol JPUSHNotiInMessageDelegate + +/** + 应用内提醒消息展示的回调 + + @param content 应用内提醒消息的内容 + + */ +- (void)jPushNotiInMessageDidShowWithContent:(NSDictionary *)content; + +/** + 应用内提醒消息点击的回调 + + @param content 应用内提醒消息的内容 + + */ +- (void)jPushNotiInMessageDidClickWithContent:(NSDictionary *)content; + +@end + + +@protocol JPUSHInAppMessageDelegate + +/** + 应用内消息展示的回调 + + @param inAppMessage 应用内消息的内容 + + */ +- (void)jPushInAppMessageDidShow:(JPushInAppMessage *)inAppMessage; + +/** + 应用内消息点击的回调 + + @param inAppMessage 应用内消息的内容 + + */ +- (void)jPushInAppMessageDidClick:(JPushInAppMessage *)inAppMessage; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/jpush-ios-5.3.0.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..e2920ec --- /dev/null +++ b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy @@ -0,0 +1,23 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + + + + diff --git a/Libs/jpush-ios-5.3.0.xcframework/ios-arm64_x86_64-simulator/libJPush.a b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64_x86_64-simulator/libJPush.a new file mode 100644 index 0000000..605233a Binary files /dev/null and b/Libs/jpush-ios-5.3.0.xcframework/ios-arm64_x86_64-simulator/libJPush.a differ diff --git a/Libs/BMKLocationKit.framework/BMKLocationKit b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/BMKLocationKit similarity index 100% rename from Libs/BMKLocationKit.framework/BMKLocationKit rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/BMKLocationKit diff --git a/Libs/BMKLocationKit.framework/Headers/BMKGeoFenceManager.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKGeoFenceManager.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKGeoFenceManager.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKGeoFenceManager.h diff --git a/Libs/BMKLocationKit.framework/Headers/BMKGeoFenceRegion.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKGeoFenceRegion.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKGeoFenceRegion.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKGeoFenceRegion.h diff --git a/Libs/BMKLocationKit.framework/Headers/BMKLocation.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocation.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKLocation.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocation.h diff --git a/Libs/BMKLocationKit.framework/Headers/BMKLocationAuth.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationAuth.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKLocationAuth.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationAuth.h diff --git a/Libs/BMKLocationKit.framework/Headers/BMKLocationComponent.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationComponent.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKLocationComponent.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationComponent.h diff --git a/Libs/BMKLocationKit.framework/Headers/BMKLocationKitVersion.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationKitVersion.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKLocationKitVersion.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationKitVersion.h diff --git a/Libs/BMKLocationKit.framework/Headers/BMKLocationManager.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationManager.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKLocationManager.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationManager.h diff --git a/Libs/BMKLocationKit.framework/Headers/BMKLocationPoi.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationPoi.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKLocationPoi.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationPoi.h diff --git a/Libs/BMKLocationKit.framework/Headers/BMKLocationPoiRegion.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationPoiRegion.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKLocationPoiRegion.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationPoiRegion.h diff --git a/Libs/BMKLocationKit.framework/Headers/BMKLocationReGeocode.h b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationReGeocode.h similarity index 100% rename from Libs/BMKLocationKit.framework/Headers/BMKLocationReGeocode.h rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/Headers/BMKLocationReGeocode.h diff --git a/Libs/BMKLocationKit.framework/readme.txt b/LinxiaBaiduLiveLibs/BMKLocationKit.framework/readme.txt similarity index 100% rename from Libs/BMKLocationKit.framework/readme.txt rename to LinxiaBaiduLiveLibs/BMKLocationKit.framework/readme.txt diff --git a/Libs/IDLFaceSDK.framework/Headers/BDFaceQualityUtil.h b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/BDFaceQualityUtil.h similarity index 100% rename from Libs/IDLFaceSDK.framework/Headers/BDFaceQualityUtil.h rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/BDFaceQualityUtil.h diff --git a/Libs/IDLFaceSDK.framework/Headers/BDFaceUtil.h b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/BDFaceUtil.h similarity index 100% rename from Libs/IDLFaceSDK.framework/Headers/BDFaceUtil.h rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/BDFaceUtil.h diff --git a/Libs/IDLFaceSDK.framework/Headers/FaceSDKManager.h b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/FaceSDKManager.h similarity index 100% rename from Libs/IDLFaceSDK.framework/Headers/FaceSDKManager.h rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/FaceSDKManager.h diff --git a/Libs/IDLFaceSDK.framework/Headers/IDLFaceDetectionManager.h b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/IDLFaceDetectionManager.h similarity index 100% rename from Libs/IDLFaceSDK.framework/Headers/IDLFaceDetectionManager.h rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/IDLFaceDetectionManager.h diff --git a/Libs/IDLFaceSDK.framework/Headers/IDLFaceLivenessManager.h b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/IDLFaceLivenessManager.h similarity index 100% rename from Libs/IDLFaceSDK.framework/Headers/IDLFaceLivenessManager.h rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/IDLFaceLivenessManager.h diff --git a/Libs/IDLFaceSDK.framework/Headers/IDLFaceSDK.h b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/IDLFaceSDK.h similarity index 100% rename from Libs/IDLFaceSDK.framework/Headers/IDLFaceSDK.h rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Headers/IDLFaceSDK.h diff --git a/Libs/IDLFaceSDK.framework/IDLFaceSDK b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/IDLFaceSDK similarity index 100% rename from Libs/IDLFaceSDK.framework/IDLFaceSDK rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/IDLFaceSDK diff --git a/Libs/IDLFaceSDK.framework/Info.plist b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Info.plist similarity index 100% rename from Libs/IDLFaceSDK.framework/Info.plist rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Info.plist diff --git a/Libs/IDLFaceSDK.framework/Modules/module.modulemap b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Modules/module.modulemap similarity index 100% rename from Libs/IDLFaceSDK.framework/Modules/module.modulemap rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/Modules/module.modulemap diff --git a/Libs/IDLFaceSDK.framework/_CodeSignature/CodeResources b/LinxiaBaiduLiveLibs/IDLFaceSDK.framework/_CodeSignature/CodeResources similarity index 100% rename from Libs/IDLFaceSDK.framework/_CodeSignature/CodeResources rename to LinxiaBaiduLiveLibs/IDLFaceSDK.framework/_CodeSignature/CodeResources