Add BGSessionFix tweak for simulator sessions

This commit is contained in:
√(noham)²
2026-08-24 16:54:19 +02:00
parent 58990b8ecc
commit 47d2f2ba89
7 changed files with 62 additions and 0 deletions

3
BGSessionFix/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
.theos/
packages/
.DS_Store

View File

@@ -0,0 +1,7 @@
{
Filter = {
Bundles = (
"app.bundle.id",
);
};
}

14
BGSessionFix/Makefile Normal file
View File

@@ -0,0 +1,14 @@
TARGET = iphone:latest:15.0
ARCHS = arm64
INSTALL_TARGET_PROCESSES = app.bundle.id
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = BGSessionFix
BGSessionFix_FILES = Tweak.x
BGSessionFix_CFLAGS = -fobjc-arc -Wno-deprecated-declarations -std=c++11 -x objective-c++
BGSessionFix_CXXFLAGS = -std=c++11
BGSessionFix_FRAMEWORKS = Foundation UIKit
BGSessionFix_LDFLAGS = -lstdc++
include $(THEOS_MAKE_PATH)/tweak.mk

16
BGSessionFix/Tweak.x Normal file
View File

@@ -0,0 +1,16 @@
#import <Foundation/Foundation.h>
%hook NSURLSessionConfiguration
+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier {
NSLog(@"[BGSessionFix] Redirecting background session '%@' to a default (foreground) config", identifier);
return [NSURLSessionConfiguration defaultSessionConfiguration];
}
// // Deprecated pre-iOS8 entry point
// + (NSURLSessionConfiguration *)backgroundSessionConfiguration:(NSString *)identifier {
// NSLog(@"[BGSessionFix] backgroundSessionConfiguration:'%@' (deprecated API) -> forcing default config", identifier);
// return [NSURLSessionConfiguration defaultSessionConfiguration];
// }
%end

9
BGSessionFix/control Normal file
View File

@@ -0,0 +1,9 @@
Package: xyz.nohamr.bgsessionfix
Name: BGSessionFix
Version: 1.0.0
Architecture: iphoneos-arm
Description: Redirects background NSURLSession configs to foreground configs (Simulator dev use)
Maintainer: NohamR
Author: NohamR
Section: Tweaks
Depends: mobilesubstrate (>= 0.9.5000)

12
BGSessionFix/index.md Normal file
View File

@@ -0,0 +1,12 @@
Tweak that redirects background NSURLSession configurations to foreground (default) configurations, for use when developing/debugging apps in the iOS Simulator.
The iOS Simulator does not run `nsurlsessiond`, the system daemon that backs `NSURLSession` background transfers. Any app that uses `backgroundSessionConfigurationWithIdentifier:` to download or upload files (so the transfer can survive app suspension/termination on a real device) will fail in the Simulator with errors such as:
```
No XPC connection in Simulator
BackgroundSession <...> an error occurred on the xpc connection to setup
the background session: ... connection to service named com.apple.nsurlsessiond
BackgroundSession <...> failed to create a background NSURLSessionDownloadTask,
as remote session is unavailable
Task <...> finished with error [-1] "unknown error"
```

View File

@@ -20,6 +20,7 @@ iOS tweaks built with [Theos](https://theos.dev), injected into IPAs via [cyan](
| [GPXViewer2](GPXViewer2) | GPXViewer 2 | iOS 14+ | | [GPXViewer2](GPXViewer2) | GPXViewer 2 | iOS 14+ |
| [RMHook](RMHook/index.md) | reMarkable | iOS | | [RMHook](RMHook/index.md) | reMarkable | iOS |
| [HatchDragons](HatchDragons/index.md) | HatchDragons 1.2.1 | iOS 18+ | | [HatchDragons](HatchDragons/index.md) | HatchDragons 1.2.1 | iOS 18+ |
| [BGSessionFix](BGSessionFix/index.md) | BGSessionFix | iOS 15+ |
## Build ## Build