Does the iOS/iPadOS version of safari support push api standard with service worker?
EDIT: there is a petition you can sign to raise awareness on this topic
iOS don't support the W3C Spec web push notifications yet. But there is a Safari specific API for web notifications. Refer to this answer on multiple options you have.
https://stackoverflow.com/a/49803408/1057093
Update: Corrected the Answer in the above link to clarify proprietary solution is only for OS X - Safari and no solution for iOS Safari yet. Custom in app notification is the best we can do today for iOS Safari.
iOS 12, 13, and now iOS/iPadOS 14 still doesn't support these features:
Web Push Notification
Background Sync
Page Lifecycle
Service Workers on WebViews
Universal Links / Link Capturing
So many requests from the community for these features but Apple don't want to hear it. Maybe they think these features have a bigger chance to be unnecessary exploited(spam, etc). And also maybe they want to force developers to create the native application rather than the progressive web application.
I tested iOS 12 in beta last week and as Anand said, there is no change about this functionnality and more globally for Progressive Web App because the Web Manifest, in developpement at this moment is not implemented yet.
iOS 15.4 added a Push API feature in safari
Settings > Safari > Advanced > Experimental WebKitFeatures
but it is turned off by default.
That doesn't mean the Web Push Notification is fully supported in iOS but it is a hint that it might be coming soon.
Hopefully iOS 16 🤞
It still doesn't, but it was just announced that it's coming in 2023.
Source: https://webkit.org/blog/12824/news-from-wwdc-webkit-features-in-safari-16-beta/
(It's at the bottom of the "Web Push for macOS
" section)
Related
I am doing a presentation on the FIDO2/Webauthn standard in a few days and I was excited to see this article on Yubico's website stating that Apple has added support for FIDO authentication via NFC like Android has for years. I had a few of my colleagues go to the various Webauthn test sites out there (webauthn.me, webauthn.io etc) on a newer device running iOS 13.1 but they all display errors stating that the browser is not supported (both safari and chrome). Is there something you have to do to enable this functionality or are we waiting for an update from Apple to enable the feature?
We're waiting on this too. What does bode well is the new NFC write support that was added in 13. The WebAuthn JavaScript API is also available in Safari as an experimental feature - it just doesn't do any FIDO2/CTAP2 stuff yet.
I fully expect to see native support (using NFC, Lightning and built-in PIN/Touch/Face ID) in the not too distant future - especially given Apple are on-board with this and the support in desktop Safari is good.
The question is when...
Editted to add 15 Dec 2019:
As of the 10th of Dec 2019 Safari on iOS 13.3 supports second factor (i.e. not usernameless/passwordless) sign in using NFC, Lightning or USB security keys. I've tested this myself using 2 different Yubico keys that support NFC.
Unfortunately it does not look like registration via the WebAuthn API is working at this time. It presents a UI prompt to plug in or tap the key but nothing seems to happen.
There is also no support yet for using the phone itself as a security key via PIN, Touch ID or Face ID.
This is still a significant step and I can only hope that Apple continues to expand the supported featureset.
Article here: https://www.yubico.com/2019/12/native-support-for-webauthn-and-fido-is-finally-here-on-iphones-and-ipads/
Updated to add announcement for Touch and Face ID on iOS:
https://developer.apple.com/videos/play/wwdc2020/10670/
UPDATE:
Starting with iOS 13.3, WebAuthn support is added in Safari. WebAuthn compatible security keys using NFC, Lightning or USB should work with current implementations of the API. I have been able to verify this using my Yubikey 5Ci using Lightning.
Original answer:
At the moment, there is no support for the WebAuthn API in iOS/iPadOS and there is also no method to enable it. As far as I know, FIDO authentication on iOS currently only works for apps that have integrated it.
On this page you can see exactly what browsers support the WebAuthn API (ar any other web API) at the moment.
Safari with iOS/iPadOS 14 and macOS Big Sur supports WebAuthn with FaceID and TouchID, as announced at the WWDC 2020.
I've been using a NFC key (FEITAN ePass FIDO -NFC Security Key) for about a year with my iPhone 7 using the latest iOS available on it. Also, the Touch ID is working well on my iPhone 7 and iPad Air 2 (no Face ID on those so I can't test that).
About Touch ID, it is a bit tricky to use. It does not come up as an option to register in Safari javascript if you use a callback rather than the same thread as the button event to call navigator.credentials.create({publicKey}). Finding that out was nasty! So no "setTimeout(register...)" or a promise (.then/await) to launch registration using Touch ID.
I use https://www.npmjs.com/package/fido2-lib as backing library on the server side.
I am not able to find a way to enable web push notifications for a PWA app. Does that work in IOS like it does on android?
No the web push api is not yet available on the iOS yet (as of May 2019)
refer here https://developer.mozilla.org/en-US/docs/Web/API/PushManager
I need to develop a progressive web app with push notifications integrated. Searching on the web I have found diverse opinions about this subject.
If I have understood correctly, for now, we cannot have push notifications in safari for mobile (but only for Desktop). Is it right?
Do you have any suggestions to obtain the same result (I am not an iOS expert)? I was wondering that maybe developing a native app only for push notifications purposes could be a good choice until push notification will be ready also for safari mobile.
P.S. I am developing the PWA using Angular 2.
Thank you for the support.
Unfortunately, based this post and also this the latest iOS version(13.3) still doesn't support some features of progressive web app:
Web Push Notification
Background Sync
Page Lifecycle
Service Workers on WebViews
Universal Links / Link Capturing
Until now, no news that says will be implemented on the next version 14. As I said in the old post, I think iOS doesn't want to support these in PWA because these features have a bigger chance to be unnecessary exploited(spam, etc). And also maybe they want to force developers to create the native application rather than the progressive web application.
I just want to let you know: Apple will support push notifications for web apps! This news was published at the WWDC2022. Apple will release Web Push with Safari 16 on macOS (Ventura) in a few months (2022) and for iOS and iPadOS in 2023.
See: https://webkit.org/blog/12945/meet-web-push/
Until this is working, I will use this Flutter wrapper thats embeds the PWA in a Webview.
Here's my case:
I have developed an app in Cordova which is basicly the mobile version of the client's website. But the app has as extra feature the ability to receive push notifications. All works fine as it should.
But the app got rejected due to
Your app provides a limited user experience as it is not sufficiently different from a mobile browsing experience
Side note: Few months back I made the same app for a different client but even without the push notifications, no problem. So I guess Apple has made their terms more strict.
Even Apple suggests to rather use a web app. So my big question is:
Is it possible to have a web app for iOS that also receives the push notifications?
I've been searching around the web for the past few days and I've read a lot of blogs and posts on the issue but most of them are almost over a year old.
Does any of you have more info on this or even have a better solution to the app rejection?
To whom it may concern:
This is still not possible (June 2017).
Preface: there are questions (some good, some bad) already in existance on StackOverflow about webRTC support on various browsers and platforms, including iOS. However I couldn't find anything definitive that was more recent than ~2012, and this is a rapidly-changing field.
I'm working on a browser-based webapp that uses webRTC for minimal-latency peer-to-peer data transfer (not for audio/video, unlike most applications it would seem - all I need is DataChannel).
I hit a snag when I started testing the data-transfer part of the project and discovered that iOS devices still don't natively support this in their built-in browsers (despite some recent rumors).
Bowser is a free open-source browser App for iOS that purports to support webRTC on iOS. The problem is that when I try to open the app, it simply crashes and closes. I've tested this on an iPhone 5 and 5s. Googling has failed to turn up alternatives - even Chrome for iOS doesn't currently support webRTC it seems.
My questions:
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
3) What strategies have other people used to work around this limitation?
As of iOS 11, WebRTC is now supported in Safari: https://developer.apple.com/library/archive/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_0.html#//apple_ref/doc/uid/TP40014305-CH13-SW1
Check out crosswalk project ( https://crosswalk-project.org )
This Provides runtime of Chromium engine for native support in older devices.
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
Answer:
There is a Browser called Bowser that supports webRTC.
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
Answer:
It's not crashing as of now.But I couldn't successfully test with anything so far.I have raised an issue about it
3) What strategies have other people used to work around this limitation?
Answer:
Apple is yet to support WebRTC in Webkit so as of now the only way would be develop a native or Hybrid app that would support the unsupported WebRTC APIs.
You can develop a hybrid app powered by OpenWebRTC or cordova-plugin-iosrtc