Я пытаюсь преобразовать React Native Asset в образ Base64.Сбой на родном модуле RNImageToBase64 для URL-адреса
Существует настоящая библиотека React Native для реализации, реализованная в NativeModules, но при выполнении getBase64String(url, callback)
происходит сбой родного приложения iOS.
Пример URL-отправляется RNImageToBase64
(сгенерированный react-native-camera
):
/var/mobile/Containers/Data/Application/8BE6DA73-73A6-4E9A-BDF9-431726243667/Documents/F76931EE-E8F6-431F-8FFF-D481DDA8CC6B.jpg
линия, которая не:
[library assetForURL:url resultBlock:^(ALAsset *asset) {
Ошибка в Xcode:
libsystem_kernel.dylib`__abort_with_payload:
0x180640d6c <+0>: movz x16, #0x209
0x180640d70 <+4>: svc #0x80
-> 0x180640d74 <+8>: b.lo 0x180640d8c ; <+32>
0x180640d78 <+12>: stp x29, x30, [sp, #-16]!
0x180640d7c <+16>: mov x29, sp
0x180640d80 <+20>: bl 0x1806257b4 ; cerror_nocancel
0x180640d84 <+24>: mov sp, x29
0x180640d88 <+28>: ldp x29, x30, [sp], #16
0x180640d8c <+32>: ret
index.ios.js
линии который называет Нати veModules:
NativeModules.RNImageToBase64.getBase64String(uri, (err, base64) => {
});
RNImageToBase64.m
родной модуль, который выходит из строя:
#import "RNImageToBase64.h"
#import <AssetsLibrary/AssetsLibrary.h>
#import <UIKit/UIKit.h>
@implementation RNImageToBase64
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(getBase64String:(NSString *)input callback:(RCTResponseSenderBlock)callback)
{
NSURL *url = [[NSURL alloc] initWithString:input];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:url resultBlock:^(ALAsset *asset) {
ALAssetRepresentation *rep = [asset defaultRepresentation];
CGImageRef imageRef = [rep fullScreenImage];
NSData *imageData = UIImagePNGRepresentation([UIImage imageWithCGImage:imageRef]);
NSString *base64Encoded = [imageData base64EncodedStringWithOptions:0];
callback(@[[NSNull null], base64Encoded]);
} failureBlock:^(NSError *error) {
NSLog(@"that didn't work %@", error);
callback(@[error]);
}];
}
@end
Вы избавили меня от многих неприятностей, спасибо большое! – Zri