uni-app 获取 iOS 相册图片数据插件开发 付费

发布于 1周前 作者 zlyuanteng 最后一次编辑是 5天前 来自 Uni-App

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([]);  
}  

图片选择插件开发需求.pdf


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进行调整。

回到顶部