EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs
@@ -1,100 +1,30 @@ using System; using Foundation; using Foundation; using ObjCRuntime; namespace EZSDK.IOS { // @interface EZDeviceInfo : NSObject // @protocol EZSDKDelegate <NSObject> [Protocol, Model(AutoGeneratedName = true)] [BaseType(typeof(NSObject))] interface EZDeviceInfo interface EZSDKDelegate { // @property (nonatomic, strong) NSArray * cameraInfo; [Export("cameraInfo", ArgumentSemantic.Strong)] //[Verify(StronglyTypedNSArray)] NSArray CameraInfo { get; set; } // @property (nonatomic) NSInteger cameraNum; [Export("cameraNum")] int CameraNum { get; set; } // @property (nonatomic) NSInteger defence; [Export("defence")] int Defence { get; set; } // @property (nonatomic) NSInteger detectorNum; [Export("detectorNum")] int DetectorNum { get; set; } // @property (nonatomic, strong) NSArray * detectorInfo; [Export("detectorInfo", ArgumentSemantic.Strong)] //[Verify(StronglyTypedNSArray)] NSArray DetectorInfo { get; set; } // @property (copy, nonatomic) NSString * deviceCover; [Export("deviceCover")] string DeviceCover { get; set; } // @property (copy, nonatomic) NSString * deviceName; [Export("deviceName")] string DeviceName { get; set; } // @property (copy, nonatomic) NSString * deviceSerial; [Export("deviceSerial")] string DeviceSerial { get; set; } // @property (copy, nonatomic) NSString * deviceType; [Export("deviceType")] string DeviceType { get; set; } // @property (copy, nonatomic) NSString * deviceVersion; [Export("deviceVersion")] string DeviceVersion { get; set; } // @property (nonatomic) BOOL isEncrypt; [Export("isEncrypt")] bool IsEncrypt { get; set; } // @property (nonatomic) NSInteger status; [Export("status")] nint Status { get; set; } // @property (nonatomic) NSInteger isSupportTalk; [Export("isSupportTalk")] int IsSupportTalk { get; set; } // @property (nonatomic) BOOL isSupportPTZ; [Export("isSupportPTZ")] bool IsSupportPTZ { get; set; } // @property (nonatomic) BOOL isSupportZoom; [Export("isSupportZoom")] bool IsSupportZoom { get; set; } // @property (nonatomic) BOOL isSupportAudioOnOff; [Export("isSupportAudioOnOff")] bool IsSupportAudioOnOff { get; set; } // @property (nonatomic) BOOL isSupportMirrorCenter; [Export("isSupportMirrorCenter")] bool IsSupportMirrorCenter { get; set; } // @property (nonatomic) BOOL isSupportSoundWave; [Export("isSupportSoundWave")] bool IsSupportSoundWave { get; set; } // @property (copy, nonatomic) NSString * category; [Export("category")] string Category { get; set; } // @property (nonatomic, strong) NSDate * addTime; [Export("addTime", ArgumentSemantic.Strong)] NSDate AddTime { get; set; } // @required -(void)addDeviceSuccessed; [Abstract] [Export("addDeviceSuccessed")] void AddDeviceSuccessed(); } // @interface EZSDK : NSObject [BaseType(typeof(NSObject))] interface EZSDK { [Wrap("WeakDelegate")] EZSDKDelegate Delegate { get; set; } // @property (nonatomic, weak) id<EZSDKDelegate> delegate; [NullAllowed, Export("delegate", ArgumentSemantic.Weak)] NSObject WeakDelegate { get; set; } // +(instancetype)sharedInstance; [Static] [Export("sharedInstance")] @@ -120,24 +50,45 @@ [Export("go2EZvizMonitor")] void Go2EZvizMonitor(); // -(void)toEZDeviceListViewWithFilterTypes:(NSArray *)filterTepes; [Export("toEZDeviceListViewWithFilterTypes:")] //[Verify(StronglyTypedNSArray)] void ToEZDeviceListViewWithFilterTypes(NSObject[] filterTepes); // -(void)addEzvizMonitor; [Export("addEzvizMonitor")] void AddEzvizMonitor(); // -(void)Play:(EZDeviceInfo *)deviceInfo; // -(void)addEzvizMonitorWithDeviceType:(NSString *)deviceType; [Export("addEzvizMonitorWithDeviceType:")] void AddEzvizMonitorWithDeviceType(string deviceType); // -(void)Play:(id)deviceInfo; [Export("Play:")] void Play(EZDeviceInfo deviceInfo); void Play(NSObject deviceInfo); // -(void)PlayWithDeviceSerial:(NSString *)deviceSerial; [Export("PlayWithDeviceSerial:")] void PlayWithDeviceSerial(string deviceSerial); // -(void)setting:(EZDeviceInfo *)deviceInfo; [Export("setting:")] void Setting(EZDeviceInfo deviceInfo); // -(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString *)deviceId deviceType:(NSString *)deviceType; [Export("PlayWithDeviceSerial:deviceId:deviceType:")] void PlayWithDeviceSerial(string deviceSerial, string deviceId, string deviceType); // -(void)playBackVideo:(EZDeviceInfo *)deviceInfo; // -(void)setting:(id)deviceInfo; [Export("setting:")] void Setting(NSObject deviceInfo); // -(void)playBackVideo:(id)deviceInfo; [Export("playBackVideo:")] void PlayBackVideo(EZDeviceInfo deviceInfo); void PlayBackVideo(NSObject deviceInfo); // -(void)toTemPassView:(NSString *)deviceId; [Export("toTemPassView:")] void ToTemPassView(string deviceId); // -(void)toDeviceMsgListView:(NSString *)deviceId; [Export("toDeviceMsgListView:")] void ToDeviceMsgListView(string deviceId); } } EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
@@ -60,6 +60,9 @@ <NativeReference Include="Library\lib\libssl.a"> <Kind>Static</Kind> </NativeReference> <NativeReference Include="Library\lib\FQDateTimeSDK.framework"> <Kind>Framework</Kind> </NativeReference> </ItemGroup> <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.ObjCBinding.CSharp.targets" /> </Project> EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/FQDateTimeSDKBinary files differ
EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h
New file @@ -0,0 +1,107 @@ // // FQDateTimePickerView.h // FQTools // // Created by wuwuFQ on 2021/5/26. // #import <UIKit/UIKit.h> typedef enum{ FQDateTimePickerModelYMDate,// 年月 2021-05 FQDateTimePickerModelDate,// 年月日 2021-05-26 FQDateTimePickerModelDateTime,//年月日 时分 yyyy-mm-dd HH:mm 只支持24小时制 FQDateTimePickerModelDateTimeSecond,//年月日 时分秒 yyyy-mm-dd HH:mm:ss 只支持24小时制 FQDateTimePickerModelTime,// 时分 HH:mm 只支持24小时制 FQDateTimePickerModelTimeSecond,// 时分秒 HH:mm:ss 只支持24小时制 } FQDateTimePickerModel; NS_ASSUME_NONNULL_BEGIN @protocol FQDateTimePickerViewDelegate <NSObject> /// 确认操作 /// @param date 日期NSDate /// @param dateStr 日期NSString /// @param target 用于区分pickerView - (void)confirmActionWithDate:(NSDate *)date withDateString:(NSString *)dateStr withTarget:(NSInteger)target; @optional /// 取消操作 /// @param target 用于区分pickerView - (void)cancelActionWithTarget:(NSInteger)target; /// 滚动操作 /// @param date 日期NSDate /// @param dateStr 日期NSString /// @param target 用于区分pickerView - (void)scrollActionWithDate:(NSDate *)date withDateString:(NSString *)dateStr withTarget:(NSInteger)target; @end @interface FQDateTimePickerView : UIView /*---------------- UI ------------------------*/ /// 遮罩背景色 @property (nonatomic, strong) UIColor *maskBackgroundColor; /// 选择器背景色 @property (nonatomic, strong) UIColor *pickerBackgroundColor; ///确定按钮文本 @property (nonatomic, copy) NSString *confirmText; ///确定按钮颜色 默认black @property (nonatomic, strong) UIColor *confirmColor; ///确定按钮字体 默认系统18pt @property (nonatomic, strong) UIFont *confirmFont; ///取消按钮文本 @property (nonatomic, copy) NSString *cancelText; ///取消按钮颜色 默认黑色 @property (nonatomic, strong) UIColor *cancelColor; ///取消按钮字体 默认系统18pt @property (nonatomic, strong) UIFont *cancelFont; ///标题文本 默认 "" @property (nonatomic, copy) NSString *title; ///标题颜色 默认黑色 @property (nonatomic, strong) UIColor *titleColor; ///标题字体 默认系统SFUI-Regular 16.00pt @property (nonatomic, strong) UIFont *titleFont; ///滚轮日期文本颜色(默认black) @property (nonatomic, strong) UIColor *pickerColor; ///滚轮日期文本字体[UIFont systemFontOfSize:16] @property (nonatomic, strong) UIFont *pickerFont; /*---------------- NSDate ------------------------*/ ///限制最大时间 @property (nonatomic, strong) NSDate *maxDate; ///限制最小时间 @property (nonatomic, strong) NSDate *minDate; ///默认时间 - - 默认当前时间 @property (nonatomic, strong) NSDate *defaultDate; /// 单位:默认[@"年", @"月", @"日", @"时", @"分", @"秒"],请一一对应,设置 unitsData = nil 可置空 @property (nonatomic, strong, null_unspecified) NSArray *unitsData; /*---------------- other ------------------------*/ /// Protocol @property (nonatomic, weak) id<FQDateTimePickerViewDelegate> delegate; /// 选择器的枚举 默认FQDateTimePickerModelDate @property (nonatomic, assign) FQDateTimePickerModel pickerModel; /// pickerView的tag 用于区分回调 @property (nonatomic, assign) NSInteger target; /// 展示在window上(请在展示之前,设置好需要的属性) - (void)showPicker; /// 展示在view上(请在展示之前,设置好需要的属性) /// - Parameter view: <#view description#> - (void)showPickerInView:(UIView *)view; @end NS_ASSUME_NONNULL_END EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h
New file @@ -0,0 +1,18 @@ // // FQDateTimeSDK.h // FQDateTimeSDK // // Created by wuwuFQ on 2022/4/28. // #import <Foundation/Foundation.h> #import "FQDateTimePickerView.h" //! Project version number for FQDateTimeSDK. FOUNDATION_EXPORT double FQDateTimeSDKVersionNumber; //! Project version string for FQDateTimeSDK. FOUNDATION_EXPORT const unsigned char FQDateTimeSDKVersionString[]; // In this header, you should import all the public headers of your framework using statements like #import <FQDateTimeSDK/PublicHeader.h> EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Info.plistBinary files differ
EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Modules/module.modulemap
New file @@ -0,0 +1,6 @@ framework module FQDateTimeSDK { umbrella header "FQDateTimeSDK.h" export * module * { export * } } EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.aBinary files differ
EZSDK/EZSDK.xcodeproj/project.pbxproj
@@ -10,6 +10,12 @@ AE5068D829B9DB5E009EA09A /* HDLEZTemInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AE5068D729B9DB5E009EA09A /* HDLEZTemInfoModel.m */; }; AEC306D229B9F2B5000B3861 /* HDLEZVisitorRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = AEC306D129B9F2B5000B3861 /* HDLEZVisitorRecordView.m */; }; AEC306D529B9F2DB000B3861 /* HDLEZVisitorRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = AEC306D429B9F2DB000B3861 /* HDLEZVisitorRecordCell.m */; }; AEDBFB9929C2B90F005F6512 /* HDLEZAlertInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFB9829C2B90F005F6512 /* HDLEZAlertInputView.m */; }; AEDBFB9C29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFB9B29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m */; }; AEDBFB9F29C30126005F6512 /* HDLEZDeviceMsgListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFB9E29C30126005F6512 /* HDLEZDeviceMsgListViewController.m */; }; AEDBFBA229C302E0005F6512 /* HDLEZDeviceMsgListView.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFBA129C302E0005F6512 /* HDLEZDeviceMsgListView.m */; }; AEDBFBA529C3072D005F6512 /* HDLEZDeviceMsgCell.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFBA429C3072D005F6512 /* HDLEZDeviceMsgCell.m */; }; AEDBFBA829C30DEF005F6512 /* HDLEZDevMsgListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDBFBA729C30DEF005F6512 /* HDLEZDevMsgListModel.m */; }; AEDD437F29BED161001D9477 /* HDLEZButton.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD437D29BED161001D9477 /* HDLEZButton.m */; }; AEDD438229BEE6C2001D9477 /* HDLEZCreatTempPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD438029BEE6C2001D9477 /* HDLEZCreatTempPassViewController.m */; }; AEDD438529BEE6D2001D9477 /* HDLEZCreateTemPassView.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD438429BEE6D2001D9477 /* HDLEZCreateTemPassView.m */; }; @@ -95,7 +101,6 @@ B9BC99F125C0FFBD00C024FE /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC98A125C0FFB800C024FE /* UIImageView+WebCache.m */; }; B9BC99F225C0FFBD00C024FE /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC98A425C0FFB800C024FE /* UIView+WebCacheOperation.m */; }; B9BC99F325C0FFBD00C024FE /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC98A825C0FFB800C024FE /* UIButton+WebCache.m */; }; B9BC99F425C0FFBD00C024FE /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B9BC98FD25C0FFBA00C024FE /* libcrypto.a */; }; B9BC99F625C0FFBD00C024FE /* Aspects.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC990125C0FFBA00C024FE /* Aspects.m */; }; B9BC99F725C0FFBD00C024FE /* EZQRView.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC990425C0FFBA00C024FE /* EZQRView.m */; }; B9BC99F825C0FFBD00C024FE /* EZCustomTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = B9BC990925C0FFBA00C024FE /* EZCustomTableView.m */; }; @@ -185,6 +190,18 @@ AEC306D129B9F2B5000B3861 /* HDLEZVisitorRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLEZVisitorRecordView.m; sourceTree = "<group>"; }; AEC306D329B9F2DA000B3861 /* HDLEZVisitorRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HDLEZVisitorRecordCell.h; sourceTree = "<group>"; }; AEC306D429B9F2DB000B3861 /* HDLEZVisitorRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLEZVisitorRecordCell.m; sourceTree = "<group>"; }; AEDBFB9729C2B90F005F6512 /* HDLEZAlertInputView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZAlertInputView.h; sourceTree = "<group>"; }; AEDBFB9829C2B90F005F6512 /* HDLEZAlertInputView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZAlertInputView.m; sourceTree = "<group>"; }; AEDBFB9A29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDeviceMsgInfoModel.h; sourceTree = "<group>"; }; AEDBFB9B29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDeviceMsgInfoModel.m; sourceTree = "<group>"; }; AEDBFB9D29C30126005F6512 /* HDLEZDeviceMsgListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDeviceMsgListViewController.h; sourceTree = "<group>"; }; AEDBFB9E29C30126005F6512 /* HDLEZDeviceMsgListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDeviceMsgListViewController.m; sourceTree = "<group>"; }; AEDBFBA029C302E0005F6512 /* HDLEZDeviceMsgListView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDeviceMsgListView.h; sourceTree = "<group>"; }; AEDBFBA129C302E0005F6512 /* HDLEZDeviceMsgListView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDeviceMsgListView.m; sourceTree = "<group>"; }; AEDBFBA329C3072D005F6512 /* HDLEZDeviceMsgCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDeviceMsgCell.h; sourceTree = "<group>"; }; AEDBFBA429C3072D005F6512 /* HDLEZDeviceMsgCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDeviceMsgCell.m; sourceTree = "<group>"; }; AEDBFBA629C30DEF005F6512 /* HDLEZDevMsgListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDLEZDevMsgListModel.h; sourceTree = "<group>"; }; AEDBFBA729C30DEF005F6512 /* HDLEZDevMsgListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDLEZDevMsgListModel.m; sourceTree = "<group>"; }; AEDD437D29BED161001D9477 /* HDLEZButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLEZButton.m; sourceTree = "<group>"; }; AEDD437E29BED161001D9477 /* HDLEZButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HDLEZButton.h; sourceTree = "<group>"; }; AEDD438029BEE6C2001D9477 /* HDLEZCreatTempPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDLEZCreatTempPassViewController.m; sourceTree = "<group>"; }; @@ -496,7 +513,6 @@ B9BC98F925C0FFBA00C024FE /* idea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = idea.h; sourceTree = "<group>"; }; B9BC98FA25C0FFBA00C024FE /* lhash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lhash.h; sourceTree = "<group>"; }; B9BC98FB25C0FFBA00C024FE /* pq_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pq_compat.h; sourceTree = "<group>"; }; B9BC98FD25C0FFBA00C024FE /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcrypto.a; sourceTree = "<group>"; }; B9BC990025C0FFBA00C024FE /* Aspects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Aspects.h; sourceTree = "<group>"; }; B9BC990125C0FFBA00C024FE /* Aspects.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Aspects.m; sourceTree = "<group>"; }; B9BC990325C0FFBA00C024FE /* NSDate-Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate-Utilities.h"; sourceTree = "<group>"; }; @@ -646,7 +662,6 @@ buildActionMask = 2147483647; files = ( AEDD944129B0329D00EAA2CA /* libEZOpenSDK.a in Frameworks */, B9BC99F425C0FFBD00C024FE /* libcrypto.a in Frameworks */, AEE4704529C03DA300480163 /* FQDateTimeSDK.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -675,6 +690,8 @@ AEDD438B29BF2C50001D9477 /* HDLEZInputViewController.m */, AEE4704A29C061AC00480163 /* HDLEZTempDetailViewController.h */, AEE4704B29C061AC00480163 /* HDLEZTempDetailViewController.m */, AEDBFB9D29C30126005F6512 /* HDLEZDeviceMsgListViewController.h */, AEDBFB9E29C30126005F6512 /* HDLEZDeviceMsgListViewController.m */, ); path = Controllers; sourceTree = "<group>"; @@ -694,6 +711,10 @@ AEDD438E29BF2C78001D9477 /* HDLEZInputView.m */, AEE4704D29C061DF00480163 /* HDLEZTempDetailView.h */, AEE4704E29C061DF00480163 /* HDLEZTempDetailView.m */, AEDBFBA029C302E0005F6512 /* HDLEZDeviceMsgListView.h */, AEDBFBA129C302E0005F6512 /* HDLEZDeviceMsgListView.m */, AEDBFBA329C3072D005F6512 /* HDLEZDeviceMsgCell.h */, AEDBFBA429C3072D005F6512 /* HDLEZDeviceMsgCell.m */, ); path = Views; sourceTree = "<group>"; @@ -703,6 +724,10 @@ children = ( AE5068D629B9DB5E009EA09A /* HDLEZTemInfoModel.h */, AE5068D729B9DB5E009EA09A /* HDLEZTemInfoModel.m */, AEDBFB9A29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.h */, AEDBFB9B29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m */, AEDBFBA629C30DEF005F6512 /* HDLEZDevMsgListModel.h */, AEDBFBA729C30DEF005F6512 /* HDLEZDevMsgListModel.m */, ); path = Models; sourceTree = "<group>"; @@ -797,6 +822,8 @@ AEE84D4429BACBAA0078FDAD /* HDLEZTopBarView.m */, AEE84D3E29BAC5BF0078FDAD /* HDLEZBaseViewController.h */, AEE84D3D29BAC5BC0078FDAD /* HDLEZBaseViewController.m */, AEDBFB9729C2B90F005F6512 /* HDLEZAlertInputView.h */, AEDBFB9829C2B90F005F6512 /* HDLEZAlertInputView.m */, ); path = Base; sourceTree = "<group>"; @@ -1053,8 +1080,8 @@ B9BC988525C0FFB800C024FE /* MBProgressHUD */ = { isa = PBXGroup; children = ( B9BC988625C0FFB800C024FE /* MBProgressHUD.m */, B9BC988725C0FFB800C024FE /* MBProgressHUD.h */, B9BC988625C0FFB800C024FE /* MBProgressHUD.m */, ); path = MBProgressHUD; sourceTree = "<group>"; @@ -1119,85 +1146,85 @@ B9BC98AC25C0FFB800C024FE /* openssl */ = { isa = PBXGroup; children = ( B9BC98AD25C0FFB900C024FE /* pem2.h */, B9BC98AE25C0FFB900C024FE /* pem.h */, B9BC98AF25C0FFB900C024FE /* md2.h */, B9BC98B025C0FFB900C024FE /* ssl3.h */, B9BC98B125C0FFB900C024FE /* ossl_typ.h */, B9BC98B225C0FFB900C024FE /* dtls1.h */, B9BC98B325C0FFB900C024FE /* err.h */, B9BC98B425C0FFB900C024FE /* bn.h */, B9BC98B525C0FFB900C024FE /* blowfish.h */, B9BC98B625C0FFB900C024FE /* cms.h */, B9BC98B725C0FFB900C024FE /* engine.h */, B9BC98B825C0FFB900C024FE /* conf_api.h */, B9BC98B925C0FFB900C024FE /* x509.h */, B9BC98BA25C0FFB900C024FE /* asn1_mac.h */, B9BC98BB25C0FFB900C024FE /* ui.h */, B9BC98BC25C0FFB900C024FE /* kssl.h */, B9BC98BD25C0FFB900C024FE /* sha.h */, B9BC98BE25C0FFB900C024FE /* symhacks.h */, B9BC98BF25C0FFB900C024FE /* asn1.h */, B9BC98C025C0FFB900C024FE /* opensslconf.h */, B9BC98C125C0FFB900C024FE /* bio.h */, B9BC98C225C0FFB900C024FE /* rc2.h */, B9BC98C325C0FFB900C024FE /* dh.h */, B9BC98C425C0FFB900C024FE /* ui_compat.h */, B9BC98C525C0FFB900C024FE /* x509v3.h */, B9BC98C625C0FFB900C024FE /* ssl23.h */, B9BC98C725C0FFB900C024FE /* conf.h */, B9BC98C825C0FFB900C024FE /* md5.h */, B9BC98C925C0FFB900C024FE /* x509_vfy.h */, B9BC98CA25C0FFB900C024FE /* txt_db.h */, B9BC98CB25C0FFB900C024FE /* safestack.h */, B9BC98CC25C0FFB900C024FE /* ecdsa.h */, B9BC98CD25C0FFB900C024FE /* objects.h */, B9BC98CE25C0FFB900C024FE /* pkcs12.h */, B9BC98CF25C0FFB900C024FE /* crypto.h */, B9BC98D025C0FFB900C024FE /* opensslv.h */, B9BC98D125C0FFB900C024FE /* pkcs7.h */, B9BC98D225C0FFB900C024FE /* obj_mac.h */, B9BC98D325C0FFB900C024FE /* tmdiff.h */, B9BC98D425C0FFB900C024FE /* buffer.h */, B9BC98D525C0FFB900C024FE /* ssl.h */, B9BC98D625C0FFB900C024FE /* srp.h */, B9BC98D725C0FFB900C024FE /* camellia.h */, B9BC98D825C0FFB900C024FE /* evp.h */, B9BC98D925C0FFB900C024FE /* e_os2.h */, B9BC98DA25C0FFB900C024FE /* md4.h */, B9BC98DB25C0FFB900C024FE /* hmac.h */, B9BC98DC25C0FFB900C024FE /* aes.h */, B9BC98DD25C0FFB900C024FE /* comp.h */, B9BC98BA25C0FFB900C024FE /* asn1_mac.h */, B9BC98BF25C0FFB900C024FE /* asn1.h */, B9BC98F525C0FFB900C024FE /* asn1t.h */, B9BC98C125C0FFB900C024FE /* bio.h */, B9BC98B525C0FFB900C024FE /* blowfish.h */, B9BC98B425C0FFB900C024FE /* bn.h */, B9BC98D425C0FFB900C024FE /* buffer.h */, B9BC98D725C0FFB900C024FE /* camellia.h */, B9BC98DE25C0FFB900C024FE /* cast.h */, B9BC98DF25C0FFB900C024FE /* rc4.h */, B9BC98E025C0FFB900C024FE /* stack.h */, B9BC98F625C0FFBA00C024FE /* cmac.h */, B9BC98B625C0FFB900C024FE /* cms.h */, B9BC98DD25C0FFB900C024FE /* comp.h */, B9BC98B825C0FFB900C024FE /* conf_api.h */, B9BC98C725C0FFB900C024FE /* conf.h */, B9BC98CF25C0FFB900C024FE /* crypto.h */, B9BC98EE25C0FFB900C024FE /* des_old.h */, B9BC98E125C0FFB900C024FE /* des.h */, B9BC98E225C0FFB900C024FE /* ocsp.h */, B9BC98C325C0FFB900C024FE /* dh.h */, B9BC98F325C0FFB900C024FE /* dsa.h */, B9BC98E825C0FFB900C024FE /* dso.h */, B9BC98B225C0FFB900C024FE /* dtls1.h */, B9BC98D925C0FFB900C024FE /* e_os2.h */, B9BC98F725C0FFBA00C024FE /* ebcdic.h */, B9BC98E325C0FFB900C024FE /* ec.h */, B9BC98E425C0FFB900C024FE /* ecdh.h */, B9BC98E525C0FFB900C024FE /* rand.h */, B9BC98E625C0FFB900C024FE /* ts.h */, B9BC98E725C0FFB900C024FE /* pqueue.h */, B9BC98E825C0FFB900C024FE /* dso.h */, B9BC98E925C0FFB900C024FE /* seed.h */, B9BC98EA25C0FFB900C024FE /* modes.h */, B9BC98EB25C0FFB900C024FE /* ssl2.h */, B9BC98EC25C0FFB900C024FE /* rsa.h */, B9BC98ED25C0FFB900C024FE /* krb5_asn.h */, B9BC98EE25C0FFB900C024FE /* des_old.h */, B9BC98EF25C0FFB900C024FE /* ripemd.h */, B9BC98F025C0FFB900C024FE /* whrlpool.h */, B9BC98F125C0FFB900C024FE /* tls1.h */, B9BC98F225C0FFB900C024FE /* mdc2.h */, B9BC98F325C0FFB900C024FE /* dsa.h */, B9BC98F425C0FFB900C024FE /* srtp.h */, B9BC98F525C0FFB900C024FE /* asn1t.h */, B9BC98F625C0FFBA00C024FE /* cmac.h */, B9BC98F725C0FFBA00C024FE /* ebcdic.h */, B9BC98F825C0FFBA00C024FE /* store.h */, B9BC98CC25C0FFB900C024FE /* ecdsa.h */, B9BC98B725C0FFB900C024FE /* engine.h */, B9BC98B325C0FFB900C024FE /* err.h */, B9BC98D825C0FFB900C024FE /* evp.h */, B9BC98DB25C0FFB900C024FE /* hmac.h */, B9BC98F925C0FFBA00C024FE /* idea.h */, B9BC98ED25C0FFB900C024FE /* krb5_asn.h */, B9BC98BC25C0FFB900C024FE /* kssl.h */, B9BC98FA25C0FFBA00C024FE /* lhash.h */, B9BC98AF25C0FFB900C024FE /* md2.h */, B9BC98DA25C0FFB900C024FE /* md4.h */, B9BC98C825C0FFB900C024FE /* md5.h */, B9BC98F225C0FFB900C024FE /* mdc2.h */, B9BC98EA25C0FFB900C024FE /* modes.h */, B9BC98D225C0FFB900C024FE /* obj_mac.h */, B9BC98CD25C0FFB900C024FE /* objects.h */, B9BC98E225C0FFB900C024FE /* ocsp.h */, B9BC98C025C0FFB900C024FE /* opensslconf.h */, B9BC98D025C0FFB900C024FE /* opensslv.h */, B9BC98B125C0FFB900C024FE /* ossl_typ.h */, B9BC98AE25C0FFB900C024FE /* pem.h */, B9BC98AD25C0FFB900C024FE /* pem2.h */, B9BC98D125C0FFB900C024FE /* pkcs7.h */, B9BC98CE25C0FFB900C024FE /* pkcs12.h */, B9BC98FB25C0FFBA00C024FE /* pq_compat.h */, B9BC98E725C0FFB900C024FE /* pqueue.h */, B9BC98E525C0FFB900C024FE /* rand.h */, B9BC98C225C0FFB900C024FE /* rc2.h */, B9BC98DF25C0FFB900C024FE /* rc4.h */, B9BC98EF25C0FFB900C024FE /* ripemd.h */, B9BC98EC25C0FFB900C024FE /* rsa.h */, B9BC98CB25C0FFB900C024FE /* safestack.h */, B9BC98E925C0FFB900C024FE /* seed.h */, B9BC98BD25C0FFB900C024FE /* sha.h */, B9BC98D625C0FFB900C024FE /* srp.h */, B9BC98F425C0FFB900C024FE /* srtp.h */, B9BC98D525C0FFB900C024FE /* ssl.h */, B9BC98EB25C0FFB900C024FE /* ssl2.h */, B9BC98B025C0FFB900C024FE /* ssl3.h */, B9BC98C625C0FFB900C024FE /* ssl23.h */, B9BC98E025C0FFB900C024FE /* stack.h */, B9BC98F825C0FFBA00C024FE /* store.h */, B9BC98BE25C0FFB900C024FE /* symhacks.h */, B9BC98F125C0FFB900C024FE /* tls1.h */, B9BC98D325C0FFB900C024FE /* tmdiff.h */, B9BC98E625C0FFB900C024FE /* ts.h */, B9BC98CA25C0FFB900C024FE /* txt_db.h */, B9BC98C425C0FFB900C024FE /* ui_compat.h */, B9BC98BB25C0FFB900C024FE /* ui.h */, B9BC98F025C0FFB900C024FE /* whrlpool.h */, B9BC98C925C0FFB900C024FE /* x509_vfy.h */, B9BC98B925C0FFB900C024FE /* x509.h */, B9BC98C525C0FFB900C024FE /* x509v3.h */, ); path = openssl; sourceTree = "<group>"; @@ -1205,7 +1232,6 @@ B9BC98FC25C0FFBA00C024FE /* lib */ = { isa = PBXGroup; children = ( B9BC98FD25C0FFBA00C024FE /* libcrypto.a */, ); path = lib; sourceTree = "<group>"; @@ -1554,6 +1580,7 @@ B9BC99F825C0FFBD00C024FE /* EZCustomTableView.m in Sources */, B9BC9A2625C0FFBD00C024FE /* EZEditViewController.m in Sources */, AEC306D529B9F2DB000B3861 /* HDLEZVisitorRecordCell.m in Sources */, AEDBFBA529C3072D005F6512 /* HDLEZDeviceMsgCell.m in Sources */, B9BC9A2525C0FFBD00C024FE /* EZOnlineCameraCell.m in Sources */, B9BC999B25C0FFBD00C024FE /* UITableView+FDTemplateLayoutCell.m in Sources */, B9BC9A0325C0FFBD00C024FE /* CameraListCell.m in Sources */, @@ -1573,6 +1600,7 @@ B9BC999D25C0FFBD00C024FE /* UITableView+FDTemplateLayoutCellDebug.m in Sources */, B9BC999E25C0FFBD00C024FE /* UITableView+FDIndexPathHeightCache.m in Sources */, AEDD438929BEF0CD001D9477 /* HDLEZNormalCellView.m in Sources */, AEDBFB9F29C30126005F6512 /* HDLEZDeviceMsgListViewController.m in Sources */, B9BC99F325C0FFBD00C024FE /* UIButton+WebCache.m in Sources */, B9BC99B925C0FFBD00C024FE /* MWTapDetectingImageView.m in Sources */, B9BC99DE25C0FFBD00C024FE /* AFHTTPRequestOperationManager.m in Sources */, @@ -1600,6 +1628,7 @@ B9BC99DD25C0FFBD00C024FE /* AFURLSessionManager.m in Sources */, B9BC9A1A25C0FFBD00C024FE /* EZDeviceTableViewController.m in Sources */, B9BC99D625C0FFBD00C024FE /* AFNetworkActivityIndicatorManager.m in Sources */, AEDBFBA829C30DEF005F6512 /* HDLEZDevMsgListModel.m in Sources */, B9BC99EF25C0FFBD00C024FE /* SDWebImageDownloaderOperation.m in Sources */, AEE84D4329BAC7FE0078FDAD /* HDLEZConstants.m in Sources */, B9BC99BD25C0FFBD00C024FE /* MWGridCell.m in Sources */, @@ -1617,12 +1646,14 @@ B9BC99EC25C0FFBD00C024FE /* SDWebImageCompat.m in Sources */, B9BC99E125C0FFBD00C024FE /* AFNetworkReachabilityManager.m in Sources */, AEE84D3B29BABAC00078FDAD /* HDLEZVisitorRecordViewController.m in Sources */, AEDBFB9929C2B90F005F6512 /* HDLEZAlertInputView.m in Sources */, B9BC9A1B25C0FFBD00C024FE /* EZWifiTipsViewController.m in Sources */, B9BC99D925C0FFBD00C024FE /* UIActivityIndicatorView+AFNetworking.m in Sources */, B9BC9A0725C0FFBD00C024FE /* EZWifiConfigViewController.m in Sources */, B9BC9A1325C0FFBD00C024FE /* EZLocalRealPlayViewController.m in Sources */, B9BC9A2725C0FFBD00C024FE /* EZAddByQRCodeViewController.m in Sources */, AEDD438529BEE6D2001D9477 /* HDLEZCreateTemPassView.m in Sources */, AEDBFB9C29C2FC8D005F6512 /* HDLEZDeviceMsgInfoModel.m in Sources */, B9BC99FC25C0FFBD00C024FE /* NSDate-Utilities.m in Sources */, B9BC9A0425C0FFBD00C024FE /* MessageListCell.m in Sources */, B9EA4E8525C7E806000FFDA2 /* UIScrollView+MJRefresh.m in Sources */, @@ -1660,6 +1691,7 @@ B9BC9A2225C0FFBD00C024FE /* UINavigationController+EZOpenSDK.m in Sources */, B9BC99E725C0FFBD00C024FE /* SDWebImageDecoder.m in Sources */, B9EA4E9225C7E806000FFDA2 /* MJRefreshGifHeader.m in Sources */, AEDBFBA229C302E0005F6512 /* HDLEZDeviceMsgListView.m in Sources */, B9BC99EE25C0FFBD00C024FE /* SDImageCache.m in Sources */, B9BC99D725C0FFBD00C024FE /* UIImageView+AFNetworking.m in Sources */, B9EA4E9125C7E806000FFDA2 /* MJRefreshStateHeader.m in Sources */, EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.h
New file @@ -0,0 +1,39 @@ // // HDLEZAlertInputView.h // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN typedef void (^HDLEZAlertInputViewSureBlock)(NSString* content); typedef void (^HDLEZAlertInputViewCancleBlock)(void); @interface HDLEZAlertInputView : UIView /*展示输入弹窗 @param title 标题 @param cancleTitle 删除按钮标题 @param sureTitle 确认按钮标题 @param keyboardType 键盘类型 @param cancle 取消回调 @param sure 确认回调 */ +(void)showInputAlertWithtitle:(NSString*)title cancleTitle:(NSString*)cancleTitle sureTitle:(NSString*)sureTitle keyboardType:(UIKeyboardType)keyboardType cancleBlock:(HDLEZAlertInputViewCancleBlock)cancle sureBlock:(HDLEZAlertInputViewSureBlock)sure; /*展示输入弹窗 @param view 展示的父view @param title 标题 @param cancleTitle 删除按钮标题 @param sureTitle 确认按钮标题 @param keyboardType 键盘类型 @param cancle 取消回调 @param sure 确认回调 */ +(void)showInputAlertToView:(UIView*)view title:(NSString*)title cancleTitle:(NSString*)cancleTitle sureTitle:(NSString*)sureTitle keyboardType:(UIKeyboardType)keyboardType cancleBlock:(HDLEZAlertInputViewCancleBlock)cancle sureBlock:(HDLEZAlertInputViewSureBlock)sure; @end NS_ASSUME_NONNULL_END EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.m
New file @@ -0,0 +1,207 @@ // // HDLEZAlertInputView.m // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import "HDLEZAlertInputView.h" //颜色 #define HDLEZAlertHEXCOLOR(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 green:((float)((rgbValue & 0xFF00) >> 8)) / 255.0 blue:((float)(rgbValue & 0xFF)) / 255.0 alpha:a] //字体 #define HDLEZ_Alert_Get_FontRegularWithSize(s) [UIFont fontWithName:@"PingFangSC-Regular" size:s] @interface HDLEZAlertInputView () @property (atomic, strong) UIView *inputV;//输入view @property (atomic, strong) UILabel *titleL;//标题lable @property (atomic, strong) UITextField *inputTextF;//输入textField @property (atomic, strong) UIButton *cancleBtn;//取消button @property (atomic, strong) UIButton *sureBtn;//确认button @property(nonatomic,strong)HDLEZAlertInputViewCancleBlock cancleBlock; //取消回调 @property(nonatomic,strong)HDLEZAlertInputViewSureBlock sureBlock; //确认回调 @end @implementation HDLEZAlertInputView /*展示输入弹窗 @param title 标题 @param cancleTitle 删除按钮标题 @param sureTitle 确认按钮标题 */ +(void)showInputAlertWithtitle:(NSString*)title cancleTitle:(NSString*)cancleTitle sureTitle:(NSString*)sureTitle keyboardType:(UIKeyboardType)keyboardType cancleBlock:(HDLEZAlertInputViewCancleBlock)cancle sureBlock:(HDLEZAlertInputViewSureBlock)sure{ [[[[UIApplication sharedApplication] windows] lastObject] makeKeyWindow]; [self showInputAlertToView:[[[UIApplication sharedApplication] windows] lastObject] title:title cancleTitle:cancleTitle sureTitle:sureTitle keyboardType:keyboardType cancleBlock:cancle sureBlock:sure]; } /*展示输入弹窗 */ +(void)showInputAlertToView:(UIView*)view title:(NSString*)title cancleTitle:(NSString*)cancleTitle sureTitle:(NSString*)sureTitle keyboardType:(UIKeyboardType)keyboardType cancleBlock:(HDLEZAlertInputViewCancleBlock)cancle sureBlock:(HDLEZAlertInputViewSureBlock)sure{ HDLEZAlertInputView *alert = [[self alloc] initWithView:view]; alert.titleL.text=title; [alert.cancleBtn setTitle:cancleTitle forState:UIControlStateNormal]; [alert.sureBtn setTitle:sureTitle forState:UIControlStateNormal]; alert.inputTextF.keyboardType=keyboardType; alert.cancleBlock=cancle; alert.sureBlock=sure; [view addSubview:alert]; [alert.inputTextF becomeFirstResponder];//进入编辑状态 } /*初始化view */ - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { //背景 UIView *backV=[[UIView alloc] initWithFrame:frame]; backV.backgroundColor=[UIColor blackColor]; backV.alpha=0.6; [self addSubview:backV]; //输入view CGFloat inputV_Width=frame.size.width-104; CGFloat inputV_Height=inputV_Width*0.64; _inputV=[[UIView alloc] initWithFrame:CGRectMake(52,(frame.size.height-inputV_Height)/2, inputV_Width, inputV_Height)]; _inputV.backgroundColor=HDLEZAlertHEXCOLOR(0xFFFFFF,1.0); _inputV.layer.cornerRadius=10; _inputV.layer.masksToBounds=YES; [self addSubview:_inputV]; //标题 _titleL=[[UILabel alloc] initWithFrame:CGRectMake(0, 20, inputV_Width, 24)]; _titleL.textAlignment=NSTextAlignmentCenter; _titleL.textColor=HDLEZAlertHEXCOLOR(0x4484F4,1.0); _titleL.font=HDLEZ_Alert_Get_FontRegularWithSize(16); [_inputV addSubview:_titleL]; //输入框 _inputTextF=[[UITextField alloc] initWithFrame:CGRectMake(24, (inputV_Height-40)/2, inputV_Width-48, 40)]; _inputTextF.textColor=HDLEZAlertHEXCOLOR(0x1B2D4D,1.0); _inputTextF.font=HDLEZ_Alert_Get_FontRegularWithSize(14); _inputTextF.backgroundColor=HDLEZAlertHEXCOLOR(0xF2F3F7,1.0); _inputTextF.layer.cornerRadius=4; _inputTextF.clearButtonMode=UITextFieldViewModeWhileEditing; [_inputV addSubview:_inputTextF]; //取消按钮 _cancleBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, inputV_Height-((inputV_Width/2)*0.33), inputV_Width/2, (inputV_Width/2)*0.33)]; [_cancleBtn setTitleColor:HDLEZAlertHEXCOLOR(0x798394,1.0) forState:UIControlStateNormal]; _cancleBtn.titleLabel.font=HDLEZ_Alert_Get_FontRegularWithSize(16); [_cancleBtn addTarget:self action:@selector(clickCancle) forControlEvents:UIControlEventTouchUpInside]; [_inputV addSubview:_cancleBtn]; //确定按钮 _sureBtn=[[UIButton alloc] initWithFrame:CGRectMake(inputV_Width/2, inputV_Height-((inputV_Width/2)*0.33), inputV_Width/2, (inputV_Width/2)*0.33)]; [_sureBtn setTitleColor:HDLEZAlertHEXCOLOR(0xFFFFFF,1.0) forState:UIControlStateNormal]; [_sureBtn setBackgroundColor:HDLEZAlertHEXCOLOR(0x4484F4,1.0)]; _sureBtn.titleLabel.font=HDLEZ_Alert_Get_FontRegularWithSize(16); [_sureBtn addTarget:self action:@selector(clickSure) forControlEvents:UIControlEventTouchUpInside]; [_inputV addSubview:_sureBtn]; //横线 UIView *lineV=[[UIView alloc] initWithFrame:CGRectMake(0, _sureBtn.frame.origin.y-0.3,inputV_Width/2 , 0.6)]; lineV.backgroundColor=HDLEZAlertHEXCOLOR(0x08141F,1.0); //添加点击屏幕手势 UITapGestureRecognizer *tapGr = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector (viewTapped)]; tapGr.cancelsTouchesInView = NO ; [backV addGestureRecognizer:tapGr]; //注册键盘通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillhide:) name:UIKeyboardWillHideNotification object:nil]; } return self; } -(void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self]; } //初始化alertView - (id)initWithView:(UIView *)view { return [self initWithFrame:view.bounds]; } /*点击取消 */ -(void)clickCancle{ if (self.cancleBlock) { self.cancleBlock(); } [self removeFromSuperview]; } /*点击确认 */ -(void)clickSure{ if (self.sureBlock) { self.sureBlock(self.inputTextF.text); } [self removeFromSuperview]; } /*点击背景view */ -(void)viewTapped{ // //键盘退出 [self endEditing:YES]; HDLEZLog(@"点击了背景"); // [_inputTextF becomeFirstResponder];//进入编辑状态 } /*将展示键盘 */ -(void)keyBoardWillShow:(NSNotification*)notification{ //获取键盘弹出的时间 double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; //获取键盘上端Y坐标 CGFloat keyboardY = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].origin.y; //获取输入框下端相对于window的Y坐标 CGRect rect = [_inputV convertRect:_inputV.bounds toView:[self appWindow]]; CGPoint tmp = rect.origin; CGFloat inputBoxY = tmp.y + _inputV.frame.size.height; //计算二者差值 CGFloat ty = keyboardY - inputBoxY-20; // NSLog(@"position keyboard: %f, inputbox: %f, ty: %f", keyboardY, inputBoxY, ty); //差值小于0,做平移变换 __weak __typeof(self)weakSelf = self; [UIView animateWithDuration:duration animations:^{ if (ty < 0) { weakSelf.inputV.transform = CGAffineTransformMakeTranslation(0, ty); } }]; } /*将关闭键盘 */ -(void)keyBoardWillhide:(NSNotification*)notification{ //获取键盘弹出的时间 double duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; //还原 __weak __typeof(self)weakSelf = self; [UIView animateWithDuration:duration animations:^{ weakSelf.inputV.transform = CGAffineTransformMakeTranslation(0, 0); }]; } /*获取单前window */ -(UIWindow*)appWindow{ UIWindow *window; if (@available(iOS 13.0, *)) { if ([UIApplication sharedApplication].delegate.window) { window=[UIApplication sharedApplication].delegate.window; }else{ window = [UIApplication sharedApplication].windows[0]; } } else { window = [UIApplication sharedApplication].delegate.window; } return window; } @end EZSDK/EZSDK/EZ/Global/EZHttpUtil.h
@@ -80,13 +80,11 @@ * @since 河东门锁终端授权接口 * @param password 门锁密码 * @param deviceId 设备id * @param verifyCode sdk获取的校验码 * @param completion 回调block,error为空时表示成功 * */ - (void)authLockByHDL:(NSString *)password deviceId:(NSString *)deviceId verifyCode:(NSString *)verifyCode completion:(void (^)(ResponseData *responseData))completion; @@ -132,6 +130,19 @@ deviceId:(NSString *)deviceId completion:(void (^)(ResponseData *responseData))completion; /** * @since 河东获取设备消息 * @param deviceId 设备id * @param pageSize 页面大小 * @param pageNo 当前页 * @param completion 回调block,error为空时表示成功 * */ - (void)getDeviceMessageByHDL:(NSString *)deviceId pageSize:(NSInteger)pageSize pageNo:(NSInteger)pageNo completion:(void (^)(ResponseData *responseData))completion; @end NS_ASSUME_NONNULL_END EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
@@ -24,6 +24,7 @@ #define API_POST_EZ_TempList @"/home-wisdom/platform/yingshi/lock/temp/list"//萤石门临时密码列表 #define API_POST_EZ_AddTemp @"/home-wisdom/platform/yingshi/lock/temp/add"//萤石门添加临时密码 #define API_POST_EZ_DeleteTemp @"/home-wisdom/platform/yingshi/lock/temp/delete"//萤石门删除临时密码 #define API_POST_EZ_DeviceMessage @"/home-wisdom/app/device/message"//萤石设备消息列表 #define API_POST_EZ_GetAlarmList @"/home-wisdom/platform/yingshi/alarm/records"//获取报警消息 #define API_POST_EZ_DeleteAlarmMes @"/home-wisdom/platform/yingshi/alarm/delete"//删除报警消息 @@ -116,7 +117,7 @@ verifyCode:(NSString *)verifyCode completion:(void (^)(ResponseData *responseData))completion{ //2.设置请求参数 //设置请求参数 NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters setValue:deviceSerial forKey:@"deviceSerial"]; [parameters setValue:verifyCode forKey:@"validateCode"]; @@ -125,7 +126,16 @@ parameters = [self GetSignRequestDictionary:parameters]; HDLEZLog(@"添加设备参数:%@",parameters); [self requestHttpsPost:API_POST_EZ_AddDevice parameters:parameters completion:^(ResponseData *responseData) { if (responseData.success){//添加成功,触发代理 if ([EZSDK sharedInstance].delegate&&[[EZSDK sharedInstance].delegate respondsToSelector:@selector(addDeviceSuccessed)]) { [[EZSDK sharedInstance].delegate addDeviceSuccessed]; } } if (completion) { completion (responseData); } @@ -229,20 +239,17 @@ * @since 河东门锁终端授权接口 * @param password 门锁密码 * @param deviceId 设备id * @param verifyCode sdk获取的校验码 * @param completion 回调block,error为空时表示添加成功 * */ - (void)authLockByHDL:(NSString *)password deviceId:(NSString *)deviceId verifyCode:(NSString *)verifyCode completion:(void (^)(ResponseData *responseData))completion{ //2.设置请求参数 NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters setValue:deviceId forKey:@"deviceId"]; [parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"]; [parameters setValue:password forKey:@"password"]; [parameters setValue:verifyCode forKey:@"verifyCode"]; [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"]; parameters = [self GetSignRequestDictionary:parameters]; @@ -294,7 +301,7 @@ */ - (void)getTempListByHDL:(NSString *)deviceId completion:(void (^)(ResponseData *responseData))completion{ //2.设置请求参数 //设置请求参数 NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters setValue:deviceId forKey:@"deviceId"]; [parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"]; @@ -367,6 +374,37 @@ } /** * @since 河东获取设备消息 * @param deviceId 设备id * @param pageSize 页面大小 * @param pageNo 当前页 * @param completion 回调block,error为空时表示成功 * */ - (void)getDeviceMessageByHDL:(NSString *)deviceId pageSize:(NSInteger)pageSize pageNo:(NSInteger)pageNo completion:(void (^)(ResponseData *responseData))completion{ //设置请求参数 NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters setValue:deviceId forKey:@"deviceId"]; [parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageSize] forKey:@"pageSize"]; [parameters setValue:[NSString stringWithFormat:@"%ld",(long)pageNo] forKey:@"pageNo"]; [parameters setValue:[NSString stringWithFormat:@"%@",[GlobalKit shareKit].hdlAppKey] forKey:@"appKey"]; [parameters setValue:[GlobalKit shareKit].hdlHomeId forKey:@"homeId"]; parameters = [self GetSignRequestDictionary:parameters]; NSLog(@"获取设备消息参数:%@",parameters); [self requestHttpsPost:API_POST_EZ_DeviceMessage parameters:parameters completion:^(ResponseData *responseData) { if (completion) { completion (responseData); } }]; } /// 刷新token /// @param block 结果 - (void)refreshHDLToken:(void (^)(BOOL isSuccess))block{ EZSDK/EZSDK/EZ/Global/GlobalKit.h
@@ -7,7 +7,7 @@ // #import <Foundation/Foundation.h> #import "EZSDK.h" #import "HDLEZConstants.h" //#define CURR_LANG ([[NSLocale preferredLanguages] objectAtIndex:0]) //#define LanguageIsChinese ([CURR_LANG rangeOfString:@"zh-Hans"].location != NSNotFound) ////中文走国内, 不是中文走海外 EZSDK/EZSDK/EZ/Global/HDLEZConstants.h
@@ -119,6 +119,17 @@ //// 通话类型 //#define HDLF_FV_CALL_TYPE_KEY @"HDLEZCallTypeKey" //萤石门锁spk #define HDLEZ_DOOR_SPK @"security.door.ezviz" //设备类型 typedef enum { HDLEZDeviceType_Default=0, //默认类型 HDLEZDeviceType_Door=1,//门锁 }HDLEZDeviceType; @interface HDLEZConstants : NSObject /*获取当前controller */ @@ -185,4 +196,8 @@ @param number 内容 */ +(BOOL)validateNumber:(NSString*)number; /* 将nil转为"" */ +(NSString*)turnNil:(NSString *)str; @end EZSDK/EZSDK/EZ/Global/HDLEZConstants.m
@@ -307,4 +307,14 @@ } return res; } /* 将nil转为"" */ +(NSString*)turnNil:(NSString *)str{ if (str == nil || str == NULL) { return @""; }else{ return str; } } @end EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.h
New file @@ -0,0 +1,16 @@ // // HDLEZDeviceMsgListViewController.h // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import "HDLEZBaseViewController.h" NS_ASSUME_NONNULL_BEGIN @interface HDLEZDeviceMsgListViewController : HDLEZBaseViewController @property (nonatomic, copy)NSString *deviceId;//设备id @end NS_ASSUME_NONNULL_END EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.m
New file @@ -0,0 +1,121 @@ // // HDLEZDeviceMsgListViewController.m // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import "HDLEZDeviceMsgListViewController.h" #import "HDLEZDeviceMsgListView.h" #import "MJRefreshNormalHeader.h" #import "MJRefreshAutoNormalFooter.h" #import "HDLEZDevMsgListModel.h" @interface HDLEZDeviceMsgListViewController () @property (nonatomic, strong) HDLEZDeviceMsgListView *msgListV;//消息列表view @property (nonatomic, strong) MJRefreshNormalHeader *header;//刷新header @property (nonatomic, strong) MJRefreshAutoNormalFooter *footer;//加载footer @property (nonatomic, strong) HDLEZDevMsgListModel *msgListModel;//消息列表model @property (nonatomic, strong) NSMutableArray<HDLEZDeviceMsgInfoModel*> *msgList;//消息列表(分页获取到的所有消息) @property (nonatomic, assign) NSInteger currentPageNo;//当前页码 @property (nonatomic, assign) NSInteger pageSize;//分页容量 @end @implementation HDLEZDeviceMsgListViewController - (void)viewDidLoad { [super viewDidLoad]; [self setTopBarViewWithTitle:HDLEZLocallizedString(@"device_history")]; [self.topBarView.bottomLine setHidden:YES]; // Do any additional setup after loading the view. } -(void)addSubViews{ // _msgListV=[[HDLEZDeviceMsgListView alloc] init]; [self.view addSubview:_msgListV]; [_msgListV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view).offset(HDLEZ_APP_TOP_BAR_HEIGHT); make.left.bottom.right.equalTo(self.view); }]; // _msgListV.choseDelegate=self; //下拉刷新 // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法) _header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(refreshData)]; // 设置自动切换透明度(在导航栏下面自动隐藏) _header.automaticallyChangeAlpha = YES; // 隐藏时间 _header.lastUpdatedTimeLabel.hidden = YES; // 隐藏刷新状态文本 _header.stateLabel.hidden = YES; _msgListV.mj_header=_header; //上拉加载更多 _footer=[MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMore)]; _footer.refreshingTitleHidden=YES; [_footer setTitle:@"" forState:MJRefreshStateIdle]; [_footer setTitle:HDLEZLocallizedString(@"device_his_no_more_data") forState:MJRefreshStateNoMoreData]; _footer.stateLabel.textColor=HDLEZ_COLOR_TEXT_LIGHT_GRAY; _msgListV.mj_footer=_footer; //开始加载数据 [_header beginRefreshing]; } /*刷新数据 */ -(void)refreshData{ self.msgList=[[NSMutableArray alloc] init]; _currentPageNo=1; _pageSize=20; [self getMsgList]; } /*加载更多 */ -(void)loadMore{ // _currentPageNo+=1; [self getMsgList]; } /*获取历史记录 */ -(void)getMsgList{ __weak __typeof(self)weakSelf = self; [[EZHttpUtil sharedManager] getDeviceMessageByHDL:self.deviceId pageSize:_pageSize pageNo:_currentPageNo completion:^(ResponseData * _Nonnull responseData) { [weakSelf.header endRefreshing]; [weakSelf.footer endRefreshing]; weakSelf.msgListModel=[HDLEZDevMsgListModel yy_modelWithDictionary:responseData.data]; if (responseData.success) { weakSelf.msgListModel=[HDLEZDevMsgListModel yy_modelWithDictionary:responseData.data]; if (weakSelf.msgListModel.list.count!=0) { [weakSelf.msgList addObjectsFromArray:weakSelf.msgListModel.list]; weakSelf.msgListV.msgList=weakSelf.msgList; weakSelf.currentPageNo+=1; }else{ [weakSelf.footer endRefreshingWithNoMoreData]; } }else{ [weakSelf.view makeToast:responseData.message duration:1.5 position:@"center"]; } }]; } @end EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZVisitorRecordViewController.m
@@ -78,7 +78,16 @@ [[EZHttpUtil sharedManager] getTempListByHDL:self.deviceId completion:^(ResponseData * _Nonnull responseData) { HDLEZLog(@"临时密码列表:%@",responseData.data); [weakSelf.header endRefreshing]; if (responseData.success) { weakSelf.visitorRecordV.temPList=[NSArray yy_modelArrayWithClass:[HDLEZTemInfoModel class] json:responseData.data]; // if (weakSelf.visitorRecordV.temPList.count==0) { // // } }else{ [weakSelf.view makeToast:responseData.message duration:1.5 position:@"center"]; } }]; } EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.h
New file @@ -0,0 +1,22 @@ // // HDLEZDevMsgListModel.h // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import <Foundation/Foundation.h> #import "HDLEZDeviceMsgInfoModel.h" NS_ASSUME_NONNULL_BEGIN @interface HDLEZDevMsgListModel : NSObject @property (nonatomic, assign)NSInteger totalCount;//总数 @property (nonatomic, assign)NSInteger totalPage;//总页数 @property (nonatomic, assign)NSInteger pageNo;//当前页数 @property (nonatomic, assign)NSInteger pageSize;//页面容量 @property (nonatomic, strong) NSArray<HDLEZDeviceMsgInfoModel*> *list;//消息列表 @end NS_ASSUME_NONNULL_END EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.m
New file @@ -0,0 +1,14 @@ // // HDLEZDevMsgListModel.m // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import "HDLEZDevMsgListModel.h" @implementation HDLEZDevMsgListModel + (NSDictionary *)modelContainerPropertyGenericClass { return @{@"list" : [HDLEZDeviceMsgInfoModel class]}; } @end EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.h
New file @@ -0,0 +1,19 @@ // // HDLEZDeviceMsgInfoModel.h // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface HDLEZDeviceMsgInfoModel : NSObject @property (nonatomic, copy)NSString *title;//标题 @property (nonatomic, copy)NSString *content;//内容 @property (nonatomic, copy)NSString *level;//消息等级 @property (nonatomic, copy)NSString *createTime;//创建时间 @end NS_ASSUME_NONNULL_END EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.m
New file @@ -0,0 +1,12 @@ // // HDLEZDeviceMsgInfoModel.m // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import "HDLEZDeviceMsgInfoModel.h" @implementation HDLEZDeviceMsgInfoModel @end EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.h
New file @@ -0,0 +1,18 @@ // // HDLEZDeviceMsgCell.h // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import <UIKit/UIKit.h> #import "HDLEZDeviceMsgInfoModel.h" NS_ASSUME_NONNULL_BEGIN @interface HDLEZDeviceMsgCell : UITableViewCell @property (nonatomic, strong)HDLEZDeviceMsgInfoModel* msgInfo;//消息详情 @end NS_ASSUME_NONNULL_END EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.m
New file @@ -0,0 +1,108 @@ // // HDLEZDeviceMsgCell.m // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import "HDLEZDeviceMsgCell.h" @interface HDLEZDeviceMsgCell(){ UIFont *titleFont,*describeFont; } @property (nonatomic, strong)UILabel *titleL;//标题lable @property (nonatomic, strong)UILabel *timeL;//时间lable @property (nonatomic, strong)UILabel *describeL;//描述lable @property (nonatomic, strong)UIView *lineV;//下划线 @end @implementation HDLEZDeviceMsgCell - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } -(instancetype)initWithFrame:(CGRect)frame{ if(self = [super initWithFrame:frame]){ self.frame=frame; self.selectionStyle=UITableViewCellSelectionStyleNone; titleFont=HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14); describeFont=HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_12); [self initUI]; } return self; } -(void)initUI{ //标题L _titleL=[[UILabel alloc] init]; _titleL.font=titleFont; _titleL.textColor=HDLEZ_COLOR_TITLE_BLACK; _titleL.adjustsFontSizeToFitWidth=YES; [self.contentView addSubview:_titleL]; [_titleL mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.contentView).offset(12); make.left.equalTo(self.contentView).offset(16); make.height.mas_equalTo(22); make.right.equalTo(self.contentView).offset(-16); }]; //时间L _timeL=[[UILabel alloc] init]; _timeL.font=describeFont; _timeL.textColor=HDLEZ_COLOR_TEXT_LIGHT_GRAY; _timeL.adjustsFontSizeToFitWidth=YES; [self.contentView addSubview:_timeL]; [_timeL mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self.contentView).offset(-12); make.left.equalTo(_titleL); make.height.mas_equalTo(17); make.width.mas_equalTo(120); }]; //描述L _describeL=[[UILabel alloc] init]; _describeL.font=describeFont; _describeL.textColor=HDLEZ_COLOR_TEXT_LIGHT_GRAY; _describeL.adjustsFontSizeToFitWidth=YES; _describeL.textAlignment=NSTextAlignmentRight; [self.contentView addSubview:_describeL]; [_describeL mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self.contentView).offset(-12); make.height.mas_equalTo(17); make.right.equalTo(_titleL); make.left.equalTo(_timeL.mas_right); }]; //下划线 _lineV=[[UIView alloc] init]; [self.contentView addSubview:_lineV]; [_lineV mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(_titleL.mas_left); make.bottom.equalTo(self.contentView); make.right.equalTo(_describeL.mas_right); make.height.mas_equalTo(1); }]; _lineV.backgroundColor=HDLEZ_COLOR_BACKGROUND_LINE; } /*时间戳转时间 */ -(NSString *)turnDate:(NSString*)dateStr{ return [HDLEZConstants timeStrWithFormate:[NSString stringWithFormat:@"yyyy%@MM%@dd%@ HH:mm",HDLEZLocallizedString(@"device_temp_year"),HDLEZLocallizedString(@"device_temp_month"),HDLEZLocallizedString(@"device_temp_date")] data:[NSDate dateWithTimeIntervalSince1970:[dateStr doubleValue]/1000]]; } /*设置消息值 */ -(void)setMsgInfo:(HDLEZDeviceMsgInfoModel *)msgInfo{ _msgInfo=msgInfo; _titleL.text=[HDLEZConstants turnNil:msgInfo.title] ; _timeL.text=[NSString stringWithFormat:@"%@",[self turnDate:msgInfo.createTime]]; _describeL.text=[HDLEZConstants turnNil:msgInfo.content]; } @end EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.h
New file @@ -0,0 +1,16 @@ // // HDLEZDeviceMsgListView.h // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import <UIKit/UIKit.h> #import "HDLEZDeviceMsgInfoModel.h" NS_ASSUME_NONNULL_BEGIN @interface HDLEZDeviceMsgListView : UITableView<UITableViewDelegate,UITableViewDataSource> @property (nonatomic, strong) NSArray<HDLEZDeviceMsgInfoModel*> *msgList;//消息列表 @end NS_ASSUME_NONNULL_END EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.m
New file @@ -0,0 +1,64 @@ // // HDLEZDeviceMsgListView.m // EZSDK // // Created by 陈启扬 on 2023/3/16. // #import "HDLEZDeviceMsgListView.h" #import "HDLEZDeviceMsgCell.h" @implementation HDLEZDeviceMsgListView{ CGFloat cellHeight; } -(instancetype)init{ self = [super init]; if (self) { self.backgroundColor = HDLEZ_COLOR_VIEW_BACKGROUND; // self.backgroundColor = [UIColor greenColor]; self.separatorStyle = NO; self.showsVerticalScrollIndicator=NO; self.delegate = self; self.dataSource = self; cellHeight=65; [self setSeparatorInset:UIEdgeInsetsZero]; // [self setLayoutMargins:UIEdgeInsetsZero]; } return self; } -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return _msgList.count; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return cellHeight; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ HDLEZLog(@"初始化cell"); HDLEZDeviceMsgCell *cell = [tableView dequeueReusableCellWithIdentifier:@"HDLEZDeviceMsgCell"]; if(cell == nil){ cell=[[HDLEZDeviceMsgCell alloc]initWithFrame:CGRectMake(0, 0, self.frame.size.width, cellHeight)]; } HDLEZDeviceMsgInfoModel *model=self.msgList[indexPath.row]; cell.msgInfo=model; // HDLEZLog(@"初始化cell ID:%@",model.extVisitorId); return cell; } /*设置消息列表值 */ -(void)setMsgList:(NSArray<HDLEZDeviceMsgInfoModel *> *)msgList{ _msgList=msgList; [self reloadData]; } @end EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.h
@@ -12,4 +12,7 @@ @property (nonatomic) BOOL needRefresh; @property (nonatomic, strong)NSArray *filterTypes;//需要过滤的型号 @end EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.m
@@ -70,6 +70,10 @@ [self.logoutBtn setEnabled: NO]; [self checkEZIsLogin]; // self.addButton=nil; self.addButton=[[UIBarButtonItem alloc] init]; // self.addButton=[UIImage imageNamed:@""]; } @@ -253,7 +257,17 @@ return; } [weakSelf.deviceList removeAllObjects]; [weakSelf.deviceList addObjectsFromArray:deviceList]; HDLEZLog(@"获取到的设备列表:%@",deviceList); NSMutableArray *finalDeviceList=[NSMutableArray arrayWithArray:deviceList]; if (self.filterTypes&&self.filterTypes.count!=0) {//判断是否需要过滤 for (EZDeviceInfo *deviceInfo in deviceList) { HDLEZLog(@"获取到的设备列表category:%@",deviceInfo.category); if ([self.filterTypes containsObject:[HDLEZConstants turnNil:deviceInfo.category]]) { [finalDeviceList removeObject:deviceInfo]; } } } [weakSelf.deviceList addObjectsFromArray:finalDeviceList]; [weakSelf.tableView reloadData]; [weakSelf.tableView.header endRefreshing]; if (weakSelf.deviceList.count == totalCount) @@ -310,7 +324,17 @@ // [weakSelf.view makeToast:error.description duration:2.0 position:@"bottom"]; // return; // } [weakSelf.deviceList addObjectsFromArray:deviceList]; NSMutableArray *finalDeviceList=[NSMutableArray arrayWithArray:deviceList]; if (self.filterTypes&&self.filterTypes.count!=0) {//判断是否需要过滤 for (EZDeviceInfo *deviceInfo in deviceList) { if ([self.filterTypes containsObject:[HDLEZConstants turnNil:deviceInfo.category]]) { [finalDeviceList removeObject:deviceInfo]; } } } [weakSelf.deviceList addObjectsFromArray:finalDeviceList]; // [weakSelf.deviceList addObjectsFromArray:deviceList]; [weakSelf.tableView reloadData]; [weakSelf.tableView.footer endRefreshing]; if (weakSelf.deviceList.count == totalCount) EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.h
@@ -16,6 +16,10 @@ @property (nonatomic, copy) NSString *hubCoDevSerial; @property (nonatomic) NSInteger cameraIndex; @property (nonatomic, copy) NSString *deviceSerial;//设备序列号 @property (nonatomic, copy) NSString *deviceId;//设备id - (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo; EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
@@ -23,7 +23,7 @@ #import "EZStreamPlayer.h" #import "MBProgressHUD.h" #import "EZPMPlayPrivateTokenInfo.h" #import "HDLEZAlertInputView.h" #define MinimumZoomScale 1.0 #define MaximumZoomScale 4.0 @@ -90,6 +90,8 @@ @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @property (weak, nonatomic) IBOutlet UILabel *zoomSizeLabel; @property (nonatomic, strong) HDLEZButton *unlockButton;//开锁按钮 @property (nonatomic, copy) NSString *streamToken; @end @@ -112,6 +114,197 @@ self.ptzView.hidden = YES; self.talkView.hidden = YES; if (!self.deviceInfo) {//如果没有传deviceInfo,需主动获取 [self getDeviceInfo]; return; } //初始化相关数据 [self initialData]; // self.talkButton.enabled = self.deviceInfo.isSupportTalk; // self.controlButton.enabled = self.deviceInfo.isSupportPTZ; // self.captureButton.enabled = NO; // self.localRecordButton.enabled = NO; // self.streamPlayBtn.hidden = YES; // // if (_url) // { // _player = [EZOPENSDK createPlayerWithUrl:_url]; // } // else if([self.deviceInfo.deviceType containsString:@"CAS"]) //hub // { // _cameraInfo = [[EZCameraInfo alloc]init]; //兼容demo之前的业务逻辑,手动填充了cameraInfo,实际开发直接传入序列号和通道号生成EZPlayer即可 // _cameraInfo.deviceSerial = _hubCoDevSerial; // _cameraInfo.cameraNo = _cameraIndex; // _player = [EZOPENSDK createPlayerWithDeviceSerial:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo]; // } // else // { // _cameraInfo = [self.deviceInfo.cameraInfo dd_objectAtIndex:_cameraIndex]; // _player = [EZOPENSDK createPlayerWithDeviceSerial:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo]; // _talkPlayer = [EZOPENSDK createPlayerWithDeviceSerial:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo]; // if (_cameraInfo.videoLevel == 2) // { // [self.qualityButton setTitle:NSLocalizedString(@"device_quality_high", @"高清") forState:UIControlStateNormal]; // } // else if (_cameraInfo.videoLevel == 1) // { // [self.qualityButton setTitle:NSLocalizedString(@"device_quality_median", @"均衡") forState:UIControlStateNormal]; // } // else // { // [self.qualityButton setTitle:NSLocalizedString(@"device_quality_low",@"流畅") forState:UIControlStateNormal]; // } // } // if (_cameraInfo.cameraNo == 0 || [self.deviceInfo.deviceType containsString:@"CAS"]) { //不支持清晰度切换 // self.qualityButton.hidden = YES; // } // // if (self.deviceInfo.cameraInfo.count > 1) { // self.title = [NSString stringWithFormat:@"Camera %ld", (long)_cameraInfo.cameraNo]; // } // else { // self.title = _deviceInfo.deviceName; // } // self.largeTitleLabel.text = self.title; // [self hidenWatchFunc]; // //#if DEBUG // if (!_url) // { // //抓图接口演示代码 // [EZOPENSDK captureCamera:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo completion:^(NSString *url, NSError *error) { // NSLog(@"[%@] capture cameraNo is [%d] url is %@, error is %@", _cameraInfo.deviceSerial, (int)_cameraInfo.cameraNo, url, error); // }]; // } //#endif // // _player.delegate = self; // _talkPlayer.delegate = self; // //判断设备是否加密,加密就从demo的内存中获取设备验证码填入到播放器的验证码接口里,本demo只处理内存存储,本地持久化存储用户自行完成 // if (self.deviceInfo.isEncrypt) // { // NSString *verifyCode = [[GlobalKit shareKit].deviceVerifyCodeBySerial objectForKey:self.deviceInfo.deviceSerial]; // [_player setPlayVerifyCode:verifyCode]; // [_talkPlayer setPlayVerifyCode:verifyCode]; // } // [_player setPlayerView:_playerView]; // BOOL hdStatus = [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"EZVideoPlayHardDecodingStatus_%@", self.deviceInfo.deviceSerial]]; // [_player setHDPriority:hdStatus]; // [_player startRealPlay]; // // if(!_loadingView) // _loadingView = [[HIKLoadView alloc] initWithHIKLoadViewStyle:HIKLoadViewStyleSqureClockWise]; // [self.view insertSubview:_loadingView aboveSubview:self.playerView]; // [_loadingView mas_makeConstraints:^(MASConstraintMaker *make) { // make.width.height.mas_equalTo(@14); // make.centerX.mas_equalTo(self.playerView.mas_centerX); // make.centerY.mas_equalTo(self.playerView.mas_centerY); // }]; // [self.loadingView startSquareClcokwiseAnimation]; // // self.largeBackButton.hidden = YES; // _isOpenSound = YES; // // [self.controlButton dd_centerImageAndTitle]; // [self.talkButton dd_centerImageAndTitle]; // [self.captureButton dd_centerImageAndTitle]; // [self.localRecordButton dd_centerImageAndTitle]; // // [self.voiceButton setImage:[UIImage imageNamed:@"preview_unvoice_btn_sel"] forState:UIControlStateHighlighted]; // [self addLine]; // // self.localRecordLabel.layer.borderColor = [UIColor whiteColor].CGColor; // self.localRecordLabel.layer.cornerRadius = 12.0f; // self.localRecordLabel.layer.borderWidth = 1.0f; // self.localRecordLabel.clipsToBounds = YES; // self.playButton.enabled = NO; // // // self.scrollView.minimumZoomScale = MinimumZoomScale; // self.scrollView.maximumZoomScale = MaximumZoomScale; // self.scrollView.backgroundColor = [UIColor clearColor]; // self.scrollView.delegate = self; // self.scrollView.showsHorizontalScrollIndicator = NO; // self.scrollView.showsVerticalScrollIndicator = NO; // self.scrollView.userInteractionEnabled = YES; // self.scrollView.multipleTouchEnabled = YES; // self.scrollView.pagingEnabled = NO; // // if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//为门锁时,只显示麦克风和开门按钮 // self.captureButton.hidden=YES; // self.localRecordButton.hidden=YES; // // [self.controlButton setTitle:NSLocalizedString(@"device_open", @"开门") forState:UIControlStateNormal]; // } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.navigationController.navigationBar.hidden = NO;//2021-02-01 self.ptzViewContraint.constant = self.bottomView.frame.size.height; self.talkViewContraint.constant = self.ptzViewContraint.constant; } - (void)viewWillDisappear:(BOOL)animated { // self.navigationController.navigationBarHidden = YES;//2021-02-01 添加隐藏navigationBarHidden [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideQualityView) object:nil]; //结束本地录像 if(self.localRecordButton.selected) { [_player stopLocalRecordExt:^(BOOL ret) { NSLog(@"%d", ret); [_recordTimer invalidate]; _recordTimer = nil; self.localRecordLabel.hidden = YES; [self saveRecordToPhotosAlbum:_filePath]; _filePath = nil; }]; } NSLog(@"viewWillDisappear"); [super viewWillDisappear:animated]; } - (void)viewDidDisappear:(BOOL)animated { NSLog(@"viewDidDisappear"); [super viewDidDisappear:animated]; [_player stopRealPlay]; if (_talkPlayer) { [_talkPlayer stopVoiceTalk]; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /*获取设备信息 */ -(void)getDeviceInfo{ //获取设备信息 [EZOpenSDK getDeviceInfo:self.deviceSerial completion:^(EZDeviceInfo *deviceInfo, NSError *error) { if(error) { NSLog(@"EZ 查询设备信息失败"); return; } if (deviceInfo) { self.deviceInfo=deviceInfo; [self initialData]; } }]; } /*初始化相关数据 */ -(void)initialData{ self.talkButton.enabled = self.deviceInfo.isSupportTalk; self.controlButton.enabled = self.deviceInfo.isSupportPTZ; self.captureButton.enabled = NO; @@ -225,56 +418,64 @@ if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//为门锁时,只显示麦克风和开门按钮 self.captureButton.hidden=YES; self.localRecordButton.hidden=YES; self.controlButton.hidden=YES; [self.controlButton setTitle:NSLocalizedString(@"device_open", @"开门") forState:UIControlStateNormal]; } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.navigationController.navigationBar.hidden = NO;//2021-02-01 self.ptzViewContraint.constant = self.bottomView.frame.size.height; self.talkViewContraint.constant = self.ptzViewContraint.constant; } - (void)viewWillDisappear:(BOOL)animated { // self.navigationController.navigationBarHidden = YES;//2021-02-01 添加隐藏navigationBarHidden [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideQualityView) object:nil]; //结束本地录像 if(self.localRecordButton.selected) { [_player stopLocalRecordExt:^(BOOL ret) { NSLog(@"%d", ret); [_recordTimer invalidate]; _recordTimer = nil; self.localRecordLabel.hidden = YES; [self saveRecordToPhotosAlbum:_filePath]; _filePath = nil; //重设控制台按钮 _unlockButton=[[HDLEZButton alloc] init]; [self.bottomView addSubview:_unlockButton]; [_unlockButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.left.right.bottom.equalTo( self.controlButton); }]; } NSLog(@"viewWillDisappear"); [super viewWillDisappear:animated]; } - (void)viewDidDisappear:(BOOL)animated { NSLog(@"viewDidDisappear"); [super viewDidDisappear:animated]; [_player stopRealPlay]; if (_talkPlayer) { [_talkPlayer stopVoiceTalk]; [_unlockButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock_disable"] forState:UIControlStateNormal]; [_unlockButton setTitle:NSLocalizedString(@"device_open", @"开门") forState:UIControlStateNormal]; [_unlockButton dd_centerImageAndTitle]; [_unlockButton setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; _unlockButton.titleLabel.font=[UIFont systemFontOfSize:14]; [_unlockButton addTarget:self action:@selector(unlockDoor) forControlEvents:UIControlEventTouchUpInside]; _unlockButton.enabled=NO; // self.controlButton.enabled=YES; // [self.controlButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock"] forState:UIControlStateNormal]; // [self.controlButton setTitle:NSLocalizedString(@"device_open", @"开门") forState:UIControlStateNormal]; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /*开锁 */ -(void)unlockDoor{ [HDLEZAlertInputView showInputAlertWithtitle:HDLEZLocallizedString(@"device_please_input_door_password") cancleTitle:HDLEZLocallizedString(@"device_temp_cancle") sureTitle:HDLEZLocallizedString(@"device_temp_sure") keyboardType:UIKeyboardTypeASCIICapableNumberPad cancleBlock:^{ } sureBlock:^(NSString * _Nonnull content) { HDLEZLog(@"点击了确认:%@",content); [MBProgressHUD showHUDAddedTo:self.view animated:YES]; __weak __typeof(self)weakSelf = self; [[EZHttpUtil sharedManager] authLockByHDL:content deviceId:self.deviceId completion:^(ResponseData * _Nonnull responseData) { if (responseData.success) { [[EZHttpUtil sharedManager] remoteOpenByHDL:self.streamToken deviceId:self.deviceId completion:^(ResponseData * _Nonnull responseData) { [MBProgressHUD hideHUDForView:weakSelf.view animated:YES]; if (responseData.success) { [weakSelf.view makeToast:HDLEZLocallizedString(@"device_open_success") duration:1.5 position:@"center"]; }else{ [weakSelf.view makeToast:responseData.message duration:1.5 position:@"center"]; } }]; }else{ [MBProgressHUD hideHUDForView:weakSelf.view animated:YES]; [weakSelf.view makeToast:responseData.message duration:1.5 position:@"center"]; } }]; }]; } /* #pragma mark - Navigation @@ -506,6 +707,11 @@ - (void)player:(EZPlayer *)player playPrivateTokenInfo:(EZPMPlayPrivateTokenInfo *)tokenInfo { NSLog(@"开门token--->%@", tokenInfo.token); self.streamToken=tokenInfo.token; if (!_unlockButton.isEnabled) { [_unlockButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock"] forState:UIControlStateNormal]; _unlockButton.enabled=YES; } } #pragma mark - ValidateCode Methods @@ -724,7 +930,7 @@ } [weakSelf.player stopRealPlay]; _cameraInfo.videoLevel = type; weakSelf.cameraInfo.videoLevel = type; if (sender == weakSelf.highButton) { [weakSelf.qualityButton setTitle:NSLocalizedString(@"device_quality_high", @"高清") forState:UIControlStateNormal]; @@ -812,18 +1018,6 @@ - (IBAction)ptzViewShow:(id)sender { if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//为门锁设备时,执行开门 NSString *verifyCode = [[GlobalKit shareKit].deviceVerifyCodeBySerial objectForKey:self.deviceInfo.deviceSerial]; [[EZHttpUtil sharedManager] authLockByHDL:@"123456" deviceId:self.deviceInfo.deviceSerial verifyCode:verifyCode completion:^(ResponseData * _Nonnull responseData) { NSLog(@"终端授权结果:%@",responseData.data); [[EZHttpUtil sharedManager] remoteOpenByHDL:self.streamToken deviceId:self.deviceInfo.deviceSerial completion:^(ResponseData * _Nonnull responseData) { NSLog(@"开门结果:%@",responseData.data); }]; }]; return; } self.ptzView.hidden = NO; [self.bottomView bringSubviewToFront:self.ptzView]; self.ptzControlButton.alpha = 0; EZSDK/EZSDK/EZ/UIViewControllers/EZWifiInfoViewController.m
@@ -230,7 +230,10 @@ - (IBAction)nextAction:(id)sender { [self showModeSelect]; //热点配网 [self performSegueWithIdentifier:@"go2APWifiConfig" sender:nil]; // [self showModeSelect]; } @end EZSDK/EZSDK/EZ/Venders/openssl/lib/libcrypto.aBinary files differ
EZSDK/EZSDK/EZ/Venders/openssl/lib/libssl.aBinary files differ
EZSDK/EZSDK/EZSDK.h
@@ -8,13 +8,20 @@ #import <Foundation/Foundation.h> #import "EZDeviceInfo.h" //设备类型 typedef enum { HDLEZDeviceType_Default=0, //默认类型 HDLEZDeviceType_Door=1,//门锁 }HDLEZDeviceType; @protocol EZSDKDelegate <NSObject> //添加设备成功 -(void)addDeviceSuccessed; @end @interface EZSDK : NSObject @property (nonatomic, weak) id<EZSDKDelegate> delegate;//代理 ///sharedInstance + (instancetype)sharedInstance; @@ -40,6 +47,13 @@ 直接跳转到萤石摄像头列表 */ - (void)go2EZvizMonitor; /** 直接跳转到萤石摄像头列表(筛掉门锁设备) @param filterTepes 过滤型号数组 */ - (void)toEZDeviceListViewWithFilterTypes:(NSArray*)filterTepes; /** 跳转添加添加设备 */ @@ -47,17 +61,27 @@ /** 跳转添加添加设备 @param deviceType 设备类型 @param deviceType 设备spk(用于区分是否为门锁) */ - (void)addEzvizMonitorWithDeviceType:(HDLEZDeviceType)deviceType; - (void)addEzvizMonitorWithDeviceType:(NSString *)deviceType; /** 查看视频监控直播 */ - (void)Play:(EZDeviceInfo*)deviceInfo; /// 指定序列号 查看视频监控直播 /// @param deviceSerial 序列号 - (void)PlayWithDeviceSerial:(NSString *)deviceSerial; /** 根据spk进入门锁视频 @param deviceSerial 序列号 @param deviceId 设备id @param deviceType 设备spk(用于区分是否为门锁) */ -(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString*)deviceId deviceType:(NSString *)deviceType; /** 打开摄像头设置页面 */ @@ -75,5 +99,10 @@ */ - (void)toTemPassView:(NSString*)deviceId; /**设备历史记录页 @param deviceId 设备id */ - (void)toDeviceMsgListView:(NSString*)deviceId; @end EZSDK/EZSDK/EZSDK.m
@@ -20,8 +20,7 @@ #import "EZHCNetDeviceSDK.h" #import "EZMessagePhotoViewController.h" #import "HDLEZVisitorRecordViewController.h" #import "HDLEZDeviceMsgListViewController.h" @implementation EZSDK @@ -120,16 +119,34 @@ */ -(void)go2EZvizMonitor { // NSLog(@"go2EZvizMonitor"); // [GlobalKit shareKit].deviceType=HDLEZDeviceType_Default; // // NSLog(@"go2EZvizMonitor"); // //获取EZMain的stroyboard文件 // UIStoryboard *ezMainStoryboard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil]; // //获取EZMain.storyboard的实例ViewController--获取摄像头列表 // EZDeviceTableViewController *instanceVC = [ezMainStoryboard instantiateViewControllerWithIdentifier:@"EZCameraList"]; // //push摄像头列表的viewController // [[self getCurrentVC] setNavigationBarHidden:NO]; // // NSLog(@"willpush********"); // [[self getCurrentVC] pushViewController:instanceVC animated:YES]; // // NSLog(@"had pushed********"); [self toEZDeviceListViewWithFilterTypes:@[@""]]; } /** 直接跳转到萤石摄像头列表(筛掉门锁设备) @param filterTepes 过滤型号数组 */ - (void)toEZDeviceListViewWithFilterTypes:(NSArray*)filterTepes{ [GlobalKit shareKit].deviceType=HDLEZDeviceType_Default; //获取EZMain的stroyboard文件 UIStoryboard *ezMainStoryboard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil]; //获取EZMain.storyboard的实例ViewController--获取摄像头列表 EZDeviceTableViewController *instanceVC = [ezMainStoryboard instantiateViewControllerWithIdentifier:@"EZCameraList"]; instanceVC.filterTypes=filterTepes; //push摄像头列表的viewController [[self getCurrentVC] setNavigationBarHidden:NO]; // NSLog(@"willpush********"); [[self getCurrentVC] pushViewController:instanceVC animated:YES]; // NSLog(@"had pushed********"); } /** @@ -147,19 +164,20 @@ // // [UIView dd_showMessage:@"iOS 7.0以下扫码功能请自行实现"]; // NSLog(@"iOS 7.0以下扫码功能请自行实现"); // } [self addEzvizMonitorWithDeviceType:HDLEZDeviceType_Default]; [self addEzvizMonitorWithDeviceType:@""]; } /** 跳转添加添加设备 @param deviceType 设备类型 */ - (void)addEzvizMonitorWithDeviceType:(HDLEZDeviceType)deviceType{ - (void)addEzvizMonitorWithDeviceType:(NSString *)deviceType{ HDLEZDeviceType type=[deviceType isEqualToString:HDLEZ_DOOR_SPK] ? HDLEZDeviceType_Door : HDLEZDeviceType_Default; // NSLog(@"添加摄像头"); if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { UIStoryboard *addDeviceStoryBoard = [UIStoryboard storyboardWithName:@"AddDevice" bundle:nil]; EZAddByQRCodeViewController *rootViewController = [addDeviceStoryBoard instantiateViewControllerWithIdentifier:@"AddByQRCode"]; rootViewController.deviceType=deviceType; rootViewController.deviceType=type; [[self getCurrentVC] setNavigationBarHidden:NO]; [[self getCurrentVC] pushViewController:rootViewController animated:YES]; } else { @@ -173,6 +191,7 @@ */ -(void)Play:(EZDeviceInfo*)deviceInfo { [GlobalKit shareKit].deviceType=HDLEZDeviceType_Default; UIStoryboard *addDeviceStoryBoard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil]; EZLivePlayViewController *rootViewController = [addDeviceStoryBoard instantiateViewControllerWithIdentifier:@"EZLivePlayViewController"]; // NSLog(@"play--iphone--rootViewController"); @@ -199,6 +218,22 @@ [self Play:deviceInfo]; } }]; } /** 根据序列号进入门锁视频 @param deviceSerial 序列号 @param deviceId 设备id @param deviceType 设备spk(用于区分是否为门锁) */ -(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString*)deviceId deviceType:(NSString *)deviceType{ [GlobalKit shareKit].deviceType=[deviceType isEqualToString:HDLEZ_DOOR_SPK] ? HDLEZDeviceType_Door : HDLEZDeviceType_Default; UIStoryboard *ezMainStoryBoard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil]; EZLivePlayViewController *vc = [ezMainStoryBoard instantiateViewControllerWithIdentifier:@"EZLivePlayViewController"]; vc.deviceId=deviceId; vc.deviceSerial=deviceSerial; [[self getCurrentVC] setNavigationBarHidden:NO]; [[self getCurrentVC] pushViewController:vc animated:YES]; } /** @@ -235,6 +270,17 @@ [[self getCurrentVC] pushViewController:vc animated:YES]; } /**设备历史记录页 @param deviceId 设备id */ - (void)toDeviceMsgListView:(NSString*)deviceId{ HDLEZDeviceMsgListViewController *vc=[[HDLEZDeviceMsgListViewController alloc] init]; vc.deviceId=deviceId; [[self getCurrentVC] setNavigationBarHidden:YES]; [[self getCurrentVC] pushViewController:vc animated:YES]; } //// //-(void)goToEZMessagePhotoVC:(EZAlarmInfo*)alarmInfo{ // UIStoryboard *addDeviceStoryBoard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil];