pages-server
tcp/443
Open service 2a0a:4580:103f:c0de::2:80 · s1m.fr
2026-01-22 05:55
HTTP/1.1 302 Found content-length: 0 location: https://s1m.fr/ cache-control: no-cache connection: close
Open service 217.197.84.141:443 · s1m.fr
2026-01-22 05:55
HTTP/1.1 200 OK
Allow: GET, HEAD, OPTIONS
Cache-Control: public, max-age=600
Content-Length: 32968
Content-Type: text/html; charset=utf-8
Etag: "0cc77555c358ce272f93060a1a2f7478aa3e5cfd"
Last-Modified: Wed, 31 Dec 2025 17:12:42 GMT
Referrer-Policy: strict-origin-when-cross-origin
Server: pages-server
X-Pages-Cache: true
Date: Thu, 22 Jan 2026 05:55:56 GMT
Connection: close
Page title: S1m
<!DOCTYPE html>
<html lang="en">
<head>
<title>S1m</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://s1m.fr/style.css">
<link rel="stylesheet" href="https://s1m.fr/color/orange-auto.css">
<link rel="stylesheet" href="https://s1m.fr/color/background_auto.css">
<link rel="stylesheet" href="https://s1m.fr/font-hack-subset.css">
<meta name="description" content="">
<meta property="og:description" content="">
<meta property="og:title" content="S1m">
<meta property="og:type" content="website">
<meta property="og:url" content="https://s1m.fr/">
<meta name="fediverse:creator" content="@S1m@infosec.exchange">
<link rel="alternate" type="application/atom+xml" title="S1m Atom Feed" href="https://s1m.fr/atom.xml" />
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://s1m.fr" style="text-decoration: none;">
<div class="logo">
S1m
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://s1m.fr">blog</a></li>
<li><a href="https://s1m.fr/tags">tags</a></li>
<li><a href="https://s1m.fr/archive">archives</a></li>
<li><a href="https://s1m.fr/atom.xml">atom feed</a></li>
<li><a href="https://infosec.exchange/@S1m" target="_blank" rel="me noopener noreferrer">mastodon</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://s1m.fr/unifiedpush-5-years/">5 years of UnifiedPush</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2025-12-31
</span>
</div>
<span class="post-tags-inline">
:: tags:
<a class="post-tag" href="https://s1m.fr/tags/android/">#android</a>
<a class="post-tag" href="https://s1m.fr/tags/unifiedpush/">#unifiedpush</a></span>
<div class="post-content">
<p><strong>It has already been 5 years since UnifiedPush started!</strong> It also means I don't have any Play Services, the official or microG reimplementation, for 5 years now. It is a good moment to do a recap, and think about what can be UnifiedPush in 5 years.</p>
<p>It turns out I don't remember in details how all started, I need to read some historical pull requests and chats.</p>
<h1 id="why-do-i-need-push-notifications">Why do I need push notifications?</h1>
<p>I think I've installed my first alternative ROM, <a href="https://lineageos.org/">LineageOS</a>, around 2013, and never went back to stock ROMs since then. At this time, I didn't really care about the apps I was installing, it was mainly to take control of my devices and get rid of the bloatwares.</p>
<p>I understood that I needed the Play Services, or a reimplementation, for some applications to properly work, and I was vaguely knowing why. So, every time I updated my phone, I had to boot into the custom recovery (TWRP), to flash a zip, to get microG. It was, well .. not the best user experience.</p>
<p>Then, I tried to stay without the Play Services, it was even worse, messages weren't reliable, the battery drained and there were many <em>foreground notifications</em>, which I understood were required to keep a service running.</p>
<p>So I decid
Open service 217.197.84.141:80 · s1m.fr
2026-01-22 05:55
HTTP/1.1 302 Found content-length: 0 location: https://s1m.fr/ cache-control: no-cache connection: close
Open service 2a0a:4580:103f:c0de::2:443 · s1m.fr
2026-01-22 05:55
HTTP/1.1 200 OK
Allow: GET, HEAD, OPTIONS
Cache-Control: public, max-age=600
Content-Length: 32968
Content-Type: text/html; charset=utf-8
Etag: "0cc77555c358ce272f93060a1a2f7478aa3e5cfd"
Last-Modified: Wed, 31 Dec 2025 17:12:42 GMT
Referrer-Policy: strict-origin-when-cross-origin
Server: pages-server
X-Pages-Cache: true
Date: Thu, 22 Jan 2026 05:55:55 GMT
Connection: close
Page title: S1m
<!DOCTYPE html>
<html lang="en">
<head>
<title>S1m</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://s1m.fr/style.css">
<link rel="stylesheet" href="https://s1m.fr/color/orange-auto.css">
<link rel="stylesheet" href="https://s1m.fr/color/background_auto.css">
<link rel="stylesheet" href="https://s1m.fr/font-hack-subset.css">
<meta name="description" content="">
<meta property="og:description" content="">
<meta property="og:title" content="S1m">
<meta property="og:type" content="website">
<meta property="og:url" content="https://s1m.fr/">
<meta name="fediverse:creator" content="@S1m@infosec.exchange">
<link rel="alternate" type="application/atom+xml" title="S1m Atom Feed" href="https://s1m.fr/atom.xml" />
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://s1m.fr" style="text-decoration: none;">
<div class="logo">
S1m
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://s1m.fr">blog</a></li>
<li><a href="https://s1m.fr/tags">tags</a></li>
<li><a href="https://s1m.fr/archive">archives</a></li>
<li><a href="https://s1m.fr/atom.xml">atom feed</a></li>
<li><a href="https://infosec.exchange/@S1m" target="_blank" rel="me noopener noreferrer">mastodon</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://s1m.fr/unifiedpush-5-years/">5 years of UnifiedPush</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2025-12-31
</span>
</div>
<span class="post-tags-inline">
:: tags:
<a class="post-tag" href="https://s1m.fr/tags/android/">#android</a>
<a class="post-tag" href="https://s1m.fr/tags/unifiedpush/">#unifiedpush</a></span>
<div class="post-content">
<p><strong>It has already been 5 years since UnifiedPush started!</strong> It also means I don't have any Play Services, the official or microG reimplementation, for 5 years now. It is a good moment to do a recap, and think about what can be UnifiedPush in 5 years.</p>
<p>It turns out I don't remember in details how all started, I need to read some historical pull requests and chats.</p>
<h1 id="why-do-i-need-push-notifications">Why do I need push notifications?</h1>
<p>I think I've installed my first alternative ROM, <a href="https://lineageos.org/">LineageOS</a>, around 2013, and never went back to stock ROMs since then. At this time, I didn't really care about the apps I was installing, it was mainly to take control of my devices and get rid of the bloatwares.</p>
<p>I understood that I needed the Play Services, or a reimplementation, for some applications to properly work, and I was vaguely knowing why. So, every time I updated my phone, I had to boot into the custom recovery (TWRP), to flash a zip, to get microG. It was, well .. not the best user experience.</p>
<p>Then, I tried to stay without the Play Services, it was even worse, messages weren't reliable, the battery drained and there were many <em>foreground notifications</em>, which I understood were required to keep a service running.</p>
<p>So I decid