Explore the integration of web technologies within your app. Discuss building web-based apps, leveraging Safari functionalities, and integrating with web services.

General Documentation

Post

Replies

Boosts

Views

Activity

Safari Content Blocker extension
I have integrated the Safari Content Blocking extension, and it works perfectly on the first run, effectively blocking content on Safari. However, after re-installing the app, I occasionally encounter the following error, despite the content blocker functioning as expected: "Failed to reload content blocker Error Domain=SFErrorDomain Code=3 "(null)"" What could be causing this intermittent error?
0
0
51
12h
How to make a simple back button.
So I am trying to control the wkwebview content within my app. When I try the following code> var backButton: some View { Button(action: { webView.goBack() // Add your back button action here }, label: { Image(systemName: "arrow.uturn.backward") .font(.title) }) .navigationBarBackButtonHidden(true) } I get webView out of scope. This is how I have webView implimented struct WebView: UIViewRepresentable { let url: URL let preferences = WKPreferences() let useragent = WKWebViewConfiguration() func makeUIView(context: Context) -> WKWebView { @State var webView = WKWebView() let request = URLRequest(url: url) useragent.applicationNameForUserAgent = "Version/1.2 LavaRock/1.2" useragent.allowsAirPlayForMediaPlayback = true useragent.allowsInlineMediaPlayback = true useragent.allowsPictureInPictureMediaPlayback = true // preferences.isFraudulentWebsiteWarningEnabled = true preferences.isSiteSpecificQuirksModeEnabled = true preferences.isElementFullscreenEnabled = true webView.allowsBackForwardNavigationGestures = true // webView.configuration.allowsPictureInPictureMediaPlayback = true webView.customUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Version/1.2 LavaRock/1.2" webView.load(request) return webView } func updateUIView(_ uiView: WKWebView, context: Context) { // Handle view updates if needed } } How should create the button?
0
0
77
2d
An error occurred try to load the resource: The issue only occurs when the download modal display and the image fetching for the pop-up are conducted simultaneously.
Problem Details : In the case of iOS, the image to be displayed in the pop-up message within the TypeScript application does not appear during file download. An error occurred trying to load the resource when attempting to fetch the image (in the case of Safari). The image does not appear in Edge or Chrome either, besides Safari. The image is displayed correctly on Windows 10, 11, Mac Ventura, Mac Sonoma, and Android. Neither svg format nor png format images are displayed. Only in the case of iOS, a download modal appears in Safari (In Edge and Chrome, a different display asking whether or not to download appears, which is different from the modal). The issue only occurs when the download modal display and the image fetching for the pop-up are conducted simultaneously. If you delay the display of the download modal from the timing of fetching the image for the pop-up (apply a wait), the image can be fetched. Verification Environment: iOS v.17.5.1 Safari 604.1 iOS v.17.3 Safari 604.1 IOS v.17.4.1 Chrome 126.0.6478.54 IOS v.17.4.1 Edge: 125.0.2535.72 Consideration and Request: Based on the problem details, I am considering that this issue might be a bug in iOS. I would like to know from experts whether this event is a bug or a specification of iOS. If there is any information about similar events occurring, I would like to know. If there are any solutions, hints, or advice, I would appreciate it if you could provide them. If additional information is required from me, I would like to be contacted. Thank you for your cooperation.
0
0
87
2d
Why is the Safari extension installed on my iPhone unstable?
We are developing an application using Safari extensions (iOS 16, 17). When the Safari extension is enabled, it does not function properly in Safari. On an iPhone, the issue can be temporarily resolved by repeating the following steps: 1.Go to "Settings" → "Safari" → "Extensions" and toggle the extension off and on. 2.Go to "Settings" → "Safari" → "Clear History and Website Data." 3.Restart the iPhone. However, these methods do not consistently resolve the issue, and a definitive solution has not been identified. Does the Safari extension's JavaScript have a caching mechanism? If it does, what are the recommended methods to address this issue?
0
0
78
2d
Pre-rendering WKWebView to avoid flashing
Has anyone attempted to render a WKWebView in a background or invisible UIView so that it’s visible immediately upon first presentation, and if so, what technique did you use? Background: We are trying to embed a WKWebView in our UI that renders seamlessly next to native UI. We are going to download a .ZIP file, unzip it locally to disk, and then point the WKWebView to that local file. However, when testing this solution on an iOS simulator (running iOS 17.5), we see a flash of white – specifically there is no content rendered for the first moment or two, followed by content appearing. We have tried attaching the WKWebView to the UIWindow, adding a javascript callback for the onReadyStateChange “loaded” event, and then only proceeding to present our UIViewController containing our WKWebView afterwards, but we still see a moment with no content being rendered at all. If we add a delay using DispatchQueue.asyncAfter of approximately one second (anything less still flashes), our content does seem to be correctly rendered in the background and immediately visible when the UIViewController gets presented. This is a problem that was originally asked nearly 11 years ago (https://stackoverflow.com/questions/15669809/how-to-prevent-initial-white-flash-when-showing-a-uiwebview); and the agreed upon solution there seems to be to set the background to be not opaque, but the issue remains that the content isn’t immediately visible. Google Gemini and ChatGPT have proposed a number of solutions, including hallucinations about headless WKWebView support on iOS, but unfortunately we are unable to achieve a solution without a DispatchQueue delay with a magic number.
0
0
81
3d
Safari freezes when using Passkey when devTools are opened
I see that on some sites (possibly many) the passkeys verification freezes when devtools are opening. I tried to debug and see that it hangs in navigator.credentials.get. STR: Go to https://passkeys-demo.appspot.com/ Enter random username and click Next Enter password and click Next Create a Passkey. Sign out. Select USE ONE BUTTON SIGN-IN INSTEAD Open dev tools. Try to Sign in with passkey. Expected result: User successfully logged in - technically navigator.credentials.get returns credentials. Actual Result: navigator.credentials.get stucks in infinite loading and nothing happened - no any errors. My assertion options looks like: { "challenge": "K8WztCaAZM5-ST7r198F6UD4iLZ09IINHSiDJBgHHq4", "allowCredentials": [], "timeout": 60000, "userVerification": "preferred", "rpId": "passkeys-demo.appspot.com" } In source code on this demo site the code options.allowCredentials = []; <---- breakpoint hit here // Invoke WebAuthn get const cred = await navigator.credentials.get({ publicKey: options, // Request a conditional UI mediation: conditional ? 'conditional' : 'optional' }); const credential = {}; <---- breakpoint NOT hit here (after removing breakpoint above and after macOS touch ID is completed)
0
1
107
4d
iOS 16, iOS 17, MacOS Sonoma, Safari 17.5, permissionStatus.onchange not working
navigator.permissions.query -&gt; permissionStatus.onchange is Supposed to listen to the event of a change in permissions in the browser settings. This works for all browsers, but in Safari for iOS and MacOS this seems to be broken in the currently recent versions 17.x Example: navigator.permissions.query({ name: 'notifications' }).then((permissionStatus) =&gt; { permissions = permissionStatus.state; // this value gets set correctly permissionStatus.onchange = () =&gt; { // This will not get executed when permissions have been changed // within the safari settings app, or iOS Settings for PWA or Safari }; }); Can someone from Apple's Webkit Team please comment on this? Thank you. T.
1
1
152
4d
Safari Web Extension runs fine on Simulator, but not on Device
I am writing this Web Extension for Safari. It is designed to run on both macOS and iOS. The extension-specific javascript/css/etc files are shared between the platforms. What I observe is that the extension is running fine on macOS. It also runs fine on the iOS Simulator. However, on my device, just nothing happens when activating the extension. No errors are output to the console either. I found it out the hard way, when I already released the extension in the AppStore, and installed it on a friend's iPhone. Does anyone have a clue where I even could start debugging? Or better: maybe there is just a simple checkbox that that I should (un)check?
0
0
111
6d
Camera accessing from sfsafariviewcontroller on IPhone 15 Pro
Hello, I am building a React webapp that will be opened in a webview (sfsafariviewcontroller) within an app. This simple app uses a camera to scan a barcode and get the hidden special price. During the QA test, we found that it does not work on iphone 15 pro while it works fine on other iphone series including iphone 8 plus, iphone 13, iphone 14, iphone 14 pro max. I updated IOS version to the latest on my iphone 14 pro max to match with the IOS version on iphone 15 pro, it still works fine on 14 pro max. So I think it could be an issue with the device version maybe with more privacy configuration or something else. In the app, there is another barcode scanner (using camera) and it works fine on the same device, but the scanner within the sfsafariviewcontroller shows a white blank screen. The red camera icon at the top is shown for a while and disappeared. Does anyone have the same issue? We specified the NSCameraUsageDescription in the info.plist. Any advice would be greatly appreciated!
0
0
138
1w
Import a debit/credit card directly from a web app into the iPhone's wallet
Hi, I know it's currently possible to import a virtual debit/credit card from a mobile app into the IOS Wallet using PassKit from the Apple SDK, but I haven't seen any documentation to do it directly from a web app, could you please tell me if it is possible to do it directly from a web app without using a mobile app? And if so, point me to some documentation? Thanks in advance
1
1
146
1w
JS error in WKWebView
I received this JS error: $(".tabs li").scaleText is not a function. on this web site (https://www.topmarks.co.uk/maths-games/hit-the-button --> click "Play Game") with the WKWebView in my app. The page works fine on Safari, chrome and even SFSafariViewController. Could anyone please help me on that? Thank you.
0
0
92
1w
Using SF Pro for a shop website.
Hello! I am looking to use SF Pro as the main font of my website. This website is used as a place of purchase for some of my products, none of which will actually be using this font. The websites logo will also not be using this font, however I am worried that may be legally unviable. Please let me know if this is an option. I'm not looking to get direct financial gain by using your fonts, just would like to use it for the website. Thank you for your help.
0
0
80
1w
Apache on macOS 15 Sequoia
I have found that using the both the built in Apache webserver and the Homebrew variant does not work with the ssl related modules enabled, I have not narrowed down which module specifically crashes httpd, but I believe I have narrowed it down to be one of the ones that are required to use ssl. It exits with zsh: abort sudo httpd -k start while printing dyld[31928]: Assertion failed: (this->magic == kMagic), function isDelayInit, file Loader.cpp, line 464. to the error_log. I can provide more details, right now I feel like I'm forgetting to add something but I can't think of what it is.
4
4
272
1w
Cookies set by AJAX responses not accessible by JS when using WKWebView
Hi, we have really weird issue with one of our website embedded into iOS app using WKWebView. The website has CSRF mechanism implemented and is using some AJAX calls when user interact with it and in response some cookies are returned. Then the JS code wants to access these cookies to set proper value for next request header. Unfortunately when using document.cookie JS command these cookies are not there. However they are sent within another requests and I can see them from Safari Developer Inspector connected to my device or iOS Simulator. Another interesting thing is that the same website and solution works fine on Safari browser and with SFSafariViewController displayed inside our app. We've tried using various things for WKWebView configuration like nonPersistent data store, but without success. Does anyone have any idea how to deal with such issue and why it doesn't work with WKWebView?
0
2
119
1w
Student in need of help
So the css in this post is broken only on iphones if we view it on an android phone then there is no issues, and I can't figure out why? the scroll background is looking wired, but it's defined by: width: 60px; height: 60px;... Anyhow i'm just wondering why the css is not working as it should? Please help me 🙏
0
0
98
1w
Content blocker using Safari web extensions.
We are trying to implement ad blockers using the Safari web extension, and we are implementing this using the declarativeNetRequest, with a manifest version 2. We have added a json file which contains a rule set for over 22000 URLs, does content blocker have a limit to the number of rules we set in json? Although it does work fine, sometimes we see the behaviour different on simulators and on clearing the cache it works fine is this expected?
4
0
138
1w