ADVERTISEMENT

Google is green with envy

Published Aug 12, 2022 10:30 pm

Once again, Google is trying to bully Apple into supporting RCS on Messages. It was not too long ago when one of the Google head honchos was spewing tweet after tweet going after Apple for not supporting RCS - even going to the extent that Apple continues to use to the not secure, not encrypted SMS. This week, Google launched another salvo via a website, "Get The Message"<"https://www.android.com/get-the-message/">.

So what is RCS? RCS, as defined on Wikipedia <"https://en.wikipedia.org/wiki/Rich_Communication_Services">, "is a communication protocol between mobile telephone carriers and between phone and carrier, aiming at replacing SMS messages with a text-message system that is richer, provides phonebook polling (for service discovery), and can transmit in-call multimedia."

Wouldn't this be cool, yeah? Well, not quite. On the same Wikipedia page, this is added, " Google added support for end-to-end encryption for one-on-one conversations in their own extension." Now note that this is Google's own extension, which means that this is not required to be implemented by carriers or telecommunications companies (telcos). So, if you are using RCS on a non-Google implementation, there is no guarantee that it is end-to-end encrypted (E2EE), which is pretty much like SMS (except for the "rich" content). If E2EE is not standard, then what's the point of using RCS outside of Google's implementation?

From the same Wikipedia page, although I am not sure why as of its last edit on August 10, 2022, the list of carriers or telcos does not cover every telco in the world (note that in the Philippines, only Globe is listed). So not all telcos support RCS - how can you reach users on those telcos? The common service is none other than SMS!

Google, with its numerous failed attempts at creating their own iMessage-like service, is envious of Apple's iMessage. Yeah, the green bubble that appears on Apple's Messages application indicates that you are communicating with either an Android user or a non-smart/feature phone user. Yep, you guessed it - Google is green with envy.

I have a deGoogled Pixel 5a, which I use for testing and there is no RCS support built-in. And here's what GrapheneOS developers say about RCS.

GrapheneOS developers on RCS on AndroidGoogle supports RCS and SMS. Apple supports iMessage and SMS. So why can't Google just admit that their messaging solution sucks?! Users are better off using Signal or Threema to securely communicate with others on different mobile platforms. I wrote about Signal and Threema not too long ago, and they're the best cross-platform messaging solutions in the market today, NOT iMessage and definitely NOT RCS!

Apple will support RCS in the future - the future when RCS has completely replaced SMS, which translates to all devices, iOS, Android and non-smartphones, supporting it, AND when all telcos support RCS with end-to-end encryption! So as it ease, Google will continue to be envious of iMessage! Live with it!

ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.