<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Everyone,<br>
<br>
we need some auditing & beta test help on this.<br>
<br>
I've just finished the migration for the server & App side.
Everything works fine in my test environment, but I had WTF moments
on the way. Some magically resolved themselves on the next day, so I
have no idea why they occured in the first place.<br>
<br>
New server code is in Server/fcm, see README for details:
<a class="moz-txt-link-freetext" href="https://github.com/openvehicles/Open-Vehicle-Server/tree/fcm/v3">https://github.com/openvehicles/Open-Vehicle-Server/tree/fcm/v3</a><br>
<br>
The server now uses a child process for FCM communication, as each
delivery attempt now takes 0.3 seconds. The new code also now
automatically cleans up expired App tokens.<br>
<br>
New App code & build is in Android/master:
<a class="moz-txt-link-freetext" href="https://github.com/openvehicles/Open-Vehicle-Android/tree/master/latest">https://github.com/openvehicles/Open-Vehicle-Android/tree/master/latest</a><br>
<br>
The App currently uses my API IDs (File "google-services.json")
instead of the official OpenVehicles version, this needs to be
changed for the release. It should nevertheless work with
api.openvehicles.com, but I haven't tested that yet.<br>
<br>
FCM makes it harder to configure an App for other servers than build
into the App. I've done some experimentation and found a way to
still keep the configuration as simple as before, i.e. you just need
the custom FCM sender ID (which now always is the FCM/cloud project
ID). Caveat is, this uses undocumented behaviour, so may need to be
changed in the future.<br>
<br>
See my comment & explanation here: <br>
<a class="moz-txt-link-freetext" href="https://github.com/openvehicles/Open-Vehicle-Android/blob/master/OpenVehicleApp/src/main/java/com/openvehicles/OVMS/ui/MainActivity.java#L404">https://github.com/openvehicles/Open-Vehicle-Android/blob/master/OpenVehicleApp/src/main/java/com/openvehicles/OVMS/ui/MainActivity.java#L404</a><br>
<br>
Code audits & tests are welcome.<br>
<br>
When running your own server, follow the steps described in the
README to get & install your FCM key. FCM keys btw. don't expire
until the year 10000. Connect your module & App to your server,
use "notify raise" to send test messages.<br>
<br>
Btw, FCM migration doesn't need to be done in a specific order
(server/App): this is just an API change on both sides, the
infrastructure behind the scenes is more or less identical. An FCM
App receives GCM transmissions and vice versa. Please test that as
well if possible.<br>
<br>
We need to finish migration before June 20, as the GCM APIs will
then be switched off.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
<div class="moz-cite-prefix">Am 29.06.23 um 06:17 schrieb Mark
Webb-Johnson:<br>
</div>
<blockquote type="cite"
cite="mid:D9CB214B-7730-465D-9312-CDC90D5AAE54@webb-johnson.net">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
Oh, google. They do love to deprecate…
<div><br>
</div>
<div>I can handle the server side. But not sure what needs to be
done there. Presumably this like the C2DM -> GCM migration we
did a while ago (using a new agreed token type
apns/c2dm/gcm/etc, if the new approache is not backwards
compatible). The current server seems to call:</div>
<div><br>
</div>
<blockquote
style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div><a href="https://fcm.googleapis.com/fcm/send"
moz-do-not-send="true" class="moz-txt-link-freetext">https://fcm.googleapis.com/fcm/send</a><br>
</div>
</blockquote>
<div>
<div><br>
</div>
<div>Regards, Mark.</div>
<div><br>
<blockquote type="cite">
<div>On 21 Jun 2023, at 7:25 PM, Michael Balzer
<a class="moz-txt-link-rfc2396E" href="mailto:dexter@expeedo.de"><dexter@expeedo.de></a> wrote:</div>
<br class="Apple-interchange-newline">
<div>
<meta charset="UTF-8">
<div class="content-isolator__container"
style="caret-color: rgb(0, 0, 0); font-family: "Google Sans", Roboto, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(245, 245, 245); text-decoration: none;">
<div class="protected-part">
<div class="protected-title">Signed PGP part</div>
<div class="protected-content">Time for another Google
API deprecation.<br>
<br>
It seems we'll need to update the Android App &
possibly the server now to the FCM API for push
notifications, the old GCM API will stop working in
June 2024.<br>
<br>
Anyone volunteering to take care of this?<br>
<br>
Regards,<br>
Michael<br>
<br>
<div class="moz-forward-container"><br>
-------- Weitergeleitete Nachricht --------
<table class="moz-email-headers-table"
style="border-collapse: collapse;"
cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr style="border-collapse: collapse;">
<th valign="BASELINE" nowrap="nowrap"
align="RIGHT">Betreff:</th>
<td
style="border-collapse: collapse; text-decoration: none !important;">[Action
Required] Update your apps to the latest
Firebase Cloud Messaging APIs and SDKs</td>
</tr>
<tr style="border-collapse: collapse;">
<th valign="BASELINE" nowrap="nowrap"
align="RIGHT">Datum:<span
class="Apple-converted-space"> </span></th>
<td
style="border-collapse: collapse; text-decoration: none !important;">Tue,
20 Jun 2023 13:26:22 -0700</td>
</tr>
<tr style="border-collapse: collapse;">
<th valign="BASELINE" nowrap="nowrap"
align="RIGHT">Von:<span
class="Apple-converted-space"> </span></th>
<td
style="border-collapse: collapse; text-decoration: none !important;">Firebase<span
class="Apple-converted-space"> </span><a
class="moz-txt-link-rfc2396E"
href="mailto:firebase-noreply@google.com"
style="color: rgb(66, 133, 244); text-decoration: none;"
moz-do-not-send="true"><firebase-noreply@google.com></a></td>
</tr>
<tr style="border-collapse: collapse;">
<th valign="BASELINE" nowrap="nowrap"
align="RIGHT">Antwort an:<span
class="Apple-converted-space"> </span></th>
<td
style="border-collapse: collapse; text-decoration: none !important;">Firebase<span
class="Apple-converted-space"> </span><a
class="moz-txt-link-rfc2396E"
href="mailto:firebase-noreply@google.com"
style="color: rgb(66, 133, 244); text-decoration: none;"
moz-do-not-send="true"><firebase-noreply@google.com></a></td>
</tr>
<tr style="border-collapse: collapse;">
<th valign="BASELINE" nowrap="nowrap"
align="RIGHT">An:<span
class="Apple-converted-space"> </span></th>
<td
style="border-collapse: collapse; text-decoration: none !important;"><a
class="moz-txt-link-abbreviated moz-txt-link-freetext"
href="mailto:dexter@expeedo.de"
style="color: rgb(66, 133, 244); text-decoration: none;"
moz-do-not-send="true">dexter@expeedo.de</a></td>
</tr>
</tbody>
</table>
<br>
<br>
<div class="main" style="padding: 10px 0px;">
<table class="table-main table-main-gmail"
style="border-collapse: collapse; border: 1px solid rgb(222, 222, 222); border-spacing: 0px; width: 600px; max-width: 600px; background-color: rgb(255, 255, 255);"
align="center">
<tbody class="main">
<tr style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important;">
<table role="presentation"
class="logo-table"
style="border-collapse: collapse; width: 596px;">
<tbody>
<tr
style="border-collapse: collapse;">
<td class="logo"
style="border-collapse: collapse; text-decoration: none !important; vertical-align: top; padding: 23px 0px;"
align="center"><a
target="_blank"
href="https://notifications.google.com/g/p/ACUgQrEqj5I8-oiq75nsyLmVgMI_2P_O30pr9ZcpVmk-O8L3G7S5GLuDAQBGbLzVLag80DcGOGlPohe0LlxV3Am7cZNv3WRo1rwY30WWKavJb9NJTk1FmXuKrvFZt8XgZ17HnYFO11bDbl7kSR_82CXEwuwTZU4-udfbmAeK7zzJ3qZft1R_jSAmBvOt677OdR1wfx-Q"
moz-do-not-send="true"
style="color: rgb(66, 133, 244); text-decoration: none;"><img
alt="Firebase
Console"
src="https://services.google.com/fh/files/emails/firebase_logo_update.png"
title="Firebase"
moz-do-not-send="true"
style="height: 40px; vertical-align: middle;"></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr style="border-collapse: collapse;">
<td class="content"
style="border-collapse: collapse; text-decoration: none !important; vertical-align: top; padding: 30px 25px; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(224, 224, 224); font-weight: 400; font-size: 14px; line-height: 22px; color: rgb(69, 90, 100);">
<div class="hello"
style="color: rgb(38, 50, 56); font-weight: 700; font-size: 20px; font-family: "Google Sans", Roboto, sans-serif; line-height: 26px; padding: 0px;"><a
rel="nofollow"
moz-do-not-send="true"
style="color: rgb(69, 90, 100); text-decoration: none;">Hi Michael</a>,</div>
<p>We’re writing to let you know that
starting<span
class="Apple-converted-space"> </span><strong
style="font-weight: bold !important;">June 20, 2024</strong><span
class="Apple-converted-space"> </span>the
legacy Firebase Cloud Messaging (FCM)
APIs will be discontinued.</p>
<div class="emphasis"
style="padding: 15px 0px 0px; color: rgb(38, 50, 56); font-family: "Google Sans", Roboto, sans-serif; font-size: 16px;">What
do you need to know?<span
class="Apple-converted-space"> </span></div>
<p>On<span class="Apple-converted-space"> </span><strong
style="font-weight: bold !important;">June 20, 2024,</strong><span
class="Apple-converted-space"> </span>we’re
reducing the number of Firebase Cloud
Messaging (FCM) legacy register APIs
and legacy send APIs that provide
similar functionality. This step will
allow us to provide you with a more
consistent experience and align with
Google security standards to improve
security, reliability and performance.</p>
<p>Because of these API decommissions,
some already-deprecated SDKs and
features will stop working after<span
class="Apple-converted-space"> </span><strong
style="font-weight: bold !important;">June 20, 2024.</strong></p>
<p>Please consult the tables below to
find which Firebase Cloud Messaging
(FCM) APIs and corresponding
services/SDKs/features will be
discontinued and replaced with new
alternatives.</p>
<div>
<table
style="border-collapse: collapse;"
width="100%" cellpadding="5"
align="center">
<tbody>
<tr
style="border-collapse: collapse; border-style: solid; border-color: rgb(2, 119, 182); background-color: rgb(2, 119, 182); color: rgb(255, 255, 255); text-align: left;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Discontinued Send API</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Decommissioned service</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">New alternative</strong></p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Legacy HTTP Protocol</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Sending messages via the
Legacy HTTP API.</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Send messages via the HTTP
v1 API.</p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">XMPP Protocol</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Sending upstream and
downstream messages via the
XMPP API.</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Send downstream messages
via the HTTP v1 API.</p>
<p><span>Send upstream
messages via HTTP/<a
target="_blank"
href="https://notifications.google.com/g/p/ACUgQrFKp0BdXKuz3_mUi3W9wdl6DV3Ib_q0Hn9_rFkVCttPt1pfUS9zAavG0IHLz8EEex1Xah-SSAfcgb2zSplnVRd5kYFwn3MN31jskkUBf1w_RdTqd1tuSW3w6CKsMVdUC9bJHCVT9qvQXy4G6_8J5J-aT-4UFsRnmM4ASLagXT9eO188Q1gAxo7IH3vsHg-U55h8rnJ9zzRdh-DNTbMvJhXav_T7Bw"
moz-do-not-send="true"
style="color: rgb(2, 119, 182); text-decoration: none; font-family: "Google Sans", Roboto, sans-serif;">gRPC</a><span
class="Apple-converted-space"> </span>directly from the App to your
server.</span></p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Batch send API</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Including multiple send
requests in a single HTTP
request to FCM known as
Batch Send.</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Send messages via the HTTP
v1 API, which has been
optimized for fanout
performance</p>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<div>
<table
style="border-collapse: collapse;"
width="100%" cellpadding="5"
align="center">
<tbody>
<tr
style="border-collapse: collapse; border-style: solid; border-color: rgb(2, 119, 182); background-color: rgb(2, 119, 182); color: rgb(255, 255, 255); text-align: left;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Discontinued Register API</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Decommissioned SDK</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">New alternative</strong></p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">GCM register API</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Google Cloud Messaging(GCM)
SDKs (deprecated in 2018).</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Latest FCM Android SDK.</p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Legacy Web register API</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>FCM JS SDK version<7.0.0
(deprecated in 2019)</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Latest FCM JS SDK.</p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Instance ID Server API for Web</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>No SDK related to this API.</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Latest FCM JS SDK.</p>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<div>
<table
style="border-collapse: collapse;"
width="100%" cellpadding="5"
align="center">
<tbody>
<tr
style="border-collapse: collapse; border-style: solid; border-color: rgb(2, 119, 182); background-color: rgb(2, 119, 182); color: rgb(255, 255, 255); text-align: left;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Discontinued Feature</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Decommissioned service</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">New alternative</strong></p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Server keys</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Authenticating requests
with server keys.</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><span>Authenticate requests
with<span
class="Apple-converted-space"> </span><a target="_blank"
href="https://notifications.google.com/g/p/ACUgQrE8LxWKrfZvL3R5hoSruQL4An9Vg5kFcDYASULp7A5SyUubGdXnXerewny9Rr8OJNp2fTgybuON0zkL4u2XSRmhn29NBmTFNdbm9q-OXyYQVSFt_ax2KxIYXCYbGR1bTLMqPLoLzMpdTgcuyd6wKJCIJj7ToMCrVJzWqOxbg6QUof0_-BUGyGhtnimrCtd-gb5en_iFRjq5OwpVDzqJex2vhuqgrVoeBvAkg344MePoYgqRrkoO113zUXz9flSPIyevZT6KZ4E"
moz-do-not-send="true"
style="color: rgb(2, 119, 182); text-decoration: none; font-family: "Google Sans", Roboto, sans-serif;">access
tokens generated from
authorized service
accounts</a></span></p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">iOS Direct Channel</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Sending messages via FCM’s
direct channel to iOS
devices while they are
running in the foreground.</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>All iOS messages will be
sent via APNS channel.</p>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<div class="emphasis"
style="padding: 15px 0px 0px; color: rgb(38, 50, 56); font-family: "Google Sans", Roboto, sans-serif; font-size: 16px;">What
do you need to do?<span
class="Apple-converted-space"> </span></div>
<p>Take the following actions before<span
class="Apple-converted-space"> </span><strong
style="font-weight: bold !important;">June 20, 2024</strong>, to ensure
that you have access to the latest
supported features and to reduce the
risk of future decommissions affecting
your usage:</p>
<ul>
<li><strong
style="font-weight: bold !important;">Follow the instructions described
in<span
class="Apple-converted-space"> </span></strong><a
target="_blank"
href="https://notifications.google.com/g/p/ACUgQrF1q42xLDBDWvEr5RHaOfbnfKhv0UdWXB6Vy1kLOjasVBtYD0Wjp4aQJlSaeYnw695zGgel_4mXfwd5JHyH3hmINX1yjPPMSUIxlWcV8-8Af9jmWTRzELbajU3hoHr3k5e8X4QnZaoBBqlKW9ZwgPvaX0SEG_Q761kFR-vQisPxahLO6tzNfIkO3wdWa9b6XDKynfH7tcuSSS5YX3B-wdvH6XeRsMo-Tw"
moz-do-not-send="true"
style="color: rgb(2, 119, 182); text-decoration: none; font-family: "Google Sans", Roboto, sans-serif;">Firebase
FAQ</a><span
class="Apple-converted-space"> </span>to
migrate your individual APIs.</li>
<li><strong
style="font-weight: bold !important;">Update to the latest versions of
Firebase SDKs</strong>.</li>
</ul>
<div>
<table
style="border-collapse: collapse;"
width="100%" cellpadding="5"
align="center">
<tbody>
<tr
style="border-collapse: collapse; border-style: solid; border-color: rgb(2, 119, 182); background-color: rgb(2, 119, 182); color: rgb(255, 255, 255); text-align: left;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Platform</strong></p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p><strong
style="font-weight: bold !important;">Recommended FCM SDK version</strong></p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Android</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>>= 23.1.2</p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>iOS</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>>= 10.10.0</p>
</td>
</tr>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>Web (Javascript)</p>
</td>
<td
style="border-collapse: collapse; text-decoration: none !important; border: 1px solid rgb(224, 224, 224); text-align: center; font-family: "Google Sans", Roboto, sans-serif; font-size: 14px;"
width="33%">
<p>>= 9.22.1</p>
</td>
</tr>
</tbody>
</table>
</div>
<p>Your Firebase project(s) that use
Firebase Cloud Messaging APIs are
listed below:</p>
<ul>
<li><a
href="https://notifications.google.com/g/p/ACUgQrEotRQKxV6LgEoXckEV9bLkUuhj9b1dUEtZwXeBD6i1JG2SipBCU3_-A46djD3KV4k7XrIbasB60E_K8d6_dHHvHD-_2cnyBUix-DEEIJkWkzw6-xrvJDz64B0VJ3FWbNJ4UorZX4uwFpCyKCfCDYM4lMYSuHF4e8JO88lnZyTC_Qa4wW0Kr4YdCa4W7_3w_rq9_-KINgSiodkUhsW7TvTYl1M"
target="_blank"
moz-do-not-send="true"
style="color: rgb(2, 119, 182); text-decoration: none; font-family: "Google Sans", Roboto, sans-serif;">MyOvmsServer
(1043773844049)</a>
<ul>
<li><em
style="font-style: italic !important;">Your recent usage of impacted
APIs/features: Server Keys</em></li>
<li><em
style="font-style: italic !important;">Your recent usage of impacted
APIs/features: Legacy HTTP
protocol</em></li>
</ul>
</li>
</ul>
<div class="emphasis"
style="padding: 15px 0px 0px; color: rgb(38, 50, 56); font-family: "Google Sans", Roboto, sans-serif; font-size: 16px;">We’re
here to help<span
class="Apple-converted-space"> </span></div>
<p>If you have any questions, please
review the<span
class="Apple-converted-space"> </span><a
target="_blank"
href="https://notifications.google.com/g/p/ACUgQrF1q42xLDBDWvEr5RHaOfbnfKhv0UdWXB6Vy1kLOjasVBtYD0Wjp4aQJlSaeYnw695zGgel_4mXfwd5JHyH3hmINX1yjPPMSUIxlWcV8-8Af9jmWTRzELbajU3hoHr3k5e8X4QnZaoBBqlKW9ZwgPvaX0SEG_Q761kFR-vQisPxahLO6tzNfIkO3wdWa9b6XDKynfH7tcuSSS5YX3B-wdvH6XeRsMo-Tw"
moz-do-not-send="true"
style="color: rgb(2, 119, 182); text-decoration: none; font-family: "Google Sans", Roboto, sans-serif;">Firebase
FAQs</a>.</p>
<div style="padding: 20px 0px 0px;">Thanks,<span
class="Apple-converted-space"> </span></div>
<div class="signoff"
style="color: rgb(38, 50, 56); font-weight: 700; font-size: 14px; line-height: 20px;">Todd
on behalf of the Firebase team<span
class="Apple-converted-space"> </span></div>
</td>
</tr>
<tr style="border-collapse: collapse;">
<td class="type-msa"
style="border-collapse: collapse; text-decoration: none !important; vertical-align: top; background-color: rgb(244, 244, 246); color: rgb(77, 77, 77); font-weight: 400; font-size: 12px; line-height: 16px; padding: 20px 25px; text-align: center;">
<p
style="text-align: center; font-size: 12px; font-family: Roboto, arial; color: rgb(117, 117, 117);"><strong
style="font-weight: bold !important;">Was this information helpful?</strong><span
class="Apple-converted-space"> </span><br>
<br>
<a
href="https://notifications.google.com/g/p/ACUgQrG_D9izaxqaPAZL66peR0D-yHGGWiULfqLYNXkYVDs80RnpgeXgBN9m4ZnaHzuqsYlOfmgjFoUOsubDA7WspKOx5stGqGz--VfYcwvRfcyYu8wpw3AGMncVzPV7JAmFxyvmWXSFwq2XGOMXnFc1YZFt5J95Sz9hEaOrLOKX4og8ftEzmGUD6Zmv-OofJZ4g6roE8QdQ4L9DIP_mFpopj6y27eSinWXQTZoUBHhCVQ5hGICPSorDMyXpqbhKCdouUctpgfshicsSM_S8LReB3sRCqkl0PQ6RkgRnaBHi4y82il1Hcp4jv1NiDVxrF1w5kg"
target="_blank"
moz-do-not-send="true"
style="color: rgb(26, 115, 232); text-decoration: none; font-family: Roboto, arial; font-size: 14px;"><img
src="https://services.google.com/fh/files/emails/happy_emojis.png"
alt="Yes" moz-do-not-send="true"
style="border: medium; outline: currentcolor; text-decoration: none;"
width="25"></a><span
class="Apple-converted-space"> </span> <span
class="Apple-converted-space"> </span><a
href="https://notifications.google.com/g/p/ACUgQrFnFdXuJ_VF6ChjiUeTeV5elzVrPymaFMqIFMkzFQvDJk1H8Vs9uUUt76f7Xe2hDm2I35eLjYIdq613WGZApFeuZuv4m4_Iubc9fhSe1sG_m67t1b1CFvQaomK_klAYbLBQIHzrxKtOAlmJfr8L8yO2ILSG0RJkj0CqDnrR4UsTtw8LGENRKq7cnyhBaQr7HrQVfvk1LYOYUbJLvrsp-_g3wvDF-VUQbIkwnDoZNG9AAg8mZIze5vUr32smAfDHfLE_2jZ1HpU4d9XVZ8S7Aph1sX6Nh9J9frhzn9tWZ1MKhVXbRbcCocQK8dD47hUA6OWi6R8"
target="_blank"
moz-do-not-send="true"
style="color: rgb(26, 115, 232); text-decoration: none; font-family: Roboto, arial; font-size: 14px;"><img
src="https://services.google.com/fh/files/emails/neutral_emojis.png"
alt="Neutral"
moz-do-not-send="true"
style="border: medium; outline: currentcolor; text-decoration: none;"
width="25"></a><span
class="Apple-converted-space"> </span> <span
class="Apple-converted-space"> </span><a
href="https://notifications.google.com/g/p/ACUgQrFb7NDlSkpL4nuGR0g71bgiRuj39SdywVWgFU-V2bmH2sTpWfqP5wOUFG7s8ac6UZHkK2C1YI9ygFwG8W0f4biaJ7NHCvbBCBVpx4qEZWIUe4vPCvT_AtResGaRUZdjcQwchak5V7wjkbCkPSrBwL4_YEg6Clr5tnpkrDQhvxN1uaC2lSKxqNCUYucmV2C-JjRFwjJYG_veUreyuWkV-KiruZVSp7iwhaPvvY2s-mAe9MdTZAwfjeWu6fWjTijb6sMrzS_3z7unUgJg0yFm6lBNaPBINYLBQObetHggsrv5dd2elYGrpoEyQPLuxbU8"
target="_blank"
moz-do-not-send="true"
style="color: rgb(26, 115, 232); text-decoration: none; font-family: Roboto, arial; font-size: 14px;"><img
src="https://services.google.com/fh/files/emails/sad_emojis.png"
alt="No" moz-do-not-send="true"
style="border: medium; outline: currentcolor; text-decoration: none;"
width="25"></a></p>
You have received this mandatory service
announcement to update you about
important changes to Firebase or your
account.<span
class="Apple-converted-space"> </span></td>
</tr>
<tr style="border-collapse: collapse;">
<td class="google-legal"
style="border-collapse: collapse; text-decoration: none !important; text-align: center; vertical-align: top; background-color: rgb(77, 77, 77); padding: 24px;">
<table
style="border-collapse: separate; width: 550px; border: 0px; border-spacing: 0px; padding: 0px;">
<tbody>
<tr
style="border-collapse: collapse;">
<td
style="border-collapse: collapse; text-decoration: none !important;"
valign="middle" align="left"><img
alt=""
src="https://www.gstatic.com/images/branding/googlelogo/2x/googlelogo_light_color_74x24dp.png"
title="Google"
moz-do-not-send="true"
style="display: block;"
width="70" height="24"></td>
<td
style="border-collapse: collapse; text-decoration: none !important; color: rgb(214, 221, 225); font-weight: 400; font-size: 12px; line-height: 14px; padding: 0px;"
valign="middle" align="right"><a
href="x-msg://206/#"
moz-do-not-send="true"
style="color: rgb(244, 244, 246); text-decoration: none;">© 2023 Google
LLC<span
class="Apple-converted-space"> </span><br>
1600 Amphitheatre Parkway<span
class="Apple-converted-space"> </span><br>
Mountain View, CA 94043 USA<span
class="Apple-converted-space"> </span></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<img alt=""
src="https://notifications.google.com/g/img/ACUgQrEI5mdWu4JYedZpX2M5AXc0vjuQU7TBH60nLtsJw3bCHe-DBOvO_BpuLxoZqe0CtNE1MVABJhcogNDEwhCAnwBug8Bu5MlloHVwzQyQdbOHDKm_rFD19mxJ8ihTIL029VCkj7ONUOaX3jhK8w.gif"
moz-do-not-send="true" width="3" height="1"></div>
<br>
<pre class="moz-signature" cols="72">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
</div>
</div>
<br>
<iframe class="content-isolator__isolated-content"
sandbox="allow-scripts" scrolling="auto"
data-src="data:text/html;charset=UTF-8;base64,PGlmcmFtZS1jb250ZW50IGRhdGEtaWZyYW1lLWhlaWdodD0idHJ1ZSI+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188QlI+T3Ztc0RldiBtYWlsaW5nIGxpc3Q8QlI+T3Ztc0RldkBsaXN0cy5vcGVudmVoaWNsZXMuY29tPEJSPmh0dHA6Ly9saXN0cy5vcGVudmVoaWNsZXMuY29tL21haWxtYW4vbGlzdGluZm8vb3Ztc2RldjxCUj48L2lmcmFtZS1jb250ZW50Pg=="
src="data:text/html;charset=UTF-8;base64,PGlmcmFtZS1jb250ZW50IGRhdGEtaWZyYW1lLWhlaWdodD0idHJ1ZSI+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188QlI+T3Ztc0RldiBtYWlsaW5nIGxpc3Q8QlI+T3Ztc0RldkBsaXN0cy5vcGVudmVoaWNsZXMuY29tPEJSPmh0dHA6Ly9saXN0cy5vcGVudmVoaWNsZXMuY29tL21haWxtYW4vbGlzdGluZm8vb3Ztc2RldjxCUj48L2lmcmFtZS1jb250ZW50Pg=="
style="border: medium; display: block; overflow: auto;" width="200"
height="10"></iframe></div>
<br class="Apple-interchange-newline">
</div>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
</body>
</html>