Skip to content

Instantly share code, notes, and snippets.

@mxschmitt
Created March 2, 2023 10:16
Show Gist options
  • Save mxschmitt/777c7a1826ec28b0fa2ff72eb10894e4 to your computer and use it in GitHub Desktop.
Save mxschmitt/777c7a1826ec28b0fa2ff72eb10894e4 to your computer and use it in GitHub Desktop.
window.safari.pushNotification Polyfill
// Writing a polyfill for window.safari.pushNotification.
// Source https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html
(() => {
type Permission = 'default' | 'denied' | 'granted';
class SafariRemoteNotification {
permission(websitePushID: string) {
return new SafariRemoteNotificationPermission(null, 'default')
}
requestPermission(url: string, websitePushID: string, userInfo: any, callback: (permission: SafariRemoteNotificationPermission) => void) {
callback(new SafariRemoteNotificationPermission(null, 'denied'));
}
}
class SafariRemoteNotificationPermission {
constructor(readonly deviceToken: string | null, readonly permission: Permission) {
this.deviceToken = deviceToken;
this.permission = permission;
}
}
const safari: any = (window as any).safari = {};
safari.pushNotification = new SafariRemoteNotification();
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment