Embed Discourse in a native app?

Our company has native apps for iOS and Android. One of our goals is to bring people back to our apps frequently, and to spend a lot of time in our apps. (The app stores seem to prioritize apps that get a lot of usage.)

We have a pretty solid Discourse forum, but currently we just link out to the forum’s website from the app. iOS users who want to receive forum push notifications then have to download the Discourse app separately. (Android users can receive push notifications directly from the website, which is great, but in that case, they’re still using the website, and not our app.)

We’d like to make the Discourse forum a part of our existing iOS and Android apps, and especially to allow users to receive forum push notifications in our apps, without forcing people to download a separate app or to leave our app to use the forum. (I’m imagining that the implementation would be a web view, much like the Discourse iOS app.)

Is there a way to do something like this today? (I’m guessing not?)

It is possible, but note:

  1. You will have cookie / login problems at the moment, particularly on iOS, due to the way embedded Safari is currently working in iOS 12 and beyond.

  2. You could certainly consume the Discourse API in the native apps to grab Discourse notifications.

A full in-app webview will be more complicated than simply linking out, and implies more developer support for the native apps.

@sam may have other thoughts.

On Android the story is quite simple, spinning up a Chrome Custom Tab is super easy and it shares authentication with Chrome. Only big downside and reason our Android team members avoid using the Android app (and that we are considering killing the Android app) is cause opening a Chrome Tab is slow compared to PWA, so people prefer the PWA.

Being Android though you could possibly automate creating the PWA link and all that Jazz from your app which may be interesting.

On iOS the story is more complex due to Apple bugs.

We have the user API key system @pmusaraj will be working on improving per: Delegated authentication for Discourse Mobile app (which also includes adding documentation)

My recommendation here for you @dfabulich is to hold tight for a month or 2 while we redo our protocol and improve documentation.

How would push notifications work in this story? Would I have to poll? (I’d rather do proper remote pushes.)

I read somewhere that Chrome 72 now support Trusted web activities , which means you can now distribute PWAs in the Google play store. If it works well I think you will have more reason to kill the Android app.

It’s a bit involved, since you need the validation key, paying the Google fee, etc. But it does work.

Let me give one good reason not to: some people do not have a Google account and won’t have one. If the app would be distributed over F-Droid, it would be fine, but forcing people into Google is not a friendly move.

Пока вы убедитесь, что это также работает с Firefox, это тоже может решить

Discourse как приложение с открытым исходным кодом всегда должен отдавать предпочтение решениям с открытым исходным кодом.

Возвращаюсь к этому вопросу! В чём сейчас дело?

Делегированная авторизация внедрена, и наш новый процесс входа в приложение работает очень стабильно. Все протоколы открыты.

Можете дать ссылку на документацию по этому вопросу?

Вот наша текущая спецификация:

Её, безусловно, можно немного улучшить, поэтому правки более чем приветствуются.

Официальная реализация с открытым исходным кодом доступна по адресу: GitHub - discourse/DiscourseMobile: Discourse Mobile · GitHub

Очень интересно, как это получилось. Удалось ли кому-нибудь внедрить Discourse в своё мобильное приложение через WebView и использовать уведомления?

Это случается время от времени: мы поддерживаем несколько приложений с белой этикеткой для клиентов.

К сожалению, стоимость такого подхода огромна. Я бы сказал: рассматривайте этот вариант, только если у вас есть бюджет около 20 000 долларов США в год на разработку, поддержку и отладку.

Я как раз работал над подобным проектом, но да, публичный репозиторий устарел. Если вы хотите, чтобы я вам помог, вы можете нанять меня.

@sam спасибо за предостережения, так как я как раз собираюсь приступить к этому проекту.

Меня обрадовало, что в центре Discourse это уже реализовано — почему вы предполагаете такие высокие затраты? Я думал, что нужно просто настроить WebView и аутентификацию, а уведомления — это приятное дополнение. Это была бы отличная функция для добавления в мое уже существующее приложение; моя команда ранее работала с WebView.

Есть ли что-то, чего я не учитываю и что потребует значительных усилий или обновлений?

Исторически я видел, сколько усилий было вложено в тривиальный дискуссионный хаб веб-представления.

На первый взгляд это «просто», но затем приходится беспокоиться о тысяче мелких деталей.

  • Уменьшение панели внизу
  • Изгиб на iPhone
  • Индикаторы загрузки
  • Постоянные обновления WebView
  • Проверки безопасности Apple и процесс утверждения приложения
  • Сложная отладка… что, если что-то произойдёт в WebView, но не на сайте?

Это даже не полный список; уверен, что @pmusaraj и @kris.kotlarek смогут назвать ещё 20 пунктов.

Приложения очень сложно сделать правильно, и они очень дороги. В наши дни единственной веской причиной для их создания является iOS, но это непростой путь.

Я изначально задал этот вопрос, потому что хотел удерживать пользователей в своём приложении, полагая, что Apple и Google направят ко мне бесплатный трафик.

Станет ли эта задача проще (или сложнее?) в «Chrome Custom Tab» для Android?

Возможно ли, что вы предложите библиотеку для iOS, которая оборачивает WKWebView и решает эту проблему за нас? (Кажется, вы уже выполнили более 90% работы, реализовав Discourse Hub.)

Я бы сказал, что Android — это «особенно» сложно. Особенно учитывая, что сама операционная система не предоставляет необходимых примитивов. Очень трудно оправдать усилия там, когда PWA работает на Android так хорошо.

Мы используем React Native и компоненты для обёртывания WKWebView. К сожалению, сложность остаётся. Обновления React Native также могут быть довольно болезненными в плане обработки истории изменений.

@sam, мое обоснование для начала этого проекта в первую очередь связано с push-уведомлениями, а также с тем, что у меня уже есть приложение, которое позволит моим участникам выполнять множество задач в одном месте: готовиться к экзаменам, общаться в сообществе, совершать покупки и т. д.

Но, судя по всему, я могу предложить им добавить приложение сообщества как PWA, и тогда они смогут получать push-уведомления и обновления? Поддерживает ли PWA push-уведомления? Обновление: нашёл ответ здесь, похоже, что push-уведомления не поддерживаются.

Я продолжаю изучать вариант с PWA — возможно, я даже смогу добавить ссылку «Присоединиться к обсуждению в сообществе» в своё существующее нативное приложение, и это будет правильной ссылкой для загрузки PWA?

Спасибо!
Джеймс