Обзор
Можно сказать, что в разработке мобильных приложений отправка сообщений является очень важной функцией: она может напоминать или пробуждать пользователей, а также является важным средством для более эффективного достижения операторами продуктов операционных целей, таких как добавление нового продукта в каталог. полки или последние новости доводятся до пользователя.
На самом деле push-сообщения — это сложный сценарий бизнес-приложения, охватывающий пять аспектов, включая бизнес-серверы, сторонних поставщиков услуг push-управления, хостинг-провайдеров, службы push-уведомлений операционной системы с длительным соединением, пользовательские терминалы и приложения для мобильных телефонов. В родной iOS-разработке, чтобы упростить отправку сообщений, Apple Push Service (сокращенно APN) берет на себя требования к уведомлениям о сообщениях всех приложений в системе, и любые сторонние push-сообщения необходимо пересылать через push-службу. Для нативной платформы Android унифицированный сервис push-хостинга может быть реализован с использованием облачного механизма обмена сообщениями, аналогичного Firebase, предоставляемому Google.
В частности, когда приложению необходимо отправить push-сообщение, сообщение сначала будет отправлено сервером приложений на сервер Apple или Google, а затем отправлено на устройство через APN или FCM (инфраструктура push-сообщений Google), а устройство получит сообщение.После анализа сообщения на системном уровне оно, наконец, пересылается в приложение.Весь рабочий процесс показан на рисунке ниже.
Однако, поскольку сервисы Google не являются стабильными в материковом Китае, местные поставщики мобильных телефонов Android обычно заменяют сервисы Google на push-сервисы, разработанные ими самими, и настраивают набор стандартов push-уведомлений.Для разработчиков это, несомненно, увеличение бремени адаптации. большой. Поэтому при работе с push-сообщениями на стороне Android обычно используются сторонние push-сервисы, такие как Jiguang, Getui и Youmeng Push. Когда компании выбирают сторонние инструменты из-за различных масштабов компромиссов, какой из них выбрать в качестве службы push-уведомлений, необходимо определять в соответствии с реальной ситуацией.
Хотя эти сторонние службы push-уведомлений используют самостоятельно созданные длинные соединения и не могут использовать базовую оптимизацию операционной системы, они будут совместно использовать канал push-уведомлений для всех приложений, использующих службу push-уведомлений, до тех пор, пока одно приложение, использующее стороннюю службу push-уведомлений не уничтожается системой, сообщение может быть доставлено вовремя, поэтому нет необходимости учитывать скорость поступления сообщения.
Поскольку функции и процедуры доступа, предоставляемые сторонними поставщиками push-сервисов, в основном одинаковы, учитывая, что сообщество Jiguang и экология относительно активны, а плагин Flutter был запущен ранее в Китае, мы можем использовать этот плагин непосредственно в Проект Flutter, как показано ниже, представляет собой схематическую диаграмму архитектуры Jiguang Push.
Aurora Push, сокращенно JPush на английском языке, – это бесплатный сторонний поставщик услуг по доставке сообщений. Для этой услуги Aurora официально выпустила SDK и подключаемые модули для многих платформ, как показано на рисунке ниже.
Добавить плагин авроры
Плагин Flutter поддерживает множество зависимостей, обычно три: зависимости git, зависимости pub.dev и локальные зависимости.
Зависит от git
Откройте файл конфигурации pubspec.yaml проекта Flutter и добавьте следующий код зависимости.
# 极光推送插件
jpush_flutter:
# git 依赖方式
git:
# git 依赖的地址
url: git://github.com/jpush/jpush-flutter-plugin.git
# git 仓库中的分支
ref: master
Затем нажмите [Packages get], чтобы загрузить зависимости, или используйте команду [flutter packages get] непосредственно в командной строке терминала, чтобы загрузить зависимости, как показано на следующем рисунке.
Загрузка с github напрямую через git во многом зависит от скорости вашей сети, и очень вероятно, что загрузка не удастся, поэтому вам нужно терпеливо ждать.Путь зависимости pub.dev
pub — это официальный репозиторий Dart Packages от Google, похожий на репозиторий npm в node и jcenter в android, где мы можем найти нужные нам пакеты и плагины. мы можем посетитьВнутренний склад пабаПриходите и быстрее ищите нужные нам плагины.
Затем подготовьте зависимости pub для отправки Jiguang в файле pubspec.yaml проекта флаттера, как показано ниже.jpush_flutter: 0.1.0
jpush_flutter: ^0.1.0
Разница между двумя способами написания заключается в том, что последний автоматически загружает более позднюю версию, например, здесь готовится 0.1.0. проект должен быть не установленной в данный момент версией 0.1.0, а какой-то другой версией. Разумеется, можно использовать и следующие методы.
jpush_flutter: any
Разница между первыми заключается в том, что версии плагинов, которые подходят для текущей среды проекта, будут загружены в соответствии с текущей средой проекта.Если иногда мы указываем версию для загрузки, будут различные ненормальные конфликты.Когда несколько версий не очень связано с функциями, которые вы используете. Когда есть разница, вы можете рассмотреть возможность использования этого метода, чтобы решить ее просто и грубо.
локальные зависимости
В дополнение к двум вышеупомянутым методам мы также можем загрузить плагин aurora push flutter на локальный сервер, а затем полагаться на него локально. Сначала перейдите на github, чтобы загрузить исходный код плагина Aurora Push flutter.
Затем разархивируйте загруженный zip-файл, поместите его в каталог и настройте локальные зависимости Jiguang push в pubspec.yaml в проекте флаттера, как показано ниже.# 极光推送插件
jpush_flutter:
path: ../jpush-flutter-plugin
Используемый здесь ../ является представлением пути для корректуры, конечно, также можно использовать полный путь к папке jpush-flutter-plugin.
В проекте флаттера есть много способов полагаться на подключаемый модуль Jiguang push, как показано на следующем рисунке после успешной зависимости.Пример отправки
Собственная конфигурация
Конфигурация платформы Android
Поскольку push включает в себя множество собственных конфигураций, для нормальной отправки сообщений необходимо выполнить некоторую работу по настройке в родных Android и iOS. Для платформы Android конфигурация относительно проста: откройте файл android/app/build.gradle и добавьте следующий код в узел defaultConfig.
android: {
....
defaultConfig {
applicationId "替换成自己应用ID"
...
//ndk用于真机运行,用来指定对应的芯片架构
ndk {
abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a',
}
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "appkey",
JPUSH_CHANNEL : "developer-default",
]
}
}
Как показано ниже.
Создайте push-приложение на платформе разработчика Jiguang, а затем заполните параметры, необходимые для сценария build.gradle, как показано на следующем рисунке.Затем запустите проект на телефоне Android, появится приглашение Запустить задачу Gradle..., перейдите в maven jcenter, чтобы загрузить библиотеку зависимостей и библиотеку ОС, используемую платформой Android.зависит от платформы iOS
Для платформы iOS конфигурация приложения более громоздка, чем для платформы Android, поскольку конфигурация push-уведомлений iOS будет включать такие процессы, как разрешения приложения, служба Apple APNs и сопоставление фоновой информации Aurora.
Затем используйте Xcode, чтобы открыть проект iOS проекта Flutter, а затем выберите [Цель] → [Подписание и возможности] → [Возможности] → [Push-уведомления], чтобы включить функцию отправки сообщений приложения, как показано на следующий рисунок.Затем настройте соответствующую push-аутентификацию iOS на платформе разработчика Jiguang.Для процесса подачи заявки на push-сертификат официальный сайт Jiguang Push предоставляет более подробные инструкции, и вы можете подать заявку в соответствии с инструкциями на официальном сайте. Затем загрузите примененный принудительный сертификат в фоновом режиме службы разработчика Jiguang, как показано на следующем рисунке. После подготовки сертификата запустите проект Flutter на iphone, как показано на следующем рисунке.запустить проект
После выполнения вышеперечисленных операций все собственные среды, необходимые для Jiguang Push, настроены. Затем используйте Android Studio, чтобы открыть проект Flutter, и добавьте код инициализации JPush в функцию жизненного цикла initState файла main.dart, как показано ниже.
void initState() {
super.initState();
JPush jpush = new JPush();
jpush.setup(
appKey: "96d7d7e77bee7abd4d568978",
channel: "flutter_channel",
production: false,
debug: true, //是否打印debug日志
);
}
Затем запустите приложение Flutter и добавьте push-сообщение на фоне открытия службы разработчика Jiguang, выберите платформу для отправки и нажмите кнопку [Отправить сейчас], как показано на следующем рисунке.
Дождавшись успешной отправки сообщения, вы можете увидеть отправленное сообщение на соответствующем мобильном устройстве, как показано на следующем рисунке.