BBASMPhotoAdapterProtocol.h 5.34 KB
//
//  BBASMPhotoAdapterProtocol.h
//  SWAN
//
//  Created by baidu on 2018/9/21.
//  Copyright © 2018 baidu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BBASMAdapterBaseImplement.h"

/** pickerMode
 *  chooseImage端能力pickerMode:BBASMPhotoPickerTypePhoto,
 *  chooseAlbum端能力在Single下pickerMode:BBASMPhotoPickerTypePhotoOrVideo,
 *  chooseAlbum端能力在非Single下pickerMode:BBASMPhotoPickerTypePhotoAndVideo
 */
typedef NS_ENUM(NSUInteger, BBASMPhotoPickerType) {
    BBASMPhotoPickerTypePhoto,           // 只选择Photo
    BBASMPhotoPickerTypeVideo,           // 只选择Video
    BBASMPhotoPickerTypePhotoAndVideo,   // 同时选择Photo、Video
    BBASMPhotoPickerTypePhotoOrVideo,    // Photo、Video二选一
};

@protocol BBASMPhotoPickerInfoProtocol <NSObject>

/// 最大选中数量
@property (nonatomic, assign) NSInteger maxNumber;

/// 是否隐藏相机按钮,chooseAlbum为隐藏,chooseImage视开发者传递的souceType而定
@property (nonatomic, assign) BOOL hideCamera;

/// 相册选择类型
@property (nonatomic, assign) BBASMPhotoPickerType pickerMode;

/// chooseAlbum端能力时,选择视频是否使用原始视频质量,为否则视为视频需要被压缩
@property (nonatomic, assign) BOOL isCompress;
/// 已经选中的assets
@property (nonatomic, strong) NSArray *selectAssets;
@end

@protocol BBASMPhotoAdapterProtocol  <NSObject>

@optional
/**
 * 该方法即将废弃,请使用chooseMultiMediaInfo:finish:cancel:代替
 * @brief 从相册中选择照片或视频
 * @param maxNumber 最大选中数量.
 * @param pickerMode chooseImage端能力pickerMode:BBASMPhotoPickerTypePhoto,
                     chooseAlbum端能力在Single下pickerMode:BBASMPhotoPickerTypePhotoOrVideo,
                     chooseAlbum端能力在非Single下pickerMode:BBASMPhotoPickerTypePhotoAndVideo,
 * @param isCompress chooseAlbum端能力时,选择视频是否使用原始视频质量,为否则视为视频需要被压缩
 * @param finishBlock 选择成功时的回调,result中为选中的图片和视频,对应的key值为"image_and_video"
 * @example
 *  "image_and_video" = (
 *                        {
 *                          "file_name" = "944a932e48dc0ac877fd64d420e5bf93original.jpg";
 *                          "image_data" = NSData<89504e47 0d0a1a0a>;
 *                          "type" = "image"; // 图片类型
 *                          "index" = 0;
 *                        },
 *                       {
 *                         "path" =           "/var/mobile/Containers/Data/Application/2C78BF64-C245-4D36-85B0-D1F3D2DA1E16/Documents/SwanCaches/97fcb1267e61694eef8fc2c344172fa6/tmp/98c4f7a8b0a87d77270cbeb07f706282.mp4"; // 文件路径
 *                        "size" = (long)936401; // 文件大小
 *                        "type" = "video"; // 视频类型
 *                        "duration" = (float)"13.26667";视频时长
 *                        "index" = (long)0;
 *                       }
 *                  )
 * @param cancelBlock 用户取消时的回调
 */
+ (void)chooseMultiMedia:(NSInteger)maxNumber
              pickerMode:(BBASMPhotoPickerType)pickerMode
              isCompress:(BOOL)isCompress
                  finish:(void (^)(NSDictionary *result))finishBlock
                  cancel:(void (^)(void))cancelBlock __attribute__((deprecated("该方法即将废弃,请使用 'chooseMultiMediaInfo:finish:cancel:' 替代")));

/**
 * @brief 从相册中选择照片或视频
 * @param info media选择参数模型,包含maxNumber、hideCamera、pickerMode、isCompress
 * @param finishBlock 选择成功时的回调,result中为选中的图片和视频,对应的key值为"image_and_video"
 * @param cancelBlock 用户取消时的回调
 */
+ (void)chooseMultiMediaInfo:(id<BBASMPhotoPickerInfoProtocol>)info
                      finish:(void (^)(NSDictionary *result))finishBlock
                      cancel:(void (^)(void))cancelBlock;

/**
 * @brief 预览图片
 * @param imageInfo 预览图片信息
 * @return YES 预览成功
 * @example
 * imageInfo = {
 *              @"images" : [
 *                           {
 *                            @"url" : @"http://b.bdstatic.com/img/swan-preview-image.jpg",
 *                            @"origin_url" : @"http://b.bdstatic.com/img/swan-preview-image-origin.jpg"
 *                           },
 *                           {
 *                            @"url" : @"http://b.bdstatic.com/img/swan-preview-image2.jpg"
 *                           }
 *                          ],
 *              @"index" : 0,
 *             }
 */
+ (BOOL)previewImages:(NSDictionary *)imageInfo;

/// 宿主可自定义小程序webView上图片长按逻辑,不实现的话默认菜单项是"查看图片"、"保存到相册"
/// @param imageInfo 图片信息 imageInfo =   { "imageURL" : [NSString],// 图片地址
///                                    "appID" : [NSString],// 小*程*序appID }
+ (void)handleWebViewLongPressOnImage:(NSDictionary *)imageInfo;

/// 宿主可自定义小程序图片浏览器上图片长按逻辑,不实现的话默认菜单项是"保存到相册"、"分享"
/// @param imageInfo 图片信息 imageInfo =   { "imageURL" : [NSString],// 图片地址
///                                    "appID" : [NSString],// 小*程*序appID }
///
+ (void)handlePhotoBrowserLongPressOnImage:(NSDictionary *)imageInfo;

@end