Исходя из вопроса, на который я ссылался, предположительно для него должен быть отдельный файл. Итак, я сделал следующее.
Код: Выделить всё
const [localAssets] = useAssets(localAttachments ?? []);
const [assets, setAssets] = useState([]);
useEffect(() => {
let mounted = true;
(async () => {
if (!localAssets) {
return;
}
const uuid = Crypto.randomUUID();
const nextAssets = _.cloneDeep(localAssets.filter((it) => it.downloaded));
for (const asset of nextAssets) {
const tempLocalUri = `${FileSystem.cacheDirectory}${asset.hash}.${uuid}.${asset.type}`;
await FileSystem.copyAsync({
from: asset.localUri!,
to: tempLocalUri,
});
asset.localUri = tempLocalUri;
}
if (mounted) {
setAssets(nextAssets);
}
})();
return () => {
mounted = false;
};
}, [localAssets]);
Код: Выделить всё
const attachments = useMemo<
Notifications.NotificationContentAttachmentIos[]
>(() => {
if (!assets) {
return [];
}
return assets
.filter((it) => it)
.map((it) => ({
identifier: it.hash,
type: `public.${it.type}`,
typeHint: `public.${it.type}`,
url: it.localUri,
hideThumbnail: false,
}));
}, [assets]);
const content = useMemo(
() => ({
...notificationPayload,
attachments: attachments,
}),
[notificationPayload, attachments],
);
const onSendNotification = useCallback(() => {
(async () => {
const request: Notifications.NotificationRequestInput = {
content: content,
trigger: {
date: Date.now() + 2_000,
},
};
try {
console.debug(attachments);
await Notifications.scheduleNotificationAsync(request);
} catch (error) {
console.error(error);
}
})();
}, [content]);
Код: Выделить всё
[{"hideThumbnail": false,
"identifier": "633435dcb418833920a16771610ca404",
"type": "public.png",
"typeHint": "public.png",
"url": "file:///var/mobile/Containers/Data/Application/110DC7BD-A51E-44D2-A072-8C75BC8F1E3E/Library/Caches/633435dcb418833920a16771610ca404.3acf6d50-e0f0-4d5e-ad55-13b030479460.png"}]
[Ошибка: не удалось запланировать уведомление. Ошибка Domain=UNErrorDomain Code=100 «Неверный URL-адрес файла вложения» UserInfo={NSLocalizedDescription=Неверный URL-адрес файла вложения}]
Подробнее здесь: https://stackoverflow.com/questions/791 ... ttachments
Мобильная версия