Enable web views and services in your apps.

All subtopics

Post

Replies

Boosts

Views

Activity

Embedded PDFs in mobile safari broken since ios8
hi there, I just tested it on iPadOS 14 - issue remains: Mobile safari started rendering embedded PDFs as images. This is problematic both when viewing and printing: when viewing, only the first page of the PDF is displayed when printing, the picture gets printed, leading to incomplete and blurred printing In both cases the user does not understand the problem is on mobile safari and either does not see/ print the remaining pages or complains about broken PDFs. The only workaround currently known to me is to provide a download-link that will show the PDF as full page (no embedding). This way the PDF is rendered with multiple pages and printed correctly. The problem with this workaround is: if the user places the webapplication on the home screen (so it is opened in fullscreen), downloading the PDF as described in the workaround puts the user in a navigation dead-end, as he will not be able to navigate back. This is an awful situation. The platform is powerful enough to simply embed PDFs in the page. Safari is obviously capable of handling PDFs, as shown with the workaround. Please fix this. Or do not show PDFs embedded at all, at least user will direct its complaints at Apple and not to us web developers.
13
5
8.3k
Jun ’20
Toolbar Button Icons are Blue
All of my third party extensions have blue icons now, in Safari 14.0. It looks pretty awful. Is there a way to keep the monochrome colors or a way for us, as developers, to provide a different kind of icon to sustain the monochrome colors for our extensions? I am assuming the blue color denotes something, like the extension being "active". I wasn't able to find documentation on this change nor any related api doc.
12
1
4.8k
Sep ’20
Safari causes VideoJS ERROR MEDIA CODE:4
Hello, when I'm trying to record a video in Safari for Mac and the record ends, Safari doesn't load the video and I get this: ""VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this media"" I'm using VueJS in the Frontend and Django in the backend. And I can only record in Safari with video/mp4;codecs=avc1. Safari will not allow any other type for the record or the access to the camera or microphone. In Chrome or firefox it records with video/webm;codecs=vp8,opus and can find the source of it and the recorded video plays without issue. I'm using a MacBook Pro M1-Chip and the Safari Version is 16.6 on Mac. Thank you for your help and have a great day.
0
1
764
Sep ’23
Change volume of YouTube video playing in WKWebView
We are creating a watch party app that allows you to video chat with your friends and play a YouTube video at the same time. The video is played using Google's youtube-ios-player-helperlibrary which uses a WKWebView with their iframe API, as that's the only way to play it without violating the Terms of Service. We need the ability to change the volume of the YouTube video separately from the video chat, so you can hear your friends over the video for example. Unfortunately it's not possible to directly change the volume because iOS does not support changing the volume via JavaScript - https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html#//apple_ref/doc/uid/TP40009523-CH5-SW10, unlike macOS. Setting volume doesn't do anything and getting it always returns 1. Users can change the volume with the hardware buttons but this applies to all audio including the video chat, not just the YouTube video. Someone found a workaround - https://stackoverflow.com/a/37315071/1795356 to get the underlying AVPlayer and change its volume natively. This worked with UIWebView but does not work now that it uses WKWebView. What can be done to change the volume of the YouTube video?
1
0
1.6k
Sep ’20
Safari splits one Record
Hi, this is my first time to write in Forum. My Problem is that, when I have a video in Safari for Mac recorded, Safari is splitting my record into three blobs. For Example Chrome doesn't. There is one record, one blob. Safari Version: 16.6 (18615.3.12.11.2) Does anyone know why Safari splits one Record/blob into three blobs? Thank you and have a great day.
3
1
589
Aug ’23
Apple Web Push API doesnt work with HTTP/2
Hello, i try to send a Web Push Notification to my Safari Webbrowser and use the "http2" Module from Node.js Every other Browser is able to receive my messages. I got the message "BadJwtToken" but when i use the same Authorization Key with a HTTP/1.1 Request, i got a Message on Safari. Is there a Problem with the API when i use the HTTP/2 Protocol? Has anybody the same Problem? I send exactly the same Headers and as i said other Push APIs from Mozilla,Chrome and Microsoft e.t.c. are working with my HTTP2 Client.
0
0
635
Aug ’23
MediaRecorder stop event is not trigger on safari iOS
I'm trying to record my screen (canvas) on iPad safari with the new experiential media recorder support. I got the mediaRecorder object and it triggers the start event but the issue is whenever mediaRecored record blob it will not trigger the stop event. It is working fine of MAC Safari but on iPad Safari I'm getting this issue. Is there any ways to get the stop event so mediaRecorder fire ondataavailable method after stop on iPad Safari?
3
0
1.9k
Sep ’20
[Chromium][PWA] VoiceOver doesn't read in many cases of PWA
Recently, I found there are some problems with Voice Over on PWA app: Voice Over cannot read the state changes when users interacts with some HTML element. I am not sure this bug is a chromium bug or Voice Over bug. I have reported the bug to chromium, which list the reproduce steps and video. I am working on the bug, but I don’t have much of an idea. So sending this here to see if you have some insight on this issue. How to reproduce the bug Install PWA test app(https://pwa-a11-test.netlify.app) Open the PWA app Turn on the VoiceOver Pressing Space on the checkbox element (Note: I only use checkbox element as a example, other HTML element also have the similar problem, such as Pressing Left/Right on slider element) Expected: Voice Over read the value changes, just like the behavior shown in the browser. Actual: Voice Over do nothing. Chromium code analysis The bug only exist in PWA scenario, it’s fine for browser scenario. FYI, PWA Mac app has its own process(called app shim process), which spawn browser process(think it as Chrome app) and then communicate between them. For the accessibility implementation for PWA App, chromium use NSAccessibilityRemoteUIElement, a private Apple API, to make app shim process have the all accessibility ability of browser process. I doubt the bug has anything to do with NSAccessibilityRemoteUIElement https://source.chromium.org/chromium/chromium/src/+/main:ui/base/cocoa/remote_accessibility_api.h;l=14?q=NSAccessibilityRemoteUIElement&ss=chromium%2Fchromium%2Fsrc but I am not familiar with the undocumented API. According to the chromium code, when pressing the Space on checkbox, chromium will call NSAccessibilityPostNotification with NSAccessibilityValueChangedNotification. Voice Over can’t read the value change for PWA Mac app, but can read for browser scenario. I use Xcode accessibility inspector tool to see the notification posted from PWA App. I found the notification was sent successfully, but Voice Over can not read it! So I doubt voice over is doing some check to disallow read it in this case? Do you have any thoughts on this? Appreciate it if there is any comments or response!!
2
1
466
Aug ’23
Request header in safari
hello! the problem is that about 2 months ago, the iphone browser sent such formats as webp/avif in http accept headers. a normal header should look like "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8". on iphone now it looks like "text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8"
0
1
590
Aug ’23
Can’t enforce safari as default browser
I would like to know on a mdm managed supervised device, how to force use Safari if a user has non-safari browser set as default. can enforcing safari for a domain or web clip be done? even shortcuts now, when using safari it opens whatever is set as default browser. Ironically if same simple shortcut of open URL with Chrome is created it opens with Chrome, regardless if default browser is set to firefox for example this default browser setting is great for personal use but cause issues now for corporate use for me anybody else figure this out? Also affects certificates for our managed devices
2
0
2.1k
Nov ’20
Use redirect url when creating skadnetwork for web ads attributable ad link
I would like to use skadnetwork 4.0 new feature of web ads based on this link from Apple web site: https://developer.apple.com/documentation/skadnetworkforwebads/creating_an_attributable_ad_link I need to create this type of html link: `<a href="https://apps.apple.com/app/id{itunes_item_id}" attributionDestination="https://example.com" attributionSourceNonce="t8naKxXHTzuTJhNfljADPQ"> </a>` My question: is it possible to use at the href a link that will do redirect (client or server(302)) to the app store url in order to receive app-installation attribution from a web ad or I must put a direct link to the app store in order it will work ?
0
0
416
Aug ’23
DeviceMotionEvent requestPermission
Hello. I'm working on web app where wanna access data from accelerometer. In order to access data from accelerometer on iPhone, I have to request permission from user. This is completely fine and I'm happy about that. No complains there. The problem is that I cannot just ask for permission. In order to request permission for accelerometer data on iPhone, there have to be something called "user gesture" event. If I request permission directly, it will end up with error BUT when I place random button on application with random text and request permission on onClick event, everything is fine. And I don't get it. Why there is need for something like user gesture event? It is just stupid. It's like: Nah, you cannot ask for permission just like that. You have to first click on this "Do you wanna donate all your money?" button and then is Ok to ask for permission... Am I missing something? Can someone from apple explain to me this "great" developer experience? For better understanding, here Is an article https://dev.to/li/how-to-requestpermission-for-devicemotion-and-deviceorientation-events-in-ios-13-46g2
0
0
887
Aug ’23
Getting Error InValidAccessError for session.completeMerchantValidation(merchantSession);
var session = new ApplePaySession(9, mySimpleRequest); window.session = session; //Setup handler for validation the merchant session. = function (event) { alert("onvalidatemerchant AppleSession before validation-" + JSON.stringify(session)); //Create the payload. var data = { validationUrl: event.validationURL }; var antiforgeryHeader = $("meta[name='x-antiforgery-name']").attr("content"); var antiforgeryToken = $("meta[name='x-antiforgery-token']").attr("content"); var headers = {}; headers[antiforgeryHeader] = antiforgeryToken; // alert("merchantRequest: " + JSON.stringify(data)); // alert("Controller:" + $("link[rel='merchant-validation']").attr("href")); $.ajax({ url: $("link[rel='merchant-validation']").attr("href"), method: "POST", contentType: "application/json; chaxset=utf-8", data: JSON.stringify(data), headers: headers }).then(function (merchantSession) { alert("onvalidatemerchant AppleSession after validation-" + JSON.stringify(session)); alert("merchantSession-" + JSON.stringify(merchantSession)); console.log("merchantSession-" + JSON.stringify(merchantSession)); //alert("jsonparse: "+JSON.parse(merchantSession)); if (session == null || session == undefined) { alert("nsession object is null, skipping"); } else { alert("nsession object is NOT null, Calling completeMerchantValidation"); session.completeMerchantValidation(merchantSession); } }).catch((error) => { alert(error + "------------- in line") }); }; this is my code and this is my merchantSession object : merchantSession-{"status":"200","statusMessage":{"epochTimestamp":1690527282002,"expiresAt":1690530882002,"merchantSessionIdentifier":"SSH79603FE752F1424D8A5DE6F3D4850847_916523AAED1343F5BC5815E12BEE9250AFFDC1A17C46B0DE5A943F0F94927C24","nonce":"96538fcc","merchantIdentifier":"6DC048609B1AF64EDF23F1BE4EE4984A0A6DF1E80B16A816204A0541B2613627","domainName":"applepay.traveazy.dev","displayName":"ApplePay","signature":"308006092a864886f70d010702a0803080020101310d300b0609608648016503040201308006092a864886f70d0107010000a080308203e330820388a00302010202084c304149519d5436300a06082a8648ce3d040302307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553301e170d3139303531383031333235375a170d3234303531363031333235375a305f3125302306035504030c1c6563632d736d702d62726f6b65722d7369676e5f5543342d50524f4431143012060355040b0c0b694f532053797374656d7331133011060355040a0c0a4170706c6520496e632e310b30090603550406130255533059301306072a8648ce3d020106082a8648ce3d03010703420004c21577edebd6c7b2218f68dd7090a1218dc7b0bd6f2c283d846095d94af4a5411b83420ed811f3407e83331f1c54c3f7eb3220d6bad5d4eff49289893e7c0f13a38202113082020d300c0603551d130101ff04023000301f0603551d2304183016801423f249c44f93e4ef27e6c4f6286c3fa2bbfd2e4b304506082b0601050507010104393037303506082b060105050730018629687474703a2f2f6f6373702e6170706c652e636f6d2f6f63737030342d6170706c65616963613330323082011d0603551d2004820114308201103082010c06092a864886f7636405013081fe3081c306082b060105050702023081b60c81b352656c69616e6365206f6e207468697320636572746966696361746520627920616e7920706172747920617373756d657320616363657074616e6365206f6620746865207468656e206170706c696361626c65207374616e64617264207465726d7320616e6420636f6e646974696f6e73206f66207573652c20636572746966696361746520706f6c69637920616e642063657274696669636174696f6e2070726163746963652073746174656d656e74732e303606082b06010505070201162a687474703a2f2f7777772e6170706c652e636f6d2f6365727469666963617465617574686f726974792f30340603551d1f042d302b3029a027a0258623687474703a2f2f63726c2e6170706c652e636f6d2f6170706c6561696361332e63726c301d0603551d0e041604149457db6fd57481868989762f7e578507e79b5824300e0603551d0f0101ff040403020780300f06092a864886f76364061d04020500300a06082a8648ce3d0403020349003046022100be09571fe71e1e735b55e5afacb4c72feb445f30185222c7251002b61ebd6f55022100d18b350a5dd6dd6eb1746035b11eb2ce87cfa3e6af6cbd8380890dc82cddaa63308202ee30820275a0030201020208496d2fbf3a98da97300a06082a8648ce3d0403023067311b301906035504030c124170706c6520526f6f74204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553301e170d3134303530363233343633305a170d3239303530363233343633305a307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b30090603550406130255533059301306072a8648ce3d020106082a8648ce3d03010703420004f017118419d76485d51a5e25810776e880a2efde7bae4de08dfc4b93e13356d5665b35ae22d097760d224e7bba08fd7617ce88cb76bb6670bec8e82984ff5445a381f73081f4304606082b06010505070101043a3038303606082b06010505073001862a687474703a2f2f6f6373702e6170706c652e636f6d2f6f63737030342d6170706c65726f6f7463616733301d0603551d0e0416041423f249c44f93e4ef27e6c4f6286c3fa2bbfd2e4b300f0603551d130101ff040530030101ff301f0603551d23041830168014bbb0dea15833889aa48a99debebdebafdacb24ab30370603551d1f0430302e302ca02aa0288626687474703a2f2f63726c2e6170706c652e636f6d2f6170706c65726f6f74636167332e6300","operationalAnalyticsIdentifier":"ApplePay:6DC048609B1AF64EDF23F1BE4EE4984A0A6DF1E80B16A816204A0541B2613627","retries":0,"pspId":"6DC048609B1AF64EDF23F1BE4EE4984A0A6DF1E80B16A816204A0541B2613627"},"statusCode":200}
1
0
456
Jul ’23
SFSafariViewController not showing location permission pop-up but showing camera permission pop-up
Hey, I am loading a link on my app using SFSafariViewController and that link asking camera and location permission. Camera permission pop-up showing and accessible but for location permission it is not doing anything even not showing location permission pop-up. I need to know is there any way to get location permission pop-up on SFSafariViewController.
1
0
920
Jul ’23
How to handle deferred installation
We are currently exploring deferred installation using iOS universal links. Our web page includes universal links with specific user data that we want to pass to the app after first installation. We are looking for suggestions on implementing a seamless transition from Safari to the app, where the device can be consistently and uniquely identified. Any insights or best practices regarding JavaScript-based fingerprinting, storing identifiers, and linking them to user accounts within the app would be greatly appreciated. Additionally, I'm interested in ensuring compliance with privacy regulations and maintaining transparent data collection practices. Thank you in advance
1
0
691
Jun ’23
Safari WebRTC AutoGainControl Support
I'm currently working on a webRTC app and I noticed that there's no support for the Media Track autoGainControl property in Safari, per the Mozilla docs: https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings/autoGainControl#browser_compatibility I don't have much Safari-specific experience so I'm a little confused. What's the reason behind this? Is there some built-in AGC on Apple hardware? Or is this just a completely absent feature in the Safari browser?
1
0
640
Jul ’23
PWA push notifications on iOS
Hi all, I have a PWA with notification system working well on any other device including MacBook. But my customers start to complain that they don't receive any notification on their iphone. I checked with a friend iPhone XR with iOS 16.5.1 installed on it. And it seems that web push notifications are still deactivated in the experimental features. Is it normal? Did I mis something? Apple said they delivered webpush API on iOS16 but it's deactivated by default. I can not ask my customers to go there to activate the option is it a solution to override this or do we still need to wait 10 years to get it activated? Thanks in advance
3
1
5.9k
Jun ’23