• 0
Anatoliy

Пуши в IOS

Вопросы

Здравствуйте.

Делаю все согласно блога ZuBy:

http://blog.rzaripov.kz/2017/02/firebase-android-ios.html

http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html

для попытки получать пуши на IOS. С Андроид все ОК.

Код отрабатывает нормально переменная FPushService инициализируется. Все выглядит нормально. Однако пуши не приходят. Пробовал отправить с консоли - результата нет, тишина. Посмотрел таблицу PushTokens новая запись не появилась. Похоже что-то упущено, однако ошибок никаких нет, поэтому непонятно куда копать...

Может подскажите, на что обратить внимание?

 

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


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

31 ответ на этот вопрос

  • 0

на форуме уже были обсуждения по этому поводу, также комменты в блоге

вроде тут это обсуждалось

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


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

Прочитал, но видимо туплю не вижу ответа...

Цитата

Из БЛОГА цитата:
Проблема с отправкой была не только при использовании php-скрипта, но и при попытках отправки через консоль Firebase. Даже при посыле на все iOS-устройства (без указания каких-либо конкретных токенов). Проблема в конце-концов решилась заведением под iOS отдельного проекта в Firebase, получении своего Server key.

Я сделал отдельный проект в Firebase для IOS. Правда не понимаю, а зачем нам новый Server key если согласно статьи он в проекте для IOS не используется, а используется для Андроид. В IOS используем строку $config['app']['name'] = "имя пакета";

Короче уткнулся я в комментарий из блога:

Цитата

Lunar Tecnologi2
The DeviceToken variable is empty, when the operating system is IOS. Android works perfectly. Would you help me?

И присоединяюсь к автору Lunar Tecnologi2 с тем же вопросом: Would you help me? :)

 

 

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


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

Я сделал отдельный проект в Firebase для IOS. Правда не понимаю, а зачем нам новый Server key если согласно статьи он в проекте для IOS не используется, а используется для Андроид. В IOS используем строку $config['app']['name'] = "имя пакета";

кто вам это сказал? Эта строчка Вам о чем нить говорит?

 $headers = array('Authorization: key=' . $server_key, 'Content-Type: application/json');

 

10 минут назад, Anatoliy сказал:

И присоединяюсь к автору Lunar Tecnologi2 с тем же вопросом: Would you help me? :)

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

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


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

Тут, как я понял, похожая проблема, но на java:

https://stackoverflow.com/questions/42869452/ios-device-token-sent-empty-to-database

Вроде для IOS 10 надо что-то сделать дополнительно, но не понятно как.... у меня IOS 10.2.1...

Цитата

I am not sure in which ios version you are testing or developing but for iOS 10 you need to do additional setup for retrieve/get device token.

 

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

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


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

кто вам это сказал? Эта строчка Вам о чем нить говорит?

Я не совсем понимаю, согласно статье мы в ручную заполняем это:

$config['db']['host'] = "ххх"; // localhost "расположение БД"
$config['db']['name'] = "ххх"; // "название БД";
$config['db']['user'] = "ххх"; // "пользователь";
$config['db']['pass'] = "ххх"; // "пароль к БД";

$config['push']['server_key'] = "Ключ из Андроид проекта firebase";
$config['app']['name'] = "имя пакета"; //для проекта IOS

А где мы вставляем ключ server_key если проект IOS?

 

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

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


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

$config['push']['server_key'] = "Ключ из Андроид проекта firebase";
$config['app']['name'] = "имя пакета"; //для проекта IOS

А где мы вставляем ключ server_key если проект IOS?

у меня в статье один проект для двух платформ, поэтому server_key один

если вы делаете разные проекты в консоле, то модернизируйте серверную часть или сделайте разные папки для ios/android

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


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

у меня в статье один проект для двух платфом, поэтому server_key один и тот.

если вы делаете разные проекты в консоле, то модернизируйте серверную чать или сделайте разные папки для ios/android

Ясно. Спасибо. Разнесу по разным папкам т.к. серверную часть из-за не знания PHP модернизировать не смогу.

 

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

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


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

Не получается с IOS никак...

Скопировал сервер в новую папку. Изменил ссылку запроса и ключ в api.php. Делаю пуш и получаю ERROR Пуши не отправлены... :(

Уперлись мы с Lunar Tecnologi2 в "любимый" IOS. :)

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

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


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

1. server_key в новой папке установлен в ios ключ проекта в api.php

2. С учетом новой папки изменен метод RegisterDevice.

3. Изменена ссылка запроса пуша с учетом новой папки.

4. CFBundleIdentifier установлен как и и $config['app']['name']

 

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


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

с сертификатом проблем нет? на устройстве разрешен прием пуш для приложения?

тест же на реальном устройстве?

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


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

Собран реальный стенд с IOS10. Для приложения включен режим прием пушей.

Сертификаты в консоли встали нормально....

Упущена какая-то деталь для IOS10, наверное...

P.S.

Для IOS проекта важны отличия от андроид только тут:

$config['push']['server_key'] = "";
$config['app']['name'] = "";

Идентификатор отправителя FAndroidServerKey используем в андроид проекте.

Все верно?

 

 

 

push.jpg

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

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


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

да вроде все верно, когда на устройстве запускаете есть запрос на разрешение принимать пуши?

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


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

В IOS10 не получается получить пуши (XCode 8). Изыскания привели к блогу Марко Кенту: http://blog.marcocantu.com/blog/delphi-blog-week-47.html

Цитата

Delphi Blogs of the Week/Month 47 


Is there a delphi berlin fix for this issue?
http://stackoverflow.com/questions/39504334/push-notification-not-receiving-in-ios-10 

Sorry to dump the issue here,. but it's a weird issue
so far.

Дискуссия по ссылке stackoverflow вокруг java кода, не понял есть ли решение для студии Берлин и пушей в IOS10... :(

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

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


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

Кто нибудь пробовал создавать приложения с пушами в связке - Токио плюс устройство с IOS10? Каковы результаты? Спасибо.

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


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

Те у кого успешно работают пуши в иос не могли бы выложить скришот, чтобы сравнить списки фреймворков.

P.S.

В этой статье сказано что для пушей надо еще кучу добавить:

http://delphiworlds.com/2017/05/adding-firebase-cloud-messaging-mobile-apps-part-2/

AdSupport
AudioToolbox
AVKit
CoreAudio
CoreMIDI
MediaToolbox
Metal
SystemConfiguration
UserNotifications

Но автор идет сложным путем, а у ZuBy в статье все просто и понятно. И он не пишет в блоге, что надо что либо добавлять...

P.P.S.

Похоже для иос 10 надо таки добавить этот фреймоврк судя по описанию:

https://code.tutsplus.com/tutorials/an-introduction-to-the-usernotifications-framework--cms-27250

но хотелось бы мнение гуру узнать, а не гадать на кофейной гуще... Спасибо.

 

sdk.jpg

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

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


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

специально для тех, у кого не получается пуши в iOS (10+)

следуя статье выполнить настройку проекта в консоли firebase

Рабочая связка Delphi Berlin Up2 + Xcode 8.1 (на момент написания была такая конфигурация и остается до сих пор такой)

Сегодня я собрал проект под iOS и выложил в АппСтор (проходит модерацию)

Вот скриншот с реального девайса, установленного через TestFlight

 

photo_2017-08-05_20-12-43.jpg

 

тыц

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


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

Спасибо за исследование!

Теперь понятно, что мы и  автор этой статьи: ссылка

где-то делаем ошибку, ибо автор утверждает, что для иос только его метод работает.

Вопросы:

1. Как XCode c версии 8.0 обновить до 8.1? Опыта в этом вопросе нет.

2. Вы когда делаете из статьи: 27) Далее находим их в Связке ключей и делаем экпорт (можно установить пароль) то вы просто экспортируете корень узла или раскрываете его выделяете сам узел и приватный ключ и делаете экспорт?

3. Есть ли отличия фреймворков из картинки выше с вашими настройками?

Спасибо.

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


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

1. Как XCode c версии 8.0 обновить до 8.1? Опыта в этом вопросе нет.

29 минут назад, Anatoliy сказал:

2. Вы когда делаете из статьи: 27) Далее находим их в Связке ключей и делаем экпорт (можно установить пароль) то вы просто экспортируете корень узла или раскрываете его выделяете сам узел и приватный ключ и делаете экспорт?

с приватным ключом

30 минут назад, Anatoliy сказал:

3. Есть ли отличия фреймворков из картинки выше с вашими настройками?

если вы ничего сами не добавляли, то разницы не будет.

выполните все что выше написано в постах, должно заработать

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


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

Спасибо. Первая проблема обнаружена:

Цитата

с приватным ключом

 

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

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


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

Если экспортировать узел в развернутом виде, с заданием пароля, то затем не удается загрузить его в FCM. Причина не понятна. :(

 

 

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

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


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

хотя сейчас посмотрел в статье, экспорт делаю только одного элемента

главное что у вас к сертификату приватный ключ привязан

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


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

На хостинге PHP7.1

В лог пишет предупреждение:

[Thu Aug 31 10:15:53 2017] [warn] [client 92.112.55.71] mod_fcgid: stderr: PHP Parse error:  syntax error, unexpected '[' in /pushTest/push.php on line 36

Как правильно в коде убрать это замечание?

Eще добавил в файл push.php строку print_r($result); перед строкой if ($result === false) return false; в функции pushSend. Ответ тогда такой:

{"multicast_id":6484835755858346767,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}{"status":"ERROR","text":"Пуши не отправлены"}

 

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

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


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

Впервые получил пуш на IOS...

Ответ в фаерфоксе:

JSON: SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 144 of the JSON data

Необработанные данные: {"multicast_id":4877008421064121783,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1504184482619837%652001c8652001c8"}]}{"status":"OK"}

и пуш приходит...

Изменения в файле ZuBy push.php: 'sandbox' => true,

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

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