Skip to content

Commit 09e1fe0

Browse files
authored
Merge pull request #335 from amirghm/bugfix/fix-load-file-in-ios-real-device
Fix: Improve local file loading on iOS and update version
2 parents f40b28a + 30cf2ae commit 09e1fe0

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ android.minSdk=21
1515
#Versions
1616
GROUP=io.github.kevinnzou
1717
POM_ARTIFACT_ID=compose-webview-multiplatform
18-
VERSION_NAME=2.0.1
18+
VERSION_NAME=2.0.2
1919
POM_NAME=Compose WebView Multiplatform
2020
POM_INCEPTION_YEAR=2023
2121
POM_DESCRIPTION=WebView for JetBrains Compose Multiplatform

webview/src/iosMain/kotlin/com/multiplatform/webview/web/IOSWebView.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,15 @@ import kotlinx.cinterop.useContents
1212
import kotlinx.coroutines.CoroutineScope
1313
import platform.Foundation.HTTPBody
1414
import platform.Foundation.HTTPMethod
15+
import platform.Foundation.NSArray
1516
import platform.Foundation.NSBundle
1617
import platform.Foundation.NSData
18+
import platform.Foundation.NSDocumentDirectory
1719
import platform.Foundation.NSMutableURLRequest
20+
import platform.Foundation.NSSearchPathForDirectoriesInDomains
1821
import platform.Foundation.NSString
1922
import platform.Foundation.NSURL
23+
import platform.Foundation.NSUserDomainMask
2024
import platform.Foundation.create
2125
import platform.Foundation.setValue
2226
import platform.Foundation.stringByDeletingLastPathComponent
@@ -50,6 +54,33 @@ class IOSWebView(
5054
url: String,
5155
additionalHttpHeaders: Map<String, String>,
5256
) {
57+
// Check if it's a file URL
58+
if (url.startsWith("file://")) {
59+
val fileURL = NSURL(string = url)
60+
if (fileURL != null && fileURL.isFileURL()) {
61+
// Use document directory for read access to fix real device issues
62+
val documentPaths =
63+
NSSearchPathForDirectoriesInDomains(
64+
NSDocumentDirectory,
65+
NSUserDomainMask,
66+
true,
67+
) as NSArray
68+
val readAccessURL =
69+
if (documentPaths.count > 0u) {
70+
val documentPath = documentPaths.objectAtIndex(0u) as? String
71+
documentPath?.let { NSURL.fileURLWithPath(it) }
72+
} else {
73+
null
74+
}
75+
76+
if (readAccessURL != null) {
77+
webView.loadFileURL(fileURL, readAccessURL)
78+
return
79+
}
80+
}
81+
}
82+
83+
// Handle regular HTTP/HTTPS URLs
5384
val request =
5485
NSMutableURLRequest.requestWithURL(
5586
URL = NSURL(string = url),

0 commit comments

Comments
 (0)