يمكن أن تكون نافذة وقت إشعار الدفع بالدقائق ضعف هذا الوقت

بما أننا حصلنا أخيرًا على إشعارات الدفع على PWA لنظام iOS :tada:، كنت أبحث في التأخير المطبق قبل إرسال إشعار الدفع - لأنه بدا أنه يستغرق وقتًا أطول من المتوقع.

الـ code يتحقق مما إذا كان المستخدم متصلاً بالإنترنت مؤخرًا (قبل أقل من push_notification_time_window_mins دقيقة) وإذا كان كذلك، فسيتم تأخير الإشعار لمدة push_notification_time_window_mins.

      if user.seen_since?(SiteSetting.push_notification_time_window_mins.minutes.ago)
        Jobs.enqueue_in(
          SiteSetting.push_notification_time_window_mins.minutes,
          ...
        )
      else
        Jobs.enqueue(:send_push_notification, user_id: user.id, payload: payload)
      end

لكن هذا يعني أنه في الواقع يمكن أن يستغرق الأمر ضعف الوقت المتوقع تقريبًا لأن push_notification_time_window_mins مطبق في كل من فحص الاتصال بالإنترنت وفي التأخير.

مثال:

تم تعيين push_notification_time_window_mins على 10

13:00
أغادر الموقع
13:10
يحدث شيء يؤدي إلى إرسال إشعار.
يتحقق الكود مما إذا كنت متصلاً بالإنترنت قبل أقل من 10 دقائق.
كنت كذلك، لذا سيتم إرسال الإشعار في 13:20.

12:59
أغادر الموقع
13:10
يحدث شيء يؤدي إلى إرسال إشعار.
يتحقق الكود مما إذا كنت متصلاً بالإنترنت قبل أقل من 10 دقائق.
لم أكن كذلك، لذا سيتم إرسال الإشعار فورًا، في 13:10.

لذلك، يمكن أن يؤدي اختلاف دقيقة واحدة في وقت الاتصال بالإنترنت إلى تغيير تسليم الإشعار بما يقرب من push_notification_time_window_mins. خاصة إذا تم تغيير الإعداد إلى قيمة أعلى، فقد يحدث فرقًا كبيرًا.

أتوقع أن يكون التأخير push_notification_time_window_mins - (الآن - شوهد منذ)

8 إعجابات

هذا يجب أن يصلح الأمر

9 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد 3 أيام. لم يعد يُسمح بالردود الجديدة.