Обзор
Можно сказать, что в разработке мобильных приложений отправка сообщений является очень важной функцией: она может напоминать или пробуждать пользователей, а также является важным средством для более эффективного достижения операторами продуктов операционных целей, таких как добавление нового продукта в каталог. полки или последние новости доводятся до пользователя.
На самом деле 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] непосредственно в командной строке терминала, чтобы загрузить зависимости, как показано на следующем рисунке.
Путь зависимости pub.dev
pub — это официальный репозиторий Dart Packages от Google, похожий на репозиторий npm в node и jcenter в android, где мы можем найти нужные нам пакеты и плагины. мы можем посетитьВнутренний склад пабаПриходите и быстрее ищите нужные нам плагины.
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.
# 极光推送插件
jpush_flutter:
path: ../jpush-flutter-plugin
Используемый здесь ../ является представлением пути для корректуры, конечно, также можно использовать полный путь к папке jpush-flutter-plugin.
Пример отправки
Собственная конфигурация
Конфигурация платформы 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",
]
}
}
Как показано ниже.
зависит от платформы iOS
Для платформы iOS конфигурация приложения более громоздка, чем для платформы Android, поскольку конфигурация push-уведомлений iOS будет включать такие процессы, как разрешения приложения, служба Apple APNs и сопоставление фоновой информации Aurora.
запустить проект
После выполнения вышеперечисленных операций все собственные среды, необходимые для 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, выберите платформу для отправки и нажмите кнопку [Отправить сейчас], как показано на следующем рисунке.