iOS/iPadOS Safari中OneSignal推送通知异常问题求助
iOS/iPadOS Safari下OneSignal推送通知延迟送达问题
我在Web应用中集成OneSignal推送通知功能后,在iOS和iPadOS的Safari浏览器中遇到了推送延迟送达的问题:只有满足特定触发条件时,累积的推送才会一次性批量到达,具体情况如下:
推送无法送达的场景
- 应用处于前台状态,且当前页面为非admin.php页面
- 应用处于后台状态,且最后显示的页面为非admin.php页面
触发推送批量送达的条件
- 通过
window.back跳转至admin.php页面 - 通过
<a>标签或<input type="submit">进行页面跳转至admin.php
关键环境说明
仅admin.php页面引入了以下与推送相关的文件:
manifest.jsonhttps://cdn.onesignal.com/sdks/OneSignalSDK.jsprocess_push_tokens.js(包含OneSignal初始化、订阅事件监听及令牌存入数据库的逻辑)
已尝试的无效操作
在非admin.php页面引入上述三个文件后,admin.php页面无法接收推送通知。
代码示例
manifest.json
{ "$schema": "https://json.schemastore.org/web-manifest-combined.json", "name": "name", "short_name": "short_name", "display": "fullscreen" }
process_push_tokens.js
window.OneSignal = window.OneSignal || []; OneSignal.push(function () { OneSignal.init({ appId: "my_app_id", safari_web_id: "my_safari_web_id", welcomeNotification: [ { title: "title", message: "message" } ], promptOptions: { slidedown: { prompts: [ { type: "push", autoPrompt: false, // 自动不显示 text: { actionMessage: "xxx?", acceptButton: "允许", cancelButton: "稍后" }, delay: { pageViews: 1, timeDelay: 1 } } ] } } }); OneSignal.showSlidedownPrompt(); // 手动显示弹窗 OneSignal.on('subscriptionChange', function (isSubscribed) { // 推送通知许可时的处理 if (isSubscribed) { OneSignal.getUserId(function(userId) { insert_token(userId); }); } }); });
内容的提问来源于stack exchange,提问作者Hurozuki
相关产品推荐
相关产品推荐

