You cannot use the endpoint of a push subscription to identify a particular device, unless you also require the user to log in. That would be a significant security issue.
In essence, the problem of duplicated functionality is not unique to Web apps. Having both the stable and experimental version installed of any app can lead to the very same issues. Android Apps can solve this by using the Device ID. iOS apps can use a UUID that’s unique per app vendor.
The Web (fortunately) does not expose any sort of unique Id to users. Instead, Web apps tend to use a combination of the device, OS and screen size information to try to reach a similar result. That is not always sufficient, but more importantly, may lead to races when events happen, e.g. when receiving a notification.
By that time we’ve already lost, because the user is presented with the same information twice.
I believe this proposal has a lot of potential. It definitely addresses a real issue. We can give developers more certainty and enable them to build the UI for allowing users to make a decision. Requiring both sides to declare the relationship seems good, although we might want to think about limiting that to the origin as opposed to related_applications
.
One case that advocates for Marcos’ thoughts is using different kinds of apps for different accounts. Some form of limited negotiation or acknowledgement could work there. While that’s not super common, it’d be good to at least keep the door open.