-
Notifications
You must be signed in to change notification settings - Fork 901
Open
Labels
Description
Shared Extension
Works fine in a regular app. But the same code for Shared Extension when attempting to upload a file using AWSS3TransferUtility in background mode, the task fails immediately with:
Error Domain=NSURLErrorDomain Code=-995 "(null)"
UserInfo={
_NSURLErrorRelatedURLSessionTaskErrorKey=("BackgroundUploadTask <8A7D2482-1570-4AC0-A552-98909060491B>.<1>"),
_NSURLErrorFailingURLSessionTaskErrorKey=BackgroundUploadTask <8A7D2482-1570-4AC0-A552-98909060491B>.<1>
}
To Reproduce
Steps to reproduce the behavior in Shared Extension:
- Configure AWSS3TransferUtility for background uploads.
- Files are stored in a shared App Group container (accessible by both the main app and extensions)
- Call uploadUsingMultiPart with a valid file URL, bucket, and key.
- Observe the task failing with NSURLErrorDomain Code=-995
Code Snippet (Triggering the Issue)
logger.debug("Start utility.uploadUsingMultiPart: \(fileURL)")
utility.uploadUsingMultiPart(
fileURL: fileURL,
bucket: bucket,
key: key,
contentType: meta.mimeType,
expression: expression,
completionHandler: AWSS3UploadCallbacks.completionHandler(finishBlock: { finishBlock() })
).continueWith(block: AWSS3UploadCallbacks.continueWithBlock(uuid: uuid))
Environment(please complete the following information):
- SDK Version: 2.40.1
- Swift Version : swift-driver version: 1.115.1 Apple Swift version 6.0.3 (swiftlang-6.0.3.1.10 clang-1600.0.30.1)
- Xcode Version: 16.2
Device Information (please complete the following information):
- Device: iPhone12
- iOS Version: 18.5
Logs
copyItem from: file:///var/mobile/Media/PhotoData/OutgoingTemp/48D50E28-6852-40EE-BBFB-753F04C72167/IMG_9843.PNG to: file:///private/var/mobile/Containers/Shared/AppGroup/45CB7ADF-146A-4AB2-9603-1D41B098B536/images/C880C843-CD56-40F4-B51D-0E3FAE79E606.PNG
Задача 39313AE9-9F26-4694-8654-1D92D1C0FC69 сохранена в SwiftData.
🔁 Запускаем обработку контента из Share Extension прямо сейчас
shareUploads.count 1
shareUpload 164F9C92-B2F5-4895-9C2D-4C95C7084F8C nil Optional("SharedToImagelocker") 1
GraphQLQueryHelper.createFilterString filterString AlbmN: "SharedToImagelocker"
🟡 createAlbum input: AlbmN: "SharedToImagelocker"
teamId: 2
Updating state from UNKNOWN to WAITING
MIME Type: image/png
meta >>>>>>>>>>>>>>>>> ImageLockerShareExt.Meta
⬆️ Starting uploadUsingMultiPart... UUID: 39313AE9-9F26-4694-8654-1D92D1C0FC69
bucket upload.imagelocker.com key: olegmoseyko/GlobalDeveloperTeam/SharedToImagelocker/1751192650151-IMG_9843.PNG, fileURL: file:///private/var/mobile/Containers/Shared/AppGroup/45CB7ADF-146A-4AB2-9603-1D41B098B536/images/C880C843-CD56-40F4-B51D-0E3FAE79E606.PNG, uuid: 39313AE9-9F26-4694-8654-1D92D1C0FC69,
🔥 Starting TransferUtility initialization...
teamId: 2
getAwsCredetials response: 649 bytes
🔄 getAwsCredetials response received
🔄 AWS credentials refreshed successfully.
CredentialsProvider init
CocoaLumberjack: Warning: Usage of AWSDDTTYLogger detected when AWSDDOSLogger is available and can be used! Please consider migrating to AWSDDOSLogger.
✅ TransferUtility initialized successfully.
AWSS3TransferService initialized
x-amz-meta-albmi: 131317
x-amz-meta-restapibaseurl: https://execute-api.imagelocker.com/api/1.0
x-amz-meta-filemodified: 1751089695
x-amz-meta-fileuri: file:///private/var/mobile/Containers/Shared/AppGroup/45CB7ADF-146A-4AB2-9603-1D41B098B536/images/C880C843-CD56-40F4-B51D-0E3FAE79E606.PNG
x-amz-meta-filesize: 1632348
x-amz-meta-usrn: olegmoseyko
x-amz-meta-filetaken: 1751089695
x-amz-meta-absolutepath: file:///private/var/mobile/Containers/Shared/AppGroup/45CB7ADF-146A-4AB2-9603-1D41B098B536/images/C880C843-CD56-40F4-B51D-0E3FAE79E606.PNG
x-amz-meta-usri: 16
x-amz-meta-uploadtype: Device
x-amz-meta-filemimetype: image/png
x-amz-meta-filename: IMG_9843.PNG
x-amz-meta-bucket: upload.imagelocker.com
x-amz-meta-fullpath: /SharedToImagelocker/IMG_9843.PNG
x-amz-meta-albmn: SharedToImagelocker
x-amz-meta-filehash: item.fileHash!
x-amz-meta-tag: 20250629
x-amz-meta-teami: 2
x-amz-meta-teamn: GlobalDeveloperTeam
x-amz-meta-dvci: 118
x-amz-meta-author: olegmoseyko
x-amz-meta-filetype: Image
x-amz-meta-fileadded: 1751089695
x-amz-meta-key: olegmoseyko/GlobalDeveloperTeam/SharedToImagelocker/1751192650151-IMG_9843.PNG
x-amz-meta-token: 651466E3-D629-4755-967D-B0EF790CA455
x-amz-meta-phgrusri: 16
Start utility.uploadUsingMultiPart: file:///private/var/mobile/Containers/Shared/AppGroup/45CB7ADF-146A-4AB2-9603-1D41B098B536/images/C880C843-CD56-40F4-B51D-0E3FAE79E606.PNG
2025-06-29 12:24:10:409 ImageLockerShareExt[2943:567569] File size is 1632348
2025-06-29 12:24:10:409 ImageLockerShareExt[2943:567569] Number of parts is 1
2025-06-29 12:24:10:429 ImageLockerShareExt[2943:567569] Bucket name 'upload.imagelocker.com' is not compatible with virtual-host URLs, continuing to use path-style URL
CredentialsProvider credentials
✅ Returning cached credentials.
CredentialsProvider return current credentials
>>> FILE: IMG_9843.PNG
📦 Контент из Share Extension обработан
*********************dismiss****************************************
2025-06-29 12:24:10:430 ImageLockerShareExt[2943:567570] Request headers:
{
Authorization = "****";
"Content-Type" = "image/png";
Host = "s3.us-east-1.amazonaws.com";
"User-Agent" = "aws-sdk-iOS/2.40.1 iOS/18.5 en_UA transfer-utility";
"X-Amz-Date" = 20250629T102410Z;
"X-Amz-Security-Token" = "****";
"x-amz-content-sha256" = *****;
"x-amz-meta-absolutepath" = "file:///private/var/mobile/Containers/Shared/AppGroup/45CB7ADF-146A-4AB2-9603-1D41B098B536/images/C880C843-CD56-40F4-B51D-0E3FAE79E606.PNG";
"x-amz-meta-albmi" = 131317;
"x-amz-meta-albmn" = SharedToImagelocker;
"x-amz-meta-author" = olegmoseyko;
"x-amz-meta-bucket" = "upload.imagelocker.com";
"x-amz-meta-dvci" = 118;
"x-amz-meta-fileadded" = 1751089695;
"x-amz-meta-filehash" = "item.fileHash!";
"x-amz-meta-filemimetype" = "image/png";
"x-amz-meta-filemodified" = 1751089695;
"x-amz-meta-filename" = "IMG_9843.PNG";
"x-amz-meta-filesize" = 1632348;
"x-amz-meta-filetaken" = 1751089695;
"x-amz-meta-filetype" = Image;
"x-amz-meta-fileuri" = "file:///private/var/mobile/Containers/Shared/AppGroup/45CB7ADF-146A-4AB2-9603-1D41B098B536/images/C880C843-CD56-40F4-B51D-0E3FAE79E606.PNG";
"x-amz-meta-fullpath" = "/SharedToImagelocker/IMG_9843.PNG";
"x-amz-meta-key" = "olegmoseyko/GlobalDeveloperTeam/SharedToImagelocker/1751192650151-IMG_9843.PNG";
"x-amz-meta-phgrusri" = 16;
"x-amz-meta-restapibaseurl" = "https://execute-api.imagelocker.com/api/1.0";
"x-amz-meta-tag" = 20250629;
"x-amz-meta-teami" = 2;
"x-amz-meta-teamn" = GlobalDeveloperTeam;
"x-amz-meta-token" = "651466E3-D629-4755-967D-B0EF790CA455";
"x-amz-meta-uploadtype" = Device;
"x-amz-meta-usri" = 16;
"x-amz-meta-usrn" = olegmoseyko;
}
2025-06-29 12:24:10:430 ImageLockerShareExt[2943:567570] Request body:
2025-06-29 12:24:10:865 ImageLockerShareExt[2943:567574] Response headers:
{
Date = "Sun, 29 Jun 2025 10:24:11 GMT";
Server = AmazonS3;
"Transfer-Encoding" = Identity;
"x-amz-abort-date" = "Mon, 07 Jul 2025 00:00:00 GMT";
"x-amz-abort-rule-id" = AbortIncompleteMultipartUpload;
"x-amz-id-2" = "zIVjoac7Is2zb5sfXV+myc1DJp+zernmRe0T/XnWicSVQK9R1ilTcZAUZovgCdx4NxNE32bWf/w6SIIaGnXhxKhQTODcrXVs542GMGIObXI=";
"x-amz-request-id" = CVNPX83NEHR8N86B;
"x-amz-server-side-encryption" = AES256;
}
2025-06-29 12:24:10:865 ImageLockerShareExt[2943:567574] Response body:
<?xml version="1.0" encoding="UTF-8"?>
<InitiateMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Bucket>upload.imagelocker.com</Bucket><Key>olegmoseyko/GlobalDeveloperTeam/SharedToImagelocker/1751192650151-IMG_9843.PNG</Key><UploadId>LFqgHv6toyx1U3.Qr.IsaZ3dCYDuwIJ1NdC1sv7Turv4Wn__4WUYAWG_QmQEuXrvvHns0ZF953wmBcEo7ss2flI5ML84acW90l21PEgT9V8Jy_y2edZTP8aJdTaqVBezlzU_EddvCQFY9XyTHo8JGw--</UploadId></InitiateMultipartUploadResult>
2025-06-29 12:24:10:880 ImageLockerShareExt[2943:567574] Initiated multipart upload on server: LFqgHv6toyx1U3.Qr.IsaZ3dCYDuwIJ1NdC1sv7Turv4Wn__4WUYAWG_QmQEuXrvvHns0ZF953wmBcEo7ss2flI5ML84acW90l21PEgT9V8Jy_y2edZTP8aJdTaqVBezlzU_EddvCQFY9XyTHo8JGw--
2025-06-29 12:24:10:880 ImageLockerShareExt[2943:567574] Concurrency Limit is 6
2025-06-29 12:24:10:880 ImageLockerShareExt[2943:567574] Setting Base URL to Caches Directory: /var/mobile/Containers/Data/PluginKitPlugin/D2AE381C-5EFF-4639-AF84-66F901918CAE/Library/Caches
2025-06-29 12:24:10:881 ImageLockerShareExt[2943:567574] Partial File URL: /var/mobile/Containers/Data/PluginKitPlugin/D2AE381C-5EFF-4639-AF84-66F901918CAE/Library/Caches/EA393CDD-6C4D-494E-8334- ... 0EA5.tmp
CredentialsProvider credentials
✅ Returning cached credentials.
CredentialsProvider return current credentials
CredentialsProvider credentials
✅ Returning cached credentials.
CredentialsProvider return current credentials
2025-06-29 12:24:10:891 ImageLockerShareExt[2943:567574] Added task for part [1] to inProgress list
2025-06-29 12:24:10:894 ImageLockerShareExt[2943:567574] Starting subTask 1
API MISUSE: Resuming an NSURLSessionTask with nil URL.
Task <13563DB4-49D9-4380-88FA-B90D8A94B068>.<1> finished with error [-995] Error Domain=NSURLErrorDomain Code=-995 "(null)" UserInfo={_NSURLErrorRelatedURLSessionTaskErrorKey=(
"BackgroundUploadTask <13563DB4-49D9-4380-88FA-B90D8A94B068>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=BackgroundUploadTask <13563DB4-49D9-4380-88FA-B90D8A94B068>.<1>}
2025-06-29 12:24:10:896 ImageLockerShareExt[2943:567569] Thread:<NSThread: 0x114098e80>{number = 3, name = (null)}: didCompleteWithError called for task 1
CredentialsProvider credentials
2025-06-29 12:24:10:897 ImageLockerShareExt[2943:567569] Bucket name 'upload.imagelocker.com' is not compatible with virtual-host URLs, continuing to use path-style URL
✅ Returning cached credentials.
CredentialsProvider return current credentials
2025-06-29 12:24:10:898 ImageLockerShareExt[2943:567570] Request headers:
{
Authorization = "AWS4-HMAC-SHA256 Credential=******/20250629/us-east-1/s3/aws4_request, SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=****";
"Content-Type" = "binary/octet-stream";
Host = "s3.us-east-1.amazonaws.com";
"User-Agent" = "aws-sdk-iOS/2.40.1 iOS/18.5 en_UA transfer-utility";
"X-Amz-Date" = 20250629T102410Z;
"X-Amz-Security-Token" = "*****";
"x-amz-content-sha256" = ***;
}
2025-06-29 12:24:11:035 ImageLockerShareExt[2943:567570] Response headers:
{
Date = "Sun, 29 Jun 2025 10:24:11 GMT";
Server = AmazonS3;
"x-amz-id-2" = "tLtgHCQvai/R6vhP+VEQT5Y88amNcpx77hBWrcud3Rd7B539/rYG9oydid+ogzGjWra6jZVjE/17YD/DRloZGMPFHxZ+FNUuasdAmTP6/zw=";
"x-amz-request-id" = CVNK5XRYF8KS08Z4;
}
mikemike396