Hello,
I can't figure out how to set the name of a Content Blocker in the Safari extensions list. So far, the Content Blocker name in this list is the Contaning application name.
I tried to set the bundle name in Info.plist and tried to locate Info.plist, without success...
Since I also bundle a Safari ("chrome") extension, I have two extensions in the list, and it would be fine to display a specific name for each to make it clear for the user.
General
RSS for tagExplore the integration of web technologies within your app. Discuss building web-based apps, leveraging Safari functionalities, and integrating with web services.
Post
Replies
Boosts
Views
Activity
I'm working on a rather complex web application that includes 3D terrain, 2D mapping, and SVG animations. Both Safari and the Swift app I've built using WkWebKit reload the page after some period of time. Safari pops up a small text block that says:
This webpage was reloaded because it was using significant memory.
Yes. That's true. It's also true that the M1 Max Mac was in now way experiencing issues, nor were any of the other web pages running in other tabs or windows.
The memory limit is simply too low for modern web apps. So far I've not found any way to adjust the parameters in Safari or WkWebView.
Apple, help a brother out. It's not 1997 anymore. Web apps are big. And resetting them at some arbitrary point causes more problems that is solves.
Anyone have any suggestions? Quinn, any way (other than casting a stone into the one-way abyss of Radar) of getting help from the big A here?
I'm developing an application that utilizes WKWebView to display a webpage. My goal is to improve the performance and loading speed of this webpage by intercepting specific API calls and providing pre-stored JSON responses directly from within the app, ensuring the webpage renders instantaneously.
The challenge I am encountering is the inability to intercept HTTPS URL schemes directly from WKWebView. Any insights or solutions from the community on how to effectively manage and overwrite these particular network requests would be greatly appreciated.
I'm injecting some javascript into a WKWebview on iOS. At a certain point the web view spits out these warnings into the console and the javascript execution stops.
0x109018c40 - [PID=778] WebProcessProxy::gpuProcessExited: reason=IdleExit
0x109019200 - [PID=779] WebProcessProxy::gpuProcessExited: reason=IdleExit
Failed to terminate process: Error Domain=com.apple.extensionKit.errorDomain Code=18 "(null)" UserInfo={NSUnderlyingError=0x303c3c060 {Error Domain=RBSRequestErrorDomain Code=3 "No such process found" UserInfo={NSLocalizedFailureReason=No such process found}}}
I can't find any solution for this so am looking if anyone has any idea of what to try.
None of the WKWebview delegate functions trigger when this occurs so I can't attempt to reload the webview at this stage
Title: SafariViewService Recurring "Hard Refresh" Issue on iOS 18.0.1
Hello,
Many of my app users are experiencing a recurring "hard refresh" issue related to SafariViewService, which appears only on iOS 18.0.1 across various iPhone models. Users on earlier iOS versions are not encountering this problem.
Our app relies on SafariViewService, and the logs show an event triggered by an EXC_GUARD exception with a termination reason from LIBXPC, causing the app to stop. Below are key details from the log report:
App Version: 4.1.2 (build 4.1.1.0)
OS Version: iPhone OS 18.0.1
Exception Type: EXC_GUARD
Subtype: GUARD_TYPE_USER
Termination Reason: LIBXPC, XPC_EXIT_REASON_FAULT
Device Model: iPhone 11 Pro Max
Process Path: [Removed]
Here’s an excerpt from the logs:
...
{"codes":"0x6000000000000007, 0x0000000000000009","reason":9,"message":"namespc 7 reason_code 0x0000000000000009","subtype":"GUARD_TYPE_USER","type":"EXC_GUARD","rawCodes":[Removed],"namespc":7},
"termination" : {"flags":518,"code":9,"namespace":"LIBXPC","indicator":"XPC_EXIT_REASON_FAULT"},
...
I would greatly appreciate any guidance on resolving this issue, particularly if there are known concerns with inter-process communication (LIBXPC) in iOS 18.0.1 or advice on how to manage the EXC_GUARD exception more effectively.
Full log details are in the attachment.
Thank you for your help!
ExcUserFault_SafariViewService-2024-10-10-102717 (1).ips
ExcUserFault_OnixWorker.Maui-2024-10-10-102718 (1).ips
Thank you for your help!
I’m encountering an issue with CSS not displaying when using WKURLSchemeHandler to load local HTML files.
• When I package the app using Xcode 15.3 or above, the CSS styles do not display on iOS 17 or higher. However, on iOS 16.7.1, the CSS displays correctly.
• If I use Xcode 15.2 to package the app, the CSS loads and displays correctly on all iOS versions.
I am using WKURLSchemeHandler to intercept and load the local HTML files. Is there any known issue or workaround for this?
You can now post this in the “Safari & Web” section of the Apple Developer forums for further assistance!
//
// CustomURLSchemeHandler.m
// HTMLTest
//
// Created by lvxue on 2024/9/23.
//
// CustomURLSchemeHandler.m
#import "CustomURLSchemeHandler.h"
@implementation CustomURLSchemeHandler
// 拦截请求并提供本地 HTML 文件
- (void)webView:(WKWebView *)webView startURLSchemeTask:(id<WKURLSchemeTask>)urlSchemeTask {
NSURL *url = urlSchemeTask.request.URL;
//NSString *filePath;
// 获取本地 HTML 文件路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"LoaclHtml.bundle/A4"];
// 判断请求的是 HTML、CSS 或其他文件
if ([url.lastPathComponent hasSuffix:@".css"]) {
filePath = [[NSBundle mainBundle] pathForResource:@"style" ofType:@"css" inDirectory:@"LoaclHtml.bundle/A4/css"];
} else if ([url.lastPathComponent hasSuffix:@".js"]) {
filePath = [[NSBundle mainBundle] pathForResource:@"yourJSFileName" ofType:@"js" inDirectory:@"LoaclHtml.bundle/A4/js"];
} // 可以继续添加其他资源类型如图片
NSData *htmlData = [NSData dataWithContentsOfFile:filePath];
NSString *mimeType = [self mimeTypeForPath:filePath];
// 创建响应头
NSURLResponse *response = [[NSURLResponse alloc] initWithURL:url
MIMEType:mimeType
expectedContentLength:htmlData.length
textEncodingName:@"utf-8"];
// 提供响应数据
[urlSchemeTask didReceiveResponse:response];
[urlSchemeTask didReceiveData:htmlData];
[urlSchemeTask didFinish];
}
// 停止请求
- (void)webView:(WKWebView *)webView stopURLSchemeTask:(id<WKURLSchemeTask>)urlSchemeTask {
// 通常不需要处理停止请求的逻辑
}
- (NSString *)mimeTypeForPath:(NSString *)path {
NSString *fileExtension = [path pathExtension];
if ([fileExtension isEqualToString:@"html"]) {
return @"text/html";
} else if ([fileExtension isEqualToString:@"css"]) {
return @"text/css";
} else if ([fileExtension isEqualToString:@"js"]) {
return @"application/javascript";
} else if ([fileExtension isEqualToString:@"png"]) {
return @"image/png";
} else if ([fileExtension isEqualToString:@"jpg"] || [fileExtension isEqualToString:@"jpeg"]) {
return @"image/jpeg";
} else if ([fileExtension isEqualToString:@"gif"]) {
return @"image/gif";
}
return @"application/octet-stream";
}
@end
code-block
test
When user opens a new tab and loads a website, the declarativeNetRequest.getMatchedRules() returns nil and on reloading in the same tab it returns the URLs blocked.
Is this an expected behaviour?
What do I need to do with my webpages to enable Safari AI summary functionality?
Thanks, David
I am trying to access a camera from web view and I'm unable to load the updated UI in web view and web view gets flick for every few seconds. The updated UI has some more functionality, but the web page not getting loaded.
I want to switch from Apns to standard notificationApi browser notification, but when my website originally used Apns, I switched to standard API and called Notification for message notification. The notification didn't appear.
I confirmed that Notification.permission is granted.
Hi,
I am automating an ios AAP with
Appium - 2.11.5
xcuitest - 7.1.0
ios - 17.5
I am working on a browser base application and a scenario where in a new pop up/new window is opened.
So basically i have 2 windows now. Typically if print the window size at this point it should print me 2 windows.
Not to worry for for context Native_app as i have a native app open in parallel.
But when i print it shows me window length = 1.
Window length ======= >>>> 1 [Ljava.lang.Object;@31add542
…WEBVIEW_97973.1
… curtent cotext WEBVIEW_97973.1
Context … NATIVE_APP
Context … WEBVIEW_97973.1
You can clearly see here its only identifying 1 window. Parent window only - window length=1
My capabilities are set as follows
capabilities.setCapability(“platformName”, IOS);
capabilities.setCapability(“deviceName”, “iPhone 15 Pro”);
capabilities.setCapability(“autoWebview”, TRUE_STRING);
capabilities.setCapability(“autoAcceptAlerts”, true);
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, “XCUITest”);
capabilities.setCapability(CapabilityType.BROWSER_NAME, “Safari”);
capabilities.setCapability(“SFSafariViewController”, true);
capabilities.setCapability(“appium:includeSafariInWebviews”, true);
capabilities.setCapability(“safariAllowPopups”, true);
capabilities.setCapability(“waitForIdleTimeout”, 0);
capabilities.setCapability(“isInspectable”, true);
capabilities.setCapability(“webviewConnectTimeout”, 5000);
Kindly provide any pointers how to get read of this window issue. This is blocking automating all my flows in webflow.
any help is much appreciated
Hi, I'm building a nextjs app based on of MapkitJS.
I tried to pass a new value to cameraZoomRange like the code below. As long as I put in this part map.cameraZoomRange, the error shows up. Not sure it's my fault, or the bug of MapkitJS.
const map = new window.mapkit.Map(element, {
colorScheme: mqMatchLightTheme
? window.mapkit.Map.ColorSchemes.Light
: window.mapkit.Map.ColorSchemes.Dark,
showsCompass: window.mapkit.FeatureVisibility.Hidden,
showsMapTypeControl: false,
showsZoomControl: false,
showsUserLocation: true,
tracksUserLocation: true,
isRotationEnabled: true,
isZoomEnabled: true,
});
map.cameraZoomRange = new window.mapkit.CameraZoomRange({
minCameraDistance: 14,
maxCameraDistance: Infinity,
});
Hi,
I’m seeking information about the HLS protocol version supported in Safari on macOS. The official documentation only provides details about iOS support. Is there an official document that addresses this?
Best regards
Hi, I had been working on an extension without any issues, running it from Xcode and debugging locally in Safari. However, without making any code changes, and after uninstalling the extension, it stopped appearing in Safari after building for local debugging. Does anyone know what might be happening or how I can clean up the system?
Thanks a lot and best regards.
Hi,
when I search for a gif on my IPH 15 pro max, after a little scrolling in browser when I searching for some Gif images, the phone starts to overheat and the browser crashes (safari, chrome, duck, brave, all of them) completely. All I can do is just quit from the search engines. That bug happens very quickly, after about 15 seconds.
Please check for bug.
Best regards.
Hi. I've noticed on both iOS 17 and iPadOS 16 that when an user opens a website in a WKWebview (e.g from Gmail), then requests it to be opened in the external Safari app (through the "compass" icon), their localStorage data is not transferred to the Safari tab.
This behaviour breaks web experiences that rely on data being locally stored, e.g auth tokens or user identification data. It effectively stops users from being able to use some websites outside of an in-app context.
I am aware of Webkit's tracking prevention mechanisms such as https://webkit.org/tracking-prevention/#partitioned-third-party-localstorage, but I don't think this should apply to this case. Here the user is navigating between two Safari tabs (one internal and one external) on the same domain, exact same URL, by pressing a native Safari webview icon. There is no third-party cross-domain tracking happening.
Is this a bug or intended behaviour?
As of Safari 18, the tabs.executeScript extension API no longer respects the frameId option passed to it, and instead just runs the script in the top frame.
Try running an extension with the following contents on a page with an iFrame (chase.com puts its login form in an iFrame for example).
content.js
console.log("content.js loaded", location.href);
// tabs.executeScript test
browser.runtime.sendMessage({ type: "tabs.executeScript" }).then(() => {
console.log("tabs.executeScript done");
});
// scripting.executeScript test
browser.runtime.sendMessage({ type: "scripting.executeScript" }).then(() => {
console.log("scripting.executeScript done");
});
background.js
browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.type === "tabs.executeScript") {
browser.tabs
.executeScript(sender.tab.id, {
code: 'console.log("THIS IS RUN FROM TABS.EXECUTESCRIPT", location.href);',
frameId: sender.frameId,
})
.then(sendResponse);
} else if (request.type === "scripting.executeScript") {
browser.scripting
.executeScript({
target: { tabId: sender.tab.id, frameIds: [sender.frameId] },
func: () => {
console.log("THIS IS RUN FROM SCRIPTING.EXECUTESCRIPT", location.href);
},
})
.then(sendResponse);
}
});
You'll see that tabs.executeScript runs its contents in the TOP frame, no matter what the target is.
Notably, scripting.executeScript DOES respect the frameId.
Filed with Feedback ID FB15420092
I'm trying to implement WebAuthn conditional credential creation but I'm not able to get it to work.
From this video https://www.youtube.com/watch?v=p8a6ODX1zHY I understand I should call navigator.credentials.create with "mediation: conditional" but the explainer at https://github.com/w3c/webauthn/wiki/Explainer:-Conditional-Registration-Extension also mentions a call to navigator.credentials.get with "mediation: conditional" and "extensions: { conditionalCreate: true }".
The explainer seems to suggest they should be called both but for me, both calls never resolve with a credential or an error.
What am I doing wrong?
hi anybody have issue about pwa and webpush notification using FCM? with latest webpush and ios 17.x or 18.x 1-2 notification arrived but if iphone will be standby or webapp closed the service worker not receive notification