Доступ к Aurora Push to APP: серверная часть (PHP)

задняя часть PHP Android iOS

Автор: Хуан Чжичэн (Сяо Хуан)

Блог автора:адрес блога

Требования к толчку новой версии стали более сложными.Необходим доступ к профессиональному толчку.Раньше это было реализовано на основе IM приложения.

В настоящее время основные push-платформы на рынке включают Aurora, Youmeng, Carrier Pigeon и т. д.

Наконец выбран в результате исследованийТолкающая платформа Аврора

Что такое пуш-платформа?В качестве примера возьмем картинку

image

Наш бизнес-сервер запрашивает интерфейс, предоставляемый платформой Jiguang. Запросите их, а затем платформа Jiguang передаст информацию нашим пользователям.

всегда упоминаетсятолкать, Может быть, некоторые друзья-новички все еще в замешательстве.Что такое push? ?

Обычно в HTTP-запросах клиент запрашивает сервер, а сервер отвечает данными, однако в некоторых случаях нам нужно активно отвечать клиенту данными.

И этот процесс активного реагирования на данные называется толчком.

Так как же достигается толчок?

Проще говоря, это установить длинное соединение.Обычный HTTP-это короткое соединение, и оно будет закрыто после ответа на данные.Длинное соединение всегда подключено.Поскольку оно всегда подключено, мы можем найти это соединение , а затем заранее отправьте ему сообщение.

Ладно, вернемся к теме, продолжим разговор о том, как получить доступ к Jiguang Push.

Сначала поймите несколько концепций

  • Registration ID

После того, как клиент успешно инициализирует JPush, сервер JPush назначит идентификатор регистрации в качестве идентификатора устройства (идентификатор регистрации разных приложений на одном мобильном телефоне отличается). Разработчики могут отправлять данные на одно устройство, указав определенный идентификатор регистрации.

  • псевдоним

Каждому пользователю может быть назначен только один псевдоним. В рамках одного приложения рекомендуется брать разные псевдонимы для разных пользователей. Таким образом, пользователи максимально однозначно идентифицируются на основе псевдонимов.

  • Этикетка

Цель пометки пользователей, установивших приложение, в основном состоит в том, чтобы облегчить разработчикам отправку Push-сообщений пакетами в соответствии с тегами. Для каждого пользователя можно создать несколько тегов.

Мы используем картинку, чтобы понять взаимосвязь между

image

во-первыхRegistration IDОн уникален. Мы можем установить псевдоним для этого идентификатора, который является примечанием. Этот псевдоним может быть таким же, как учетная запись пользователя нашей платформы. Это облегчает нам продвижение.

Конечно, пушить по одному очень хлопотно, таких пользователей можно назватьTagТеги. Например, пользователи в Пекине размещаются под тегом Tag в Пекине. Отдельные пользователи размещаются под тегом Tag одиноких людей. Мы можем использовать Tag для продвижения, и мы можем добиться эффекта массового распространения.

После понимания концепции нам должно быть ясно, что в настоящее время нам нужно связать зарегистрированного пользователя JPush с пользователем приложения разработчика.

Есть две основные идеи для этой привязки:

  • Сохраните отношения привязки на стороне сервера JPush.

  • Сохраните отношение привязки к серверу приложений разработчика.

Во-первых, это псевдонимы и теги, упомянутые ранее. Клиент должен установить псевдоним.

Разработчик клиента вызовет API setAlias ​​или setTags, чтобы установить отношение

SDK сохраняет настройки отношений на сервере JPush.

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

Второй относительно проблематичен.Registration IDОн передается на сервер, а затем сервер обрабатывает соответствующие отношения.

Здесь мы используем первый, задавая псевдонимы или названия через клиент.

JPush предоставляет четыре формы сообщений: уведомление, пользовательское сообщение, мультимедийное и локальное уведомление.

Здесь мы в основном вводим сообщения уведомлений.Пока вы понимаете первое, остальные можно легко понять, просмотрев документацию.

  • уведомлять

Или Push-уведомление, которое относится к уведомлению, отображаемому на панели уведомлений (строке состояния) мобильного телефона. Уведомления в основном используются для подсказок пользователям и используются в различных сценариях, таких как содержание новостей, рекламные мероприятия, информация о продукте, напоминания об обновлении версии, напоминания о статусе заказа и т. д.

Сначала здесь прикрепляется адрес документа официального веб-сайта, а последующее содержание основано на этом документе.

Адрес документа:Аврора толчок

Или сначала понять несколько концепций

  • платформа: нажимная платформа

В настоящее время JPush поддерживает push на трех платформах: Android, iOS и Windows Phone. Ключевые слова: «android», «ios», «winphone».

Если целевой платформой является платформа iOS, вам необходимо установить среду push через поле apns_production в параметрах. True означает отправку рабочей среды, False означает отправку среды разработки; если не указано иное, это отправка рабочей среды.

Отправляйте на все платформы:

{ "platform" : "all" }

Укажите конкретную push-платформу:

{ "platform" : ["android", "ios"] }

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

  • аудитория: нажмите цель

Объект push-устройства, указывающий список устройств, на которые можно отправить push-уведомление. Для подтверждения объекта push-устройства JPush предоставляет множество методов, таких как: псевдоним, метка, идентификатор регистрации, группировка, широковещание и т. д.

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

Когда мы используем метод push-инкапсуляции, нам нужно установить конфигурацию Android и ios отдельно, я объясню это в моем методе инкапсуляции ниже.

Сначала идем интегрировать sdk, сделать это можно через Composer

Добавьте зависимость jpush в файл composer.json в вашем проекте:

"require": {
    "jpush/jpush": "^3.5"
}

воплощать в жизньphp composer.phar install** 或 ** composer installустановить.

Вы также можете загрузить его напрямую, адрес загрузки можно найти в документации~

После того, как композитор установлен, на него можно напрямую ссылаться через пространство имен.

Ниже приведен метод push, который я просто инкапсулировал.

<?php
/**
 * Created by PhpStorm.
 * User: huangzhicheng
 * Date: 2018/8/28
 * Time: 下午3:12
 */

namespace data\tools;

use data\tools\config\Output;
use JPush\Client as Client;

class JPush
{
    /**
     * 通过别名发送极光推送消息
     * @param $title // 标题
     * @param $content // 内容
     * @param $alias // 别名
     * @param array $params // 扩展字段
     * @param string $ios_badge // ios 角标数
     * @param array $platform // 推送设备
     * @return array|bool
     * @author huangzhicheng 2018年08月29日
     */
    public static function pushMessageByAlias ($title, $content, $alias, $params = [], $ios_badge = '0', $platform = ['ios', 'android'])
    {

        if (!is_array ($alias)) return false;
        $jpush_conf = Output::getJPushKey (); // 获取配置信息 app_key 和 master_secret

        $app_key = $jpush_conf[ 'app_key' ];
        $master_secret = $jpush_conf[ 'master_secret' ];
        try {
            // 初始化
            $client = new Client($app_key, $master_secret);

            $result = $client->push ()
                ->setPlatform ($platform)
                ->addAlias ($alias)
                ->iosNotification (
                    $content, [
                    'sound' => '1',
                    'badge' => (int)$ios_badge,
                    'content-available' => true,
                    'category' => 'jiguang',
                    'extras' => $params,
                ])
                ->androidNotification ($content, [
                    'title' => $title,
                    //'build_id' => 2,
                    'extras' => $params,
                ])
                ->options ([
                    'sendno' => 100,
                    'time_to_live' => 86400,
                    'apns_production' => true, // ios推送证书的选择,True 表示推送生产环境,False 表示要推送开发环境
                    //'big_push_duration' => 10,
                ])
                ->send ();
            return $result;
        } catch (\Exception $e) {
            // 写入错误日志
            // 这里根据自己的业务来定
        }
    }
}

Это видно из кода, я используюiosNotificationиandroidNotificationметод выполнения push-настроек для двух устройств.

// Ios的通知配置项
->iosNotification (
    $content, // 推送的内容
    [
        'sound' => '1', // 是否有声音
        'badge' => (int)$ios_badge, // 显示的角标数
        'content-available' => true, // 去文档中查看具体用处,一般设置为true或者1
        'category' => 'jiguang', // 这里也去文档中查看吧
        'extras' => $params, // 扩展字段 根据自己业务场景来定.
    ])

Android push работает аналогично. Более подробные сведения о настройке см. в документации.

Наконец, инкапсулированный код называется

const PUSH_TYPE = [
        'push_new_info' => '1',
        'push_visitor_alert' => '2'

    ];

const APP_NAME = "****";
    
public static function pushNewInfoNotice ($uids, $title, $url, $txt, $type = '1')
{

    $ext = [
        'push_type' => strval (self::PUSH_TYPE[ 'push_new_info' ]),
        'info_type' => strval ($type),//1-资讯,2-项目
        'title' => empty($title) ? self::APP_NAME : $title,
        'content' => $txt,
        'redirect_url' => $url
    ];

    $res = JPush::pushMessageByAlias ($title, $txt, $uids, $ext);
    return $res;
}

Нам нужно только вызвать этот метод для достижения push.

$ext — это формат информации, который мы определяем с клиентом, они будут выполнять различные операции в зависимости от типа push_type.

И последнее, что нужно добавить: мы используем приложение aurora для разработки и производства, поэтому мы не можем просто отправлять широковещательные сообщения в среде разработки.

Как отличить производственную среду от среды разработки?

Ниже приводится официальная рекомендация

1. Используйте тот же ключ приложения и имя пакета, а также используйте RegistrationID, тег и псевдоним, чтобы отправить тестовый компьютер на тестовый компьютер.

2. Если вы должны протестировать широковещательный пуш, то создайте новое тестовое приложение на официальном сайте.Ключ приложения и имя пакета разные и специально используются для тестирования.

3. Если вам по-прежнему нужно то же имя пакета и тестовая широковещательная рассылка, создайте учетную запись Jiguang на официальном сайте, создайте новое тестовое приложение и протестируйте его с тем же именем пакета.

Эта статья записана здесь, и я обновлю ее позже, если захочу добавить.

Завершено: 01 сентября 2018 г., 00:22:32