uni-app 获取 iOS 相册图片数据插件开发 付费
uni-app 获取 iOS 相册图片数据插件开发 付费
功能:
- 返回相册中的图片信息,同时进行按照城市分组,其中返回的
imgUrl
需要能够直接在 H5 中展示 - 附件中有通过 Swift 实现的版本,整体 iOS 能力 OK
期望实现 API
参数说明:
count
:获取相册的图片数量cityImgCount
:每个城市的图片返回数据city
:如果传入,只返回特定城市的照片
export function getGallaryImageListGroupByCity(params: {
count: number;
cityImgCount?: number;
city?: string;
}): Promise<
Array<{
city: string;
imgList: [
{
imgUrl: string;
location: {
latitude: number;
longitude: number;
};
exif: string;
}
];
}>
> {
return Promise.resolve([]);
}
1 回复
在开发uni-app插件以获取iOS相册图片数据时,你可以利用原生iOS开发的能力(Swift或Objective-C)来实现这一功能,并将其封装为uni-app的插件。以下是一个简化的示例,展示如何创建一个uni-app插件来获取iOS相册图片数据。
1. 创建iOS原生模块
首先,你需要创建一个iOS原生模块。以下是一个简单的Objective-C示例:
PhotoPickerModule.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface PhotoPickerModule : NSObject
+ (void)pickPhotoWithCompletion:(void (^)(UIImage *image, NSError *error))completion;
@end
PhotoPickerModule.m
#import "PhotoPickerModule.h"
@implementation PhotoPickerModule
+ (void)pickPhotoWithCompletion:(void (^)(UIImage *image, NSError *error))completion {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = [[ImagePickerDelegate alloc] initWithCompletion:completion];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
// 假设你在一个UIViewController中调用此方法,可以将其设置为当前视图控制器的presentedViewController
UIViewController *vc = ...; // 获取当前的视图控制器
[vc presentViewController:imagePicker animated:YES completion:nil];
}
@end
@interface ImagePickerDelegate : NSObject <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (nonatomic, copy) void (^completion)(UIImage *image, NSError *error);
- (instancetype)initWithCompletion:(void (^)(UIImage *image, NSError *error))completion;
@end
@implementation ImagePickerDelegate
- (instancetype)initWithCompletion:(void (^)(UIImage *image, NSError *error))completion {
self = [super init];
if (self) {
_completion = completion;
}
return self;
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
UIImage *image = info[UIImagePickerControllerOriginalImage];
NSError *error = nil; // 根据需要设置错误
self.completion(image, error);
[picker dismissViewControllerAnimated:YES completion:nil];
}
// 其他必要的UIImagePickerControllerDelegate方法实现...
@end
2. 封装为uni-app插件
接下来,你需要将这个iOS原生模块封装为uni-app插件。在manifest.json
中配置插件,并在JavaScript端调用这个原生模块。
manifest.json
{
"mp-weixin": {},
"app-plus": {
"distribute": {},
"plugins": {
"my-photo-picker": {
"version": "1.0.0",
"provider": "wxxxxxxx" // 你的插件ID
}
}
}
}
在uni-app的JavaScript代码中调用
if (uni.getSystemInfoSync().platform === 'ios') {
plus.bridge.exec('my-photo-picker', 'pickPhoto', [], (res) => {
const imageBase64 = res.data; // 假设返回的是base64编码的图片数据
// 处理图片数据
}, (e) => {
console.error('获取图片失败', e);
});
}
注意:以上代码仅为示例,实际开发中需考虑更多细节,如错误处理、权限请求等。同时,插件的具体实现和调用方式可能需要根据实际需求和uni-app的API进行调整。