iOS 17에서 web push
최근에 반디부디 만들면서 푸시 알림 관련해서 글을 찾아보다가 읽은 블로그 글을 공유합니다
- 기존 iOS 16 베타에서 웹 푸시를 지원 (opens in a new tab)한다고 했지만 버그가 많고 제한하는 상황들이 많았다.
- iOS 17에서는 많은 개선이 이루어졌고, 동작이 보다 일관성 있게 동작한다고 함
API 기본 설정 값
웹 푸시를 지원하려고 할 때 가장 큰 문제는 iOS 16에서 API가 기본적으로 비활성화되어 있다는 점이었다
AS-IS: iOS 16
설정 -> Safari -> 고급 -> 실험적 기능 설정
을 통해서 API 활성화 설정 가능
TO-BE: iOS 17
- 관련 API가 기본적으로 활성화
API 지원 여부
- iOS 16의 웹 푸시에서 가장 큰 번거로움 중 하나는 API를 사용할 수 있지만
- 위의 제한 사항이 적용되었을 때 효과적으로 구현되지 않는다는 점
AS-IS: iOS 16
- 특정 API 존재 여부를 확인할 때, 에러가 런타임에서만 표시됨
TO-BE: iOS 17
- 다음 코드를 통해 해결 가능
// 서비스 워커 지원 if (!"serviceWorker" in navigator) { return; } // 웹 푸시 지원 const registration = await navigator.serviceWorker.ready; if (!"pushManager" in registration) { return; }
- 홈 화면에 설치 되었고 + 서비스 워커가 설치된 사이트는 다음 코드를 통과
여전히 .. 홈 화면 미지원
- 홈 화면에서 실행된 웹앱만이 웹 푸시를 활성화하는데 필요한 API를 사용할 수 있다.
- 웹 푸시라는 강력한 기능을 사용하지 못하게 하려는 애플의 의도적인 결정이다
사용자는 해당 웹앱을 홈 화면에 추가하면 더 강력한 기능을 사용할 수 있다는 사실을 결코 알 수 없습니다.
애플은 앱 배너, 설치 API 또는 메뉴 용어 변경('설치' 등)을 지원하지 않으며,
기술적으로 가능함에도 사용자에게 PWA를 숨기려는 애플의 고전적인 결정을 유지합니다.
여전히 .. 어려운 푸시 알림
- 어떤 개발자는 iOS 17에서 웹 푸시를 사용해
피자를 성공적으로 주문하면 휴대폰으로 푸시알림이 가는 기능
을 구현했지만 - 푸시 알람이 제대로 전송됐지만, 피자가 주문되지는 않았던 경험을 공유했다
최근 iOS 17에서 웹 푸시를 제대로 지원한다는 내용의 제목만 읽고
반디부디 pwa로 만들껄..이라는 생각을 했지만
여전히 푸시 알림은 어렵네요
휴 다행이다