XF 2.1 Push notifications

Welcome to the first of our "Have you seen...?" series for XenForo 2.1. We've got a lot to show you over the course of the next few weeks so you may well be hearing from us quite frequently... To ensure you're kept up to date, we strongly recommend clicking the "Watch forum" link here and enabling email notifications if you haven't done so already 🙂

But first...

The first thing that we should announce before we get started is something which we have talked about over the last year which is related to the minimum server requirements of XenForo 2.1. XenForo 2.0 currently requires a minimum of PHP 5.4, but with XenForo 2.1 we are increasing this to a minimum of PHP 5.6. Now, PHP 5.6 is still pretty old by today's standards, so you may be interested to understand why we have settled on that as our new minimum PHP version.

The answer is fairly simple, in that we are essentially trying to strike a balance between the features in PHP that we need to use, the requirements of third-party packages that we include with XenForo, and ultimately the common PHP versions that customers are using on their servers. Since XF 2.0.2 we have been keeping track of this, and these are the current results:

1539019830210.webp

To the one customer who is running PHP 7.3 Alpha I sincerely hope you are doing so in a test environment 😉
As you can see, it seems like a fairly safe bet for us to consider leaving behind PHP 5.4 and PHP 5.5 as that amounts to only 6.5% of the total customer base. One could argue that PHP 7.0 would be an ok target too as the total PHP 7.x usage is at 55.3% but leaving behind a total of 44.7% of the total customer base seems unreasonable at this point. We'd strongly recommend everyone consider upgrading to PHP 7.2 as soon as possible.

That all said, we have mentioned previously that there is one feature which will require a minimum version of PHP 7.1 to use...

Push it real good...

To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.
Sorry, I couldn't help myself! 🙂

That's right, we're kicking off our XF 2.1 series of HYS threads by announcing that our most popular suggestion is implemented! Let's first look at how to set it up.

1539022286792.webp

If the above browser/device requirements are frustrating then please direct your complaints to @WebKit on Twitter!

So, yes, first and foremost, you will need PHP 7.1 to enable this functionality. This enabled us to implement the functionality in a way that is compatible with as many browsers as possible, including Microsoft Edge on Android and Windows.

In addition to this, your site must be running over HTTPS with a valid SSL certificate, and you must have support for the GMP extension.

Unfortunately for reasons beyond our control (read: it's Apple's fault) the list of supported devices/browsers notably exclude Safari on macOS and any iOS-based browser. This functionality is made possible by making use of a number of APIs including the Push API and Notification API which most browsers support already.

On supported devices, the process looks something like this:

21push1.gif

You can also see that, just like alerts, we have provided a mechanism for you to be able to opt out of receiving certain push notifications. You may want to get forum alerts for everything, but only be notified by your browser for the things you find important.

The content of a push notification will be a slightly stripped down version of the default alert template. A brief note for developers; although there is code which will automatically convert HTML to a text-only version of the notification, the preferred method would be to create specific push template for each content type and action, and these will look similar to this:
HTML:
{{ phrase('x_quoted_your_post_in_thread_y', {
   'name': $user.username ?: $alert.username,
   'title': prefix('thread', $content.Thread, 'plain') . $content.Thread.title
}) }}
<push:url>{{ link('canonical:posts', $content) }}</push:url>

As you would expect with push notifications, you do not necessarily need to be viewing the forum when the notification is received, nor does the browser even need to be active, as demonstrated here:

21push2.gif

Naturally, clicking on the notification will take you straight to the content.


Alert read marking

Going straight to the content from wherever you are on your device is certainly convenient, but given that push notifications essentially represent forum alerts, it would be somewhat inconvenient to have to mark those as read too.

Therefore when you now visit content which you have previously been alerted to, the corresponding alert(s) will now be automatically marked as read.


"But I have an Apple device, will you support push notifications another way...?"

Unfortunately, this is unlikely. Although Apple devices represent a significant number of mobile users, the current approach other browser vendors are taking is standardised (meaning Apple devices could be nearly automatically supported in the future), free and seamlessly integrated with your browser. Any other approach, be that a separate app, or a third party service would, frankly, be a sub-par (and potentially expensive!) experience.

The overall solution is simple, but it is down to Apple/WebKit to take on board and implement. According to the WebKit Feature Status page, if there are any features missing you can reach out to @webkit on Twitter or contact the webkit-help mailing list. Consider doing that today to help them understand why push notifications are important for your forum 🙂


And, sadly, that brings the first HYS for XF 2.1 to an end! But don't worry - as mentioned earlier we have lots more to get through 🙂 And we may well see you for that fairly soon 😉
 
Last edited:
{checks my current server settings....}

Has it been confirmed that GMP 6.0 is good enough or should we be looking at getting the version updated? :unsure:
 
Definitely look forward to the notifications "officially" now. I did use Pushover for some notices on a couple of forums, but cost prohibited me from offering it to anyone but staff. I still use it for server alerts from monit so it's not a total loss.
Project Treble to the rescue. Treble is mandatory for official certified Androids and was introduced with Oreo. And Oreo already has a significant market share. :whistle: Really hope that will push an end to the fragmentation argument.
Or do what I do--just get a Pixel and be done with it. I never want latest/greatest/most powerful/most-likely-to-make-me-into-a-hipster phone out there. Haven't bought anything but Nexus or Pixel phones in the past several years--luckily the Pixels are fine quality, although they have the pricetag to match. I have fundamental issues with the "other company named for a fruit" that I refuse to ever touch their products...
 
Push notifications is the power of 2018:cool: really love it! It keep you always confirmed.
 
I asked my forum members about this. Generally it seems they value notifications from the dentist an hour before an appointment etc, but for everything else the computer should be quiet and know its place.

So I suggest we have push notifications that tell members that in about an hour there will be a very important and useful post on the forum.

Would that be possible?
 
Last edited:
I asked my forum members about this. Generally it seems they value notifications from the dentist an hour before an appointment etc, but for everything else the computer should be quiet and know its place.

So I suggest we have push notifications that tell members that in about an hour there will be a very important and useful post on the forum.

Would that be possible?
We'll get right on it!
 
XenForo 2.1 we are increasing this to a minimum of PHP 5.6. Now, PHP 5.6 is still pretty old by today's standards, so you may be interested to understand why we have settled on that as our new minimum PHP version.

The issue here, if not already said, is that PHP 5.6 stops getting any updates after December of this year.

Sure a precentage of your customers still use it, but I think if you really cared about them you'd raise that PHP requirement thats SUPPORTED and educate why a newer version is needed instead.

To those of you forum admins running 5.6 you really need to make plans in upgrading dinner rather than later.
 
The issue here, if not already said, is that PHP 5.6 stops getting any updates after December of this year.

Sure a precentage of your customers still use it, but I think if you really cared about them you'd raise that PHP requirement thats SUPPORTED and educate why a newer version is needed instead.

To those of you forum admins running 5.6 you really need to make plans in upgrading dinner rather than later.
People have a wide variety of reasons for sticking with older PHP versions, be that technical expertise, restrictions in their hosting environment or other software that might not be quite so up to date. All we can do is educate them and provide incentives for doing so.

Regardless of what other customers do, it doesn’t ever stop you from using a much newer version of PHP and it won’t ever stop us from making sure our software supports the latest and greatest.

It’s quite offensive to imply that we don’t care about our customers, to be honest 😉 In fact, that’s obviously a good reason not to alienate 40% of them before it’s necessary 🙂
 
It's great to see this in motion. There are three blind spots in the implementation, IMO. My feedback, based on experience:
  1. There's an underestimated high chance of being overwhelmed by support requests from putting the bulk of the logic client-side in the add-on
  2. No iOS is a big mistake, the number of devices that you'll miss out of is massive; go native Safari Push on desktop, Facebook Messenger for iOS and all other OSes that don't have native push (so even IE8 can opt-in). It's unconventional but it works and works well.
  3. If your intention, by not allowing usergroup-level control, is to have the feature not only accessible to the highest number of members, but actually used (the whole point), a modal prompt after logging in is the only viable way I've found.

    I started with something similar to what you are trying (toggle push notifications), and the result was disastrous. Almost nobody turned it on (<1% of active users), and the value these forums got out of the push system was virtually nil.

    The switch was then made to prompts. After mistakes in the implementation were corrected, it was really cool to watch the number of people register for notifications skyrocket, and activity on forums increase in real time.
 
Last edited:
Yes, modal prompt works great. I have 16K PUSH subscribers in OneSignal which is growing with 1K per month. That would never happen with a setting that needs to be searched & found for somewhere deep in account settings. Users need to be asked. Else they will never consider it. I'd have 500 PUSH subscribers without a modal prompt.
 
Last edited:
There's an underestimated high chance of being overwhelmed by support requests from putting the bulk of the logic client-side
There’s really not a way around that. The APIs involved are all client side.

No iOS is a big mistake, the number of devices that you'll miss out of is massive; go native Safari Push on desktop, Facebook Messenger for iOS and all other OSes that don't have native push (so even IE8 can opt-in). It's unconventional but it works and works well.
Not our mistake. I’m comfortable with essentially boycotting Apple/WebKit until they see sense and implement functionality that even Microsoft has. Frankly if browser vendors aren’t implementing this functionality (or users aren’t using software recent enough to support it) then that’s their loss.
 
Just adding my 2 cents...

As much as I *love* seeing push coming as a stock feature I would also like to see some type of modal prompt for turning them on (assuming you guys weren't already planning for it). If they'll only be available by going into the user control panel and turning them on in there then I can almost guarantee that on my site that I'll end up being the only person who'd be using them.

Ideally it'd also be tied in so a reward is given for opting in so being able to assign a trophy would be nice. 🏆

At least for me it'd also be nice if opting in was a user criteria so that targeted announcements could be done. 📢
 
There’s really not a way around that. The APIs involved are all client side.
I am referring to the add-on, not the push API JS when I say "client-side" (bad choice of words, it was confusing in hindsight). If the back-end push logic is managed by XF's cloud/endpoint, it would be plug and play; customers don't have to worry about:
  • What PHP version they have and extensions above the minimum XF requirements
  • Provisioning a Firebase/Google Cloud account for compatibility with older versions of Android's push implementation
  • Having to update their XenForo install if Google or Apple make a change (security or otherwise) to their backend
In terms of extended coverage where the Push API isn't available, it would also avert the need for customers to:
  • Buy an Apple Developer Account, provision the certificate, and adjust to meet the requirements for browser validation
  • Create a Facebook App and pass the review process for permissions needed to use it as a push medium
In the later versions of the add-on I used to develop, putting back-end push logic on the API allowed it to run on even ancient vB 3.x forums.
I’m comfortable with essentially boycotting Apple/WebKit until they see sense and implement functionality that even Microsoft has. Frankly if browser vendors aren’t implementing this functionality (or users aren’t using software recent enough to support it) then that’s their loss.
I don't disagree on the principle of resisting Apple, being behind the curve for what are likely to be purely self-serving financial reasons. I do disagree with customers paying for Apple's mistakes. But that's a matter of opinion and I'll leave it at that.

I do think the iOS and MacOS device share in the western world, particularly in the forum space, is underestimated though.
 
Last edited:
What PHP version they have and extensions above the minimum XF requirements
It’s a semi valid concern and solution, but let’s be honest. People should be using modern PHP anyway. 7.1 is two years old, so it shouldn’t be a big stretch. Now they have another reason to upgrade.

Provisioning a Firebase/Google Cloud account for compatibility with older versions of Android's push implementation
No such thing is required because customers don’t need tomprovision a Firebase account to use this feature. That’s managed entirely by the browser vendor. I can only test it back to Android 4 but either way, as long as their device runs newer Chrome versions then it’s a moot point.

Having to update their XenForo install if Google or Apple make a change (security or otherwise) to their backend
Again, it would be a browser update that would be required to solve most anticipated issues. We rely on a third party library and that may have its own issues but then they can be addressed with XF updates if needed.
 
Top Bottom