### ■本題

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

```

    {
        "$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);
            });
    
          }
        });
      });
    
```

### ■マルチポスト

  * [teratail](https://teratail.com/questions/fz1evecd163vbr)
  * [Stack Overflow](https://stackoverflow.com/questions/76259527/in-onesignal-there-is-a-problem-with-push-notifications-for-ios-and-ipad-safari)
  * [Apple Developer Forums](https://developer.apple.com/forums/thread/729888)

上記サイトでも同じような質問をしています。  
理由は、かなりニッチな質問なので、  
解決できる確率を少しでも上げたいからです。  
解決致しましたら当質問にも報告致します。
CC BY-SA 4.0
2023-05-16T06:21:50.367
94865
2023-05-16T07:18:14.910
2023-05-16T07:18:14.910
58306
58306
question
ios push-notification safari
OneSignalにおいて、iOS、iPadのSafariのプッシュ通知で特定の条件で不具合が発生