1.新增历史记录相关页面及功能 2.修改配网为热点配网 3.设备列表增加过滤门锁功能 4.增加添加设备通知功能
17个文件已添加
19个文件已修改
1663 ■■■■ 已修改文件
EZSDK.IOS/EZSDK.IOS/ApiDefinition.cs 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/FQDateTimeSDK 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Info.plist 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK.IOS/EZSDK.IOS/Library/lib/FQDateTimeSDK.framework/Modules/module.modulemap 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK.xcodeproj/project.pbxproj 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.h 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/Base/HDLEZAlertInputView.m 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/Global/EZHttpUtil.h 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/Global/EZHttpUtil.m 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/Global/GlobalKit.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/Global/HDLEZConstants.h 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/Global/HDLEZConstants.m 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.h 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.m 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZVisitorRecordViewController.m 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.h 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDevMsgListModel.m 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.h 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Models/HDLEZDeviceMsgInfoModel.m 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.h 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgCell.m 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.h 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/TempPassword/Views/HDLEZDeviceMsgListView.m 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.h 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceTableViewController.m 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m 308 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/UIViewControllers/EZWifiInfoViewController.m 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/Venders/openssl/lib/libcrypto.a 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZ/Venders/openssl/lib/libssl.a 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZSDK.h 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EZSDK/EZSDK/EZSDK.m 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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/FQDateTimeSDK
Binary 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.plist
Binary 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.a
Binary 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];
        weakSelf.visitorRecordV.temPList=[NSArray yy_modelArrayWithClass:[HDLEZTemInfoModel class] json:responseData.data];
        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);
        }];
        [_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)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"];
            }
        }];
    }];
    
    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.
}
/*
#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.a
Binary files differ
EZSDK/EZSDK/EZ/Venders/openssl/lib/libssl.a
Binary 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];