2025-06-14
const getClient = async () => {
const clients = await sw.clients.matchAll({
type: "window",
includeUncontrolled: false,
});
return clients.find((client) => {
return client.focused;
});
};
const waitForClient = async () => {
for (let i = 0; i < 10; i++) {
const client = await getClient();
if (client) {
return client;
}
await log("no client");
await new Promise<void>((resolve) => {
sw.setTimeout(() => {
resolve();
}, 100);
});
}
await log("create client");
return await sw.clients.openWindow("/ios-pwa");
};
- 上記のコードで client を取得して navigate するようにした
- 基本的には pwa をタスキルした状態でも、client は一つはある
- たまに
no client
が発生する(別のコードで確認済み)
- タスキルしなくても client.id は変わることが多い
- たまに同じになるときがあって、そのとき失敗しているようにみえる
- ただし次の通知では成功する
- 毎回 openWindow すると回避できそうではある(少し動作が遅くなる)
Top comments (0)