提交
This commit is contained in:
34
TUIKit/TUIChat/CommonUI/Album/AlbumPicker.h
Normal file
34
TUIKit/TUIChat/CommonUI/Album/AlbumPicker.h
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// AlbumPicker.h
|
||||
// TUIChat
|
||||
//
|
||||
// Created by yiliangwang on 2024/10/30.
|
||||
// Copyright © 2024 Tencent. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
typedef void (^IAlbumPickerCallback)(NSDictionary *param);
|
||||
@protocol IAlbumPicker <NSObject>
|
||||
- (void)pickMediaWithCaller:(UIViewController *)caller
|
||||
originalMediaPicked:(IAlbumPickerCallback)mediaPicked
|
||||
progressCallback:(IAlbumPickerCallback)progressCallback
|
||||
finishedCallback:(IAlbumPickerCallback)finishedCallback;
|
||||
@end
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface AlbumPicker : NSObject
|
||||
|
||||
@property(nonatomic,strong) id<IAlbumPicker> advancedAlbumPicker;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
+ (void)registerAdvancedAlbumPicker:(id<IAlbumPicker>)albumPicker;
|
||||
+ (void)pickMediaWithCaller:(UIViewController *)caller
|
||||
originalMediaPicked:(IAlbumPickerCallback)mediaPicked
|
||||
progressCallback:(IAlbumPickerCallback)progressCallback
|
||||
finishedCallback:(IAlbumPickerCallback)finishedCallback;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
46
TUIKit/TUIChat/CommonUI/Album/AlbumPicker.m
Normal file
46
TUIKit/TUIChat/CommonUI/Album/AlbumPicker.m
Normal file
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// AlbumPicker.m
|
||||
// TUIChat
|
||||
//
|
||||
// Created by yiliangwang on 2024/10/30.
|
||||
// Copyright © 2024 Tencent. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AlbumPicker.h"
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AlbumPicker()
|
||||
|
||||
@end
|
||||
|
||||
@implementation AlbumPicker
|
||||
|
||||
+ (instancetype)sharedInstance {
|
||||
static AlbumPicker *sharedInstance = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
sharedInstance = [[self alloc] init];
|
||||
});
|
||||
return sharedInstance;
|
||||
}
|
||||
|
||||
+ (void)registerAdvancedAlbumPicker:(id<IAlbumPicker>)albumPicker {
|
||||
[AlbumPicker sharedInstance].advancedAlbumPicker = albumPicker;
|
||||
}
|
||||
|
||||
+ (void)pickMediaWithCaller:(UIViewController *)caller
|
||||
originalMediaPicked:(IAlbumPickerCallback)mediaPicked
|
||||
progressCallback:(IAlbumPickerCallback)progressCallback
|
||||
finishedCallback:(IAlbumPickerCallback)finishedCallback {
|
||||
id<IAlbumPicker> albumPicker = nil;
|
||||
if ([AlbumPicker sharedInstance].advancedAlbumPicker) {
|
||||
albumPicker = [AlbumPicker sharedInstance].advancedAlbumPicker;
|
||||
}
|
||||
|
||||
if (albumPicker && [albumPicker respondsToSelector:@selector
|
||||
(pickMediaWithCaller:originalMediaPicked:progressCallback:finishedCallback:)]) {
|
||||
[albumPicker pickMediaWithCaller:caller originalMediaPicked:mediaPicked progressCallback:progressCallback finishedCallback:finishedCallback];
|
||||
}
|
||||
}
|
||||
@end
|
||||
42
TUIKit/TUIChat/CommonUI/Album/MultimediaRecorder.h
Normal file
42
TUIKit/TUIChat/CommonUI/Album/MultimediaRecorder.h
Normal file
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// VideoRecorder.h
|
||||
// TUIChat
|
||||
//
|
||||
// Created by yiliangwang on 2024/10/30.
|
||||
// Copyright © 2024 Tencent. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
typedef void (^VideoRecorderSuccessBlock)(NSURL *uri);
|
||||
typedef void (^VideoRecorderFailureBlock)(NSInteger errorCode, NSString *errorMessage);
|
||||
|
||||
@protocol IMultimediaRecorder <NSObject>
|
||||
- (void)recordVideoWithCaller:(UIViewController *)caller
|
||||
successBlock:(VideoRecorderSuccessBlock)successBlock
|
||||
failureBlock:(VideoRecorderFailureBlock)failureBlock;
|
||||
|
||||
-(void)takePhoneWithCaller:(UIViewController *)caller
|
||||
successBlock:(VideoRecorderSuccessBlock)successBlock
|
||||
failureBlock:(VideoRecorderFailureBlock)failureBlock;
|
||||
|
||||
@end
|
||||
|
||||
@interface MultimediaRecorder : NSObject
|
||||
@property (nonatomic, strong) id<IMultimediaRecorder> advancedVideoRecorder;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
+ (void)registerAdvancedVideoRecorder:(id<IMultimediaRecorder>)videoRecorder;
|
||||
|
||||
- (void)recordVideoWithCaller:(UIViewController *)caller
|
||||
successBlock:(VideoRecorderSuccessBlock)successBlock
|
||||
failureBlock:(VideoRecorderFailureBlock)failureBlock;
|
||||
|
||||
-(void)takePhoneWithCaller:(UIViewController *)caller
|
||||
successBlock:(VideoRecorderSuccessBlock)successBlock
|
||||
failureBlock:(VideoRecorderFailureBlock)failureBlock;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
44
TUIKit/TUIChat/CommonUI/Album/MultimediaRecorder.m
Normal file
44
TUIKit/TUIChat/CommonUI/Album/MultimediaRecorder.m
Normal file
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// VideoRecorder.m
|
||||
// TUIChat
|
||||
//
|
||||
// Created by yiliangwang on 2024/10/30.
|
||||
// Copyright © 2024 Tencent. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MultimediaRecorder.h"
|
||||
|
||||
@interface MultimediaRecorder ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation MultimediaRecorder
|
||||
|
||||
+ (instancetype)sharedInstance {
|
||||
static MultimediaRecorder *sharedInstance = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
sharedInstance = [[self alloc] init];
|
||||
});
|
||||
return sharedInstance;
|
||||
}
|
||||
|
||||
+ (void)registerAdvancedVideoRecorder:(id<IMultimediaRecorder>)videoRecorder {
|
||||
[MultimediaRecorder sharedInstance].advancedVideoRecorder = videoRecorder;
|
||||
}
|
||||
|
||||
- (void)recordVideoWithCaller:(UIViewController *)caller
|
||||
successBlock:(VideoRecorderSuccessBlock)successBlock
|
||||
failureBlock:(VideoRecorderFailureBlock)failureBlock {
|
||||
id<IMultimediaRecorder> videoRecorder = nil;
|
||||
if ([MultimediaRecorder sharedInstance].advancedVideoRecorder) {
|
||||
videoRecorder = [MultimediaRecorder sharedInstance].advancedVideoRecorder;
|
||||
}
|
||||
|
||||
if (videoRecorder && [videoRecorder respondsToSelector:@selector
|
||||
(recordVideoWithCaller:successBlock:failureBlock:)]) {
|
||||
[videoRecorder recordVideoWithCaller:caller successBlock:successBlock failureBlock:failureBlock];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user