Перейти к содержанию
  • Регистрация
Равиль Зарипов (ZuBy)

[Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]

Рекомендуемые сообщения

Ссылка: http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html

Автор: Зарипов Равиль @ZuBy

Описание: Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]

В предыдущей  части , я рассказывал как сделать настройку пуш уведомления в консоли Firebase, в этой я покажу код на Delphi и серверную часть на PHP

https://github.com/rzaripov1990/PUSHTestFCM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему в Ваших уроках не рассматриваться готовый сервер EMS от эмбаркадеро?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Честно даже никогда и не рассматривал этот вариант и не интересовался им. Статья нацелена на реализацию через Firebase, т.к. сервис содержит необходимый функционал для android + ios и web, это очень удобно и настройка проще для ios, не нужно генерить и держать сертификаты у себя на сервере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Ingalime сказал:

И еще не понятна теория... Что же такое термин токен?

Токен это идентификатор который генерирует системный сервис для конкретного девайса по каким-то критериям. Но не вечный, есть время жизни, но это невозможно проверить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ваша статья все же расчитана на профи. Простым людям она не понятна... Сорри... :)

 

Цитата
Firebase объединил APNs + GCM, поэтому токены которые выдаются из FPushService для iOS не валидны для FCM, но у Google есть специальный инструмент для этого, у Android все отлично, токен валиден
 

Это о чем? Вы что-то писали о термине APNs в Вашей статье? Что это из Вашей статьи?

Цитата

У меня реализация на Laravel, но я не буду её выкладывать.

Что такое Laravel?

Не могли бы Вы потратить свое время и написать статью для людей которые ничего не знают о пуш уведомлениях. С нуля, подробно, доходчиво с теорией...

1. Что такое пуш.

2. Как он реализуется.

3. Что для этого надо

и т. д.

 

Спасибо.

 

Изменено пользователем Ingalime

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Ingalime спасибо за вопросы) 

1) Вот есть хорошее описание работы и терминов касательно APNs и GCM, тратить на это время и писать тоже самое не хотелось

2) Реализация серверной и клиентской части есть в статье

3) Что для этого нужно и как настроить есть в предыдущей статье

17 минут назад, Ingalime сказал:

Что такое Laravel?

Laravel - это PHP фреймфорк, но выложил код на "чистом" PHP, чтобы каждый мог быстро интегрировать в свой проект, не привязываясь к фреймворкам

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Большое спасибо!

Мечта любого дилетанта, как я, это статья, книга, где от А до Я есть ответ на поставленный вопрос: есть ли жизнь на Марсе или ее нет... Пуш это буржуазное проявление которое - и т.д.

Статья как замкнутый цикл, где есть ответы на заданную тему в ПОЛНОМ объеме для таких дилетантов как я. Такая статья - успех. Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Ingalime сказал:

Большое спасибо!

Мечта любого дилетанта, как я, это статья, книга, где от А до Я есть ответ на поставленный вопрос: есть ли жизнь на Марсе или ее нет... Пуш это буржуазное проявление которое - и т.д.

Статья как замкнутый цикл, где есть ответы на заданную тему в ПОЛНОМ объеме для таких дилетантов как я. Такая статья - успех. Спасибо!

описание терминов и работы пуш уведомлении разжован в интернете чуть более чем полностью) и это не совсем относится к FMX, так что я не стал тратить на это время, увы его не так много как хотелось бы)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тупо выполнила инструкции эмбаркадеро и получаю пуш  с сервиса https://www.kinvey.com/

Никаких проблем - просто сделала настройки в проекте согласно документации.  Все работает. Почему это работает - понятия не имею...

Но абсолютно ничего не понятно. Что такое токен, что вообще происходит и почему все это работает.

И вот тут Равиль хотелось бы ПОЛНУЮ статью, для простых смертных, которые начали писать для мобильных приложений... Полный замкнутый цикл...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хитрость именно в том, что kinvey - это готовый сервер. как Google Firebase или amazon_не_помню_как_его

по какому принципу его выбрала emro - загадка

если вы собираетесь полностью ВСЕ данные хранить на нём - тогда все норм.

а если вам нужен свой сервер со своими юзерами и другими вещами?

тогда нужно где-то соединять ваш логин-пароль и ID вашего телефона(токен) чтобы при регистрации ваш сервер мог послать пуш на ваш девайс

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ems - тоже вещь в себе. эту штуку теперь развили до RAD server и продают за деньги и его и еще и клиентские лицензии.

за эти деньги какбе не очень нужен он. так что делать реализацию под EMS или RAD server имхо бессмысленно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
24 минуты назад, Kitty сказал:

И вот тут Равиль хотелось бы ПОЛНУЮ статью, для простых смертных, которые начали писать для мобильных приложений... Полный замкнутый цикл...

Принцип работы Push на разных ОС не отличается

если коротко, не обращаем внимание на OS и термины (для ознакомления прошу сюда)

Цитата

Важно знать! Для того, чтобы уведомление отобразилось на экране устройства, само приложение не обязательно должно быть запущено – именно для реализации этого преимущества посредником здесь выступает OS. Кстати, такой подход позволяет экономить и заряд батареи смартфона (телефона), и трафик. 

  • Для получения Push-сообщений OS должна зарегистрировать мобильное приложение;
  • OS запрашивает у APNS идентификатор устройства (токен);
  • Приложение получает токен от сервера APNS;
  • Приложение отправляет токен обратно на сервер, чтобы далее сервер пользовался им для отправки Push-уведомлений;
  • При наступлении события, определённого разработчиком, сервер, используя токены, отправляет Push-сообщения через APNS;
  • APNS делает рассылку уведомлений в приложение.

Описание технологии GCM и APNs  хорошо расписаны на хабре, гораздо более профессионально. Я уж точно ничего нового не внесу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата

если вы собираетесь полностью ВСЕ данные хранить на нём - тогда все норм.

Я не хочу хранить данные для никакого! Я хочу этому приложению посылать пуш. Теперь я хочу другому приложению посылать пуш. Все это работает в kinvey.com без единой строчки кода. Но статья Равиля не вносит ясности почему это происходит. Лично мне не понятно...

Изменено пользователем Kitty

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Kitty сказал:

Я не хочу хранить данные для никакого! Я хочу этому приложению посылать пуш. Теперь я хочу другому приложению посылать пуш. Все это работает в kinvey.com без единой строчки кода. Но статья Равиля не вносит ясности почему это происходит. Лично мне не понятно...

Токен - это идентификатор который отправил сервер (APNs/GCM), он используется для связи приложения и серверной части. Кинвей на своей стороне хранит ваши токены, чтобы по ним отправить пуш. Иначе другого варианта нет. Это классно, если у вам не требуется делать выборку по определенным критериям.

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

Отослать пуши по критерию:

  • Обновление приложения на определенной платформе
  • Техническая информация по типу учетной записи (админ, модер, пользователь и тд..)
  • Поздравление с днем рождения, предоставление скидок
  • Уведомление о недостаточном балансе
  • и тд.. примеров масса

Я слабо представляю такую реализацию через сервис кинвей и подобным которые предоставляются из коробки в RAD.

Статья была написана, чтобы показать именно НАСТРОЙКУ через сервис Firebase, и никак не претендует на полное описание работы с пушами в целом.

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

Код на PHP был показан, чтобы можно было реализовать функционал на своём сервере

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 26.02.2017 в 20:08, Kitty сказал:

Я не хочу хранить данные для никакого! Я хочу этому приложению посылать пуш. Теперь я хочу другому приложению посылать пуш. Все это работает в kinvey.com без единой строчки кода. Но статья Равиля не вносит ясности почему это происходит. Лично мне не понятно...

Kitty, а kinvey платный?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата

Kitty, а kinvey платный?

Нет. Просто создала учётную запись и проект. На форму кинула компонент kinvey и заполнила его свойства в инспекторе объектов. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я помню,он бесплатен до определенного количества пользователей/запросов.Сам начинал с него,но потом перешел на тогда еще GCM + PHP push-сервер.И как говорится,"ни о чём не жалею" )).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Цены на оф. сайте https://www.kinvey.com/pricing/

Но толком не понятно... :)

Изменено пользователем Kitty

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все они имеют бесплатный лимит

вот написано. один админ, одно приложение, 1 GB. Но почти уверен, есть и ограничение на количество всяких пушей и обращений в день или в сек...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не совсем понятно, вот создала в панели второе приложение и все бесплатно... Видимо, что-то другое имеется в виду...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 28.02.2017 в 20:18, Kitty сказал:

Цены на оф. сайте https://www.kinvey.com/pricing/

Но толком не понятно... :)

Нажал там Start Building и получил 404 ошибку ) Этому сайту точно можно доверять? )

Спойлер

kinvey.png

 

Изменено пользователем Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата

Нажал там Start Building и получил 404 ошибку ) Этому сайту точно можно доверять? )

Я не знаю или можно доверять этому сайту. Я доверяю эмбаркадеро которое для этого сервиса сделала отдельный компонент в палитре. А ошибок доступа 404 у меня не было... Вроде все работает...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не удалось соединить статью с компонентом TKinveyProvider и TPushEvents - не приходят пуши...:(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Ingalime сказал:

Не удалось соединить статью с компонентом TKinveyProvider и TPushEvents - не приходят пуши...:(

все правильно, разве было упоминание про kinvey? это совсем разные сервисы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Похожий контент

    • От slav_z
      Показать/скрыть сенсорную клавиатуру Windows.
      unit Lib.Keyboard; interface uses Winapi.Windows, Winapi.ActiveX, System.Win.ComObj, FMX.Forms, FMX.Platform.Win; procedure ToggleSensorKeyboard(Form: TCommonCustomForm); implementation const CLSID_UIHostNoLaunch: TGUID = '{4CE576FA-83DC-4F88-951C-9D0782B4E376}'; type ITipInvocation = interface ['{37C994E7-432B-4834-A2F7-DCE1F13B834B}'] procedure Toggle(WND: HWND); safecall; end; procedure ToggleSensorKeyboard(Form: TCommonCustomForm); var TipInvocation: ITipInvocation; begin OleCheck(CoCreateInstance( CLSID_UIHostNoLaunch,nil,CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, ITipInvocation,TipInvocation)); TipInvocation.Toggle(FormToHWND(Form)); end; end. C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe - Сенсорная клавиатура Windows. В Windows 10 простой запуск уже не работает.
      Кто как делал? Очень интересны примеры кода.
       
    • От genakust
      добрый день,
      у меня есть несколько TabItems in FMX- TabControl (как на вложенной картинке) один из которых заполняется динамически:
      FindAndDeleteItemContext; frameIndex:= GetFrameIndexByText(item); {factory} FFramesFactory:= TFramesFactory.DefaultFactory; {Index-> Frame} aktFrame:= FFramesFactory.GetFrame(frameIndex); {add to layout} aktFrame.Parent:= LyContent; aktFrame.Align:= TAlignLayout.Client; LyContent.AddObject(aktFrame); {open tab} ActionToContentTabExecute(Sender); я пытаюсь найти фрейм и удалить его только из TabItem но не как Object обследующим способом:
      procedure Txxx.FindAndDeleteItemContext; var   i: Integer; begin   for i:= 0 to Pred(LyContent.ComponentCount) do   begin     if LyContent.Controls.Items[i] is TFrame then       LyContent.RemoveObject(i);   end; end но почему- то LyContent.ComponentCount всегда равен 0.
      Подскажите пожалуйста что неправильно?
      Спасибо.

    • От genakust
      Здравствуйте,
      я создал свой ListBoxItem (FMX) который выглядит следующим образом:

      затем я добавил Items динамически в ListBox и получилось следующее:

      Когда я запускаю программу на Windows 10 и выбираю мышкой Item он селектируется, а если запускаю на Андроид- таблете, то я не могу выбрать (селектировать) Item.
      Подскажите пожалуйста, какие могут быть причины длы такого поведения.
      Заранее спасибо.
       
    • От Mohamed BEN AMMAR
      hello 
      i'm using delphi fmx for building android App
      i have this code for Activating The WI-FI icon from android device:
      This could be found here .
      =========== code ==================
      uses
        Androidapi.Helpers,
        Androidapi.JNI.JavaTypes,
        Androidapi.JNI.GraphicsContentViewText,
        Androidapi.JNIBridge,
        Androidapi.JNI.WifiManager;
        procedure SetWifiEnabled (AEnable: Boolean); var   Obj: JObject;   WifiManager: JWifiManager; begin   Obj: = SharedActivityContext.getSystemService (TJContext.JavaClass.WIFI_SERVICE);   if Obj = nil then     Exit;     WifiManager: = TJWifiManager.Wrap ((Obj as ILocalObject) .GetObjectID);   WifiManager.setWifiEnabled (AEnable); end; 
       
       My question is About Activating Android location:
        Is it possible to activate the service location icon from android device
       programatically without using the Location or TLocationSensor component ....?
      however I know exactly that google has been Deactivate this API since android "4" just for security reasons .....
      but i have seen many apps in playstore can activate the service without using 
      this code here ask the user for activate the location manually .... procedure TForm1.GPSSettings; {$IFDEF ANDROID} var Intent: JIntent; {$ENDIF} begin {$IFDEF ANDROID} Intent := TJIntent.Create; Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_LOCATION_SOURCE_SETTINGS); TAndroidHelper.Activity.startActivity(Intent); {$ENDIF} end; in other versions like lolipopup can show just the Allow Permission system dialog timer ....( Asking the user for Allowing this App to Activate the service location ......) 
      I have an android device with lolipopup version and i try to execute the location EMBARCADERO sample but 
      this one can not activate the service location ICON even  my device show me the Allow permission dialog where i choose yes allow
      with never ASK....
      Finally ,  I like the WI-FI code above .....
      and i'm wondering if someone here can do this task for me (i need a unit as the WI-FI code above which can offer me
      the option to activate the Service Location ICON )
      I'm ready to paid for that task .....
       
      Sincerelly: Brave.
    • От FREEFAR
      Всем доброго времени суток. 
      Казалось бы. Во время разработки и перед тем как подписали приложение сертификатом Distribution, пуши приходили норм. Но после того как прошли аудит Apple пуши куда-то пропали. FCM возвращал ошибку InvalidRegistration.
      Оказалось все достаточно просто. На сервере с которого мы отправляем пуш, В php скрипте, который отправляет пуши надо выставить
      sandbox = false
      Ура! Всем удачи)
    • От SIARHEI RAHOUSKI
      Создал проект там куча компонентов. Но разворачивании формы на весь экран компоненты размер не меняют:
      Прочитал про свойства align Но как только я выставлю Group box например left другим right все сбивается в кучу и поправить это не могу. 
      Как настроить align ?

    • От SIARHEI RAHOUSKI
      Как сделать форму с компонентами под все разрешения?

    • От SIARHEI RAHOUSKI
      Как сделать мозаику (drag/drop) ? Получается есть 2 прямоугольника (которые надо перетаскивать)  и есть ещё 2 прямоугольника (которые должны принимать) и ещё есть кнопка проверки. При нажатии определяет правильно ли разместили прямоугольники.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...