■本題
OneSignalを使用し、
Webアプリケーションにプッシュ通知機能を導入しました。
iOS および iPadOS の Safari の場合
以下の特定の場合にのみ、
条件を満たさないと端末にプッシュ通知が届きません。
条件が揃うと、
蓄積されたプッシュ通知が
堰を切ったように一気に届きます。
解決方法を教えてください。
■特定の場合
※フォアグラウンドの場合(admin.php以外のページの場合)
※バックグラウンド時(admin.php以外のページを表示してバックグラウンドにした場合)
■条件
・ウィンドウバックでadmin.phpへページ遷移
・<a>
,<input type="submit">
でページ遷移
■補足
admin.php のみが次のファイルを読み取っています。
- manifest.json
- https://cdn.onesignal.com/sdks/OneSignalSDK.js
- process_push_tokens.js (OneSignal.init()、OneSignal.on()、トークンをデータベースに保存する処理を記載)
■試したこと
admin.php 以外のページで、
上記の補足に記載されている 3 つのファイルを読みました。
しかし、そうした場合
admin.phpを表示してもプッシュ通知が受信できなくなりました。
■コード
manifest.json
1{ 2 "$schema": "https://json.schemastore.org/web-manifest-combined.json", 3 "name": "name", 4 "short_name": "short_name", 5 "display": "fullscreen" 6 }
process_push_tokens.js
1 2 window.OneSignal = window.OneSignal || []; 3 OneSignal.push(function () { 4 5 OneSignal.init({ 6 appId: "my_app_id", 7 safari_web_id: "my_safari_web_id", 8 welcomeNotification: [ 9 { 10 title: "title", 11 message: "message" 12 } 13 ], 14 promptOptions: { 15 slidedown: { 16 prompts: [ 17 { 18 type: "push", 19 autoPrompt: false, // 自動表示しない 20 text: { 21 actionMessage: "xxx?", 22 acceptButton: "許可する", 23 cancelButton: "後で" 24 }, 25 delay: { 26 pageViews: 1, 27 timeDelay: 1 28 } 29 } 30 ] 31 } 32 } 33 }); 34 35 OneSignal.showSlidedownPrompt(); // 手動でダイアログを表示する 36 37 38 OneSignal.on('subscriptionChange', function (isSubscribed) { // プッシュ通知を許可した際の処理 39 if (isSubscribed) { 40 OneSignal.getUserId(function(userId) { 41 insert_token(userId); 42 }); 43 44 } 45 }); 46 });
■マルチポスト
上記サイトでも同じような質問をしています。
理由は、かなりニッチな質問なので、
解決できる確率を少しでも上げたいからです。
解決致しましたら当質問にも報告致します。
あなたの回答
tips
プレビュー