The invitation is four letters, not a link
A URL only opens the installed app on Android; on an iPhone it opened a second copy of the game in Safari, with its own storage and none of the name picked in the app. So the share sheet now sends "JOIN ME IN SPLATTER TENNIS — THE CODE IS ABCD" and nothing else, and the button says SEND THE CODE. The #net-ABCD door stays — it is exactly what a deep link will carry the day this is a real app with universal links. Nothing sends it in the meantime. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
89b2488d3c
commit
2b7eb04e19
3 files changed
+21
-19
No files matched your search
+9
-11
@@ -163,8 +163,6 @@ buildSub();
|
||||
const vsPick = document.getElementById('vsPick'), vsWait = document.getElementById('vsWait');
|
||||
const vsName = document.getElementById('vsName'), vsCode = document.getElementById('vsCode');
|
||||
const vsSay = (id, text) => { document.getElementById(id).textContent = text; };
|
||||
// the link IS the invitation: the joiner's phone opens the lobby with the code already in the field
|
||||
const vsLink = code => location.origin + location.pathname + '#net-' + code;
|
||||
|
||||
function vsOpen(code = '') {
|
||||
vsName.value = stats.savedName();
|
||||
@@ -193,17 +191,17 @@ vsCode.addEventListener('keydown', e => { if (e.key === 'Enter') vsGo(true); });
|
||||
// SHARE, then COPY. navigator.share is the phone's own sheet (WhatsApp, Signal, wherever the
|
||||
// friend actually is) and is exactly the "easier setup" — the clipboard is the desktop fallback,
|
||||
// and the code stays on screen for the two of them in the same room reading it aloud.
|
||||
// THE CODE RIDES THE MESSAGE, not just the link. An Android phone opens the link in the INSTALLED
|
||||
// app (the manifest's scope covers the whole site, so its WebAPK claims these URLs) — but an iPhone
|
||||
// home-screen app can claim nothing, so the link always opens in Safari, which keeps its own
|
||||
// storage and therefore knows nothing about the name they picked inside the app. Four letters in
|
||||
// the same message is the whole fix: a friend who has it installed opens their app and types them.
|
||||
// THE MESSAGE IS THE CODE, and deliberately carries no link. A link only opens the INSTALLED app
|
||||
// on Android (the manifest's scope covers the site, so its WebAPK claims these URLs); an iOS
|
||||
// home-screen app can claim nothing, so on an iPhone it always opened Safari instead — a second
|
||||
// copy of the game, with its own storage and none of the name they picked in the app. Until this
|
||||
// is a real app with universal links, four letters are the invitation. (`#net-ABCD` still works as
|
||||
// a door — it is what a deep link will carry the day there is one — nothing just sends it now.)
|
||||
document.getElementById('vsShare').addEventListener('click', async () => {
|
||||
const code = G.net && G.net.code || '';
|
||||
const url = vsLink(code), text = 'COME AND PLAY ME — ROOM CODE ' + code;
|
||||
const text = 'JOIN ME IN SPLATTER TENNIS — THE CODE IS ' + (G.net && G.net.code || '');
|
||||
try {
|
||||
if (navigator.share) await navigator.share({ title: 'SPLATTER TENNIS', text, url });
|
||||
else { await navigator.clipboard.writeText(text + ' ' + url); vsSay('vsMsg', 'COPIED — SEND IT TO THEM'); }
|
||||
if (navigator.share) await navigator.share({ title: 'SPLATTER TENNIS', text });
|
||||
else { await navigator.clipboard.writeText(text); vsSay('vsMsg', 'COPIED — SEND IT TO THEM'); }
|
||||
} catch { /* a cancelled share sheet is not an error */ }
|
||||
});
|
||||
const vsQuit = () => { endNetVs(); vsOpen(); }; // a room you walked out of must give its socket back
|
||||
|
||||
Reference in new issue
Block a user