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:
A board I am on that just switched to Xenforo used that alert function the other day. Caught me off guard because it's not something we've ever done on my board (does it even exist in 1.5?). A perfect use for push.
 
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.
While now it's possible to do this... how to do another cool thing?
How about set as read notifications in the dropdown menu only if the content is read like Facebook do?

Example:
  • I have 2 new notifications and I can see the #2 "balloon" above the notifications bell.
  • I click on the bell and the #2 is gone (it's ok), I see the 2 notifications with the "darker" background (unread).
  • I would like that the background became white only if I read the notification's linked content.
  • Plus a link with set as read al the notifications.

Do I need to do a separate suggestion?
 
How about set as read notifications in the dropdown menu only if the content is read like Facebook do?
Problem: Not every alert is tied to a specific type of content that can be read such as a post. What if you want to keep alerts from posts unread until you read the post, but get rid of all the alerts about people liking your posts?

You can't mark them all as read, as that gets rid of the post too. Do I need to click through all of them? 🤔

I'm not saying it's a bad idea, just bringing something up you might want to have a think about before posting the suggestion so that your idea is even more watertight :)


Fillip
 
I can't get notifications working on my test forum. It is passworded by htaccess, perhaps that is the issue? I can enable them and get the notification to say it is enabled though.
 
I don't think that's necessarily the cause as we did some element of testing behind a passworded site and it worked fine.

You might need to keep an eye on your browser console to see if there are any clues in there as to why it might be failing.
 
What if you want to keep alerts from posts unread until you read the post, but get rid of all the alerts about people liking your posts?

You can't mark them all as read, as that gets rid of the post too. Do I need to click through all of them? 🤔
Like alerts (and the other “not content alerts) will be set as read after some seconds after the alert dropdown menu was open. And maybe at a specific threashold grouped in single alerts. Example: “Mark and other 4 users liked/reacted to your post etc... etc...”

Thank you @Chris D I’m going to better scan suggestions’ node.
 
Push notification text is black now in Android. Is it possible to change that? Sorry if this question is already answered. Did not find it :)
 

Attachments

  • Screenshot_2018-11-23-17-16-04.webp
    Screenshot_2018-11-23-17-16-04.webp
    23 KB · Views: 96
We don’t have any control over the styling of the notifications so this looks like a bug with your device.
 
Out of curiosity, sorry if I missed it.

Can there be a sql command to enable for all users push notifications? As far as I remember, each devide must give explicitly their consent to enable push notifications.

Can we go around that somehow?
 
No. Push notifications require a service worker to be installed on the users browser which is only possible if the user has consented.

It would open pandora's box for massive abuse if this was possible without the user explicitly consenting.
 
Hmm, I doubt that. It is the same as e-mails or alerts. Right now we can enforce e-mails and alerts for each user account when they register. Of course they can unsubscribe these.
It would be the same, no? (Except for the technical difficulties in doing so)?

As long as they can unsubscribe from push notifications, why should that be a terrible idea when Push is enabled by default? (Playing devil's advocate).
 
It's a moot point because it's not a case of being technically difficult, it's technically impossible for the reasons mentioned above.

But, of course, legally speaking, you're not supposed to send people emails anymore unless they've explicitly consented so it would be a case of just because you can, doesn't mean you should.
 
Except for the technical difficulties in doing so?
Legal aspects aside:
There are no "technical difficulties" - it is technically impossible to achive that (unless there are serious bugs in browser security, in which case it might be possible to bypass security checks somehow by using expoits, but that would be really blackhat and limited to vulnerable browsers).
 
Yes, but now with GDPR all consent is asked before hand anyway. I mean people are now consenting for cookies, we could extend it to cookies and push notifications. So when they register, we would have their consent, just like with cookies.

But it is technically not possible as it seems, so all good.

I was just trying to come up with hypothetical copyright infringement cases. I was inspired by this thead. So I wanted to ask here if we could go around that permission for push notifications.

Thank you.
 
I have another question from my user on the push function. I'm not sure if it was mentioned before. This user has enabled push on 2 devices.
One thing that can be improved push is that when you logon to another device, all push messages that are missed start popping up, even if already viewed on another device
 
Top Bottom