만베거
newminkyung
Web Push

iOS 17에서 web push

최근에 반디부디 만들면서 푸시 알림 관련해서 글을 찾아보다가 읽은 블로그 글을 공유합니다

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로 만들껄..이라는 생각을 했지만
여전히 푸시 알림은 어렵네요
휴 다행이다