uni-app iOS端获取照片拍摄时间

发布于 1周前 作者 itying888 来自 Uni-App

uni-app iOS端获取照片拍摄时间

需要一个在客户端(iOS/Android)获取照片拍摄时间的插件,比较简单

参数:fileUrl
返回值:fileTime

例如:

File file = new File(fileUrl);
Long fileTime = file.lastModified();

返回fileTime即可。

因为照片上传到服务端写入File后,lastModified就变成写入时间了,而服务端用类似Exif的库是有可能获取不到照片时间的,比如美颜相机拍摄的照片,用Exif就无法获取照片时间。


| 开发环境 | 版本号 | 项目创建方式 |
|---------|--------|--------------|
| iOS/Android | 不适用 | 插件开发 |

6 回复

官方呢?求回复一下!


可以使用原生插件做,联系QQ:1804945430

你都不会ios ,你先看清楚需求,不会ios就不要到处乱留言

回复 原生插件开发哦: 有iOS朋友合作,价格也相对更低哦

专业双端插件开发, 获取拍摄时间可以做 做好验收完在付款。Q 1196097915,

在uni-app中,如果你需要从iOS端获取照片的拍摄时间,通常需要借助原生插件或者自定义组件来实现,因为uni-app本身提供的API并不直接支持获取照片的元数据(如拍摄时间)。以下是一个通过uni-app的plus.io模块结合原生Objective-C代码来获取照片拍摄时间的示例。

步骤一:创建原生插件

首先,你需要创建一个原生插件来获取照片的元数据。以下是一个简单的Objective-C代码示例,用于获取iOS照片库中的照片拍摄时间。

MyPlugin.h

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface MyPlugin : NSObject

+ (void)getPhotoMetadataWithAssetURL:(NSURL *)assetURL callback:(void (^)(NSDictionary *metadata))callback;

@end

MyPlugin.m

#import "MyPlugin.h"
#import <Photos/Photos.h>

@implementation MyPlugin

+ (void)getPhotoMetadataWithAssetURL:(NSURL *)assetURL callback:(void (^)(NSDictionary *metadata))callback {
    PHFetchResult *assets = [PHAsset fetchAssetsWithALAssetURLs:@[assetURL] options:nil];
    if (assets.count > 0) {
        PHAsset *asset = assets.firstObject;
        [[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
            if (info[@"{PHImageFileInfoKey}"][@"creationDate"]) {
                NSDate *creationDate = info[@"{PHImageFileInfoKey}"][@"creationDate"];
                NSDictionary *metadata = @{ @"creationDate": creationDate };
                callback(metadata);
            } else {
                callback(nil);
            }
        }];
    } else {
        callback(nil);
    }
}

@end

步骤二:在uni-app中调用原生插件

接下来,在uni-app中通过JS调用这个原生插件。

调用示例

// 假设你已经将插件集成到uni-app项目中
plus.bridge.exec('MyPlugin', 'getPhotoMetadataWithAssetURL', [assetURL], (e, metadata) => {
    if (e) {
        console.error('Error fetching metadata:', e);
    } else {
        const creationDate = metadata.creationDate;
        console.log('Photo creation date:', creationDate);
    }
});

注意事项

  1. 插件注册:确保在manifest.json中正确注册了原生插件。
  2. 权限管理:在iOS项目中,确保已经请求了访问照片库的权限。
  3. URL格式assetURL应该是从iOS照片库中获取的ALAsset的URL,这通常需要通过原生代码获取。

以上代码示例展示了如何通过原生插件获取iOS照片库中照片的拍摄时间,并在uni-app中使用这些信息。根据实际需求,你可能需要调整代码以适应具体的业务逻辑。

回到顶部