Из документа об удалении городского дирижабля я получил следующую информацию:
Нам жаль, что вы уходите, но мы хотим, чтобы ваш переход прошел гладко. Вот некоторые вещи, о которых вам нужно позаботиться: Выполните вызов API, чтобы получить доступ ко всем токенам вашего устройства и регистрационным идентификаторам GCM. Почему? Это обеспечит возможность переноса этих токенов и идентификаторов, чтобы устройства, которые уже включили push-уведомления на iOS, не получали приглашения сделать это снова, если у клиента есть идентификатор пакета приложений. http://docs.urbanairship.com/api/ua.html#device-listing.
Мне удалось получить идентификаторы APID Android, зарегистрированные в моем приложении, с помощью GET / api / apids и информации под заголовком «Список APID» по адресу http://docs.urbanairship.com/api/ua.html#списокустройств. Однако я не уверен, как использовать APID в Firebase Cloud Messaging. Я хочу получить все токены моего устройства и регистрационные идентификаторы Firebase Cloud Messaging от Urban Airship, но не значения, уникальные для Urban Airship. У меня сложилось впечатление, что APID уникальны для городского дирижабля точно так же, как идентификаторы каналов (полученные на Java с помощью UAirship.shared().getPushManager().getChannelId()
) также уникальны для городского дирижабля. Я пытаюсь экспортировать токены устройств из Urban Airship, чтобы использовать их из Firebase Cloud Messaing независимо от Urban Airship. Другими словами, я хочу перенести устройства с Urban Airship. Есть ли способ получить токены устройства в том же формате, в котором их возвращает метод FirebaseInstanceId.getInstance().getToken()
? Этот формат будет выглядеть так:
f32EVa9yfbo: AJA91bFg53ZuQLWYSDDqPlkf4a88Lu6Gp4DoXVDJ2wRIlnjDngq0UdNnlSi7wxbbut6YX7Z1kmvyS3bhk_Zrl-1doHCf5XFdOXSFWNZo_Zrl-1doHCf5XFdOXBFJTJNZo_XFdXFdXTJNZo_CXFdXFDXTJNZo_CXFdXTJTJNZo_XFdXFDXTJNZ0
Спасибо.
ОБНОВЛЕНИЕ 1:
Я нашел способ получить регистрационный идентификатор GCM:
Шаг 1. Использование GET /api/apids
для получения идентификаторов Android APID, зарегистрированных в этом приложении, вместе со связанными метаданными:
C:\curl>curl -k https://go.urbanairship.com/api/apids/ -u "<AppKey>:<MasterSecret>" -H "Content-Type: application/json" -X GET |more
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0{
"next_page" : "https://go.urbanairship.com/api/apids/?start=0584f193-07a0-49f7-b2d3-92f8e05ur6b5&limit=1000",
"apids" : [ {
"tags" : [ "City-1" ],
"alias" : null,
"active" : false,
"created" : "2017-07-17 23:02:40",
"apid" : "00027235-66b4-4433-a40f-254532d8abd1"
}, {
"tags" : [ "City-1" ],
"alias" : null,
"active" : true,
"created" : "2017-09-14 15:41:35",
"apid" : "00036ca3-d628-4353-be92-0dc6fe03afc6"
}, {
"tags" : [ "city-2" ],
"alias" : null,
"active" : true,
"created" : "2017-09-18 16:38:39",
"apid" : "000222f5-824a-42f2-8ba0-c58b4c2fb2a2"
}, {
"tags" : [ "city-2" ],
-- More --
В результате получился длинный массив, содержащий множество apid.
Шаг 2. Использование GET /api/apids/(APID)
для получения информации об определенном Android APID
C:\curl>curl -k https://go.urbanairship.com/api/apids/000222f5-824a-42f2-8ba0-c58b4c2fb2a2 -u "<AppKey>:<MasterSecret>" -H "Content-Type: application/json" -X GET
{"last_registration":"2017-12-14 17:36:05","created":"2017-10-19 17:05:18","gcm_registration_id":"bIY0GH6-hqk:APA91bH2xUBtlfga2kBG0GjvjbBYrI3M72BbXc3tTo7pSuY61w1wrgOeTbEqEd5J2SmUcQx25uU8TafWk2tDP7Vf7bc0ZsQrtENlFJDNIb--LUVuZimjOegyaepPYuQvm_9gmJDsviwY","apid":"000222f5-824a-42f2-8ba0-c58b4c2fb2a2","alias":"","active":true,"tags":["city-2"]}
Теперь я вижу, что что-то возвращается в формате, который Firebase Cloud Messaging может распознать как идентификатор токена устройства и который я могу использовать для отправки push-уведомления из Firebase Cloud Messaging без Urban Airship:
bIY0GH6-hqk: APA91bH2xUBtlfga2kBG0GjvjbBYrI3M72BbXc3tTo7pSuY61w1wrgOeTbEqEd5J2SmUcQx25uU8TafWk2tDP7Vf7rt_imlFuU8TafWk2tDP7Vf7rt_imlFuJsQugyDNGyVf7rtbimlFuJsQugydnvf7vf7bjdjdjdjdjdjdjdjdjdnvf7vf7bmc0ZsQdn
Теперь я вижу сложность в том, что, как вы можете видеть выше, мне пришлось предоставить конкретный APID, чтобы получить gcm_registration_id
для этого APID. Когда я использую только GET /api/apids
, как я привел пример в шаге 1 выше, я не получаю никакого gcm_registration_id
в возвращаемом массиве. Это делает процесс получения gcm_registration_id
значений чрезвычайно утомительным и долгим, потому что мне пришлось бы использовать GET /api/apids/(APID)
, как в примере, который я написал на шаге 2, для каждого APID, возвращаемого «GET / api / apids», который я написал на шаге 1. Если у меня есть, например, 70 000 значений APID, мне пришлось бы проделать этот утомительный процесс 70 000 раз, если я не напишу сценарий или какой-либо способ автоматизировать процесс загрузки APID. Возможно ли, что когда я использую GET /api/apids
, как на шаге 1, я могу сразу получить gcm_registration_id
значения как часть массивов в метаданных? Это упростило бы процесс загрузки значений gcm_registration_id
, чтобы я мог использовать их в Firebase Cloud Messaging.
Кроме того, я хотел бы получить подтверждение, являются ли значения gcm_registration_id
, которые я вижу, значениями идентификатора токена устройства, которые я могу использовать в Firebase Cloud Messaging для отправки push-уведомлений на устройства без использования Urban Airship.
ОБНОВЛЕНИЕ 2:
Проблема в том, что мне нужно использовать https://go.urbanairship.com/api/apids/{apid}
, чтобы увидеть значения gcm_registration_id
, и я не хочу этого делать, потому что, если бы у меня было 70000 зарегистрированных устройств, мне пришлось бы сделать 70000 запросов cURL, предоставляющих каждое из 70000 {apid}
значений 70000 раз . Это займет вечность! Если я использую только https://go.urbanairship.com/api/apids/
без {apid}
, возвращаемый массив не будет содержать gcm_registration_id
значений.
ОБНОВЛЕНИЕ 3:
Это решение, пишущее код Java с запросом к https://go.urbanairship.com/api/apids, чтобы получить и сохранить массив значений APID, а затем передать каждый элемент этого массива как {apid}
, чтобы затем выполнить цикл запросов к https://go.urbanairship.com/api/apids/{apid}
, чтобы получить все токены устройства GCM / FCM, зарегистрированные в моем приложении. ? Я предполагаю, что один запрос cURL к https://go.urbanairship.com/api/apids может быть недостаточно для получения всех токенов устройств GCM / FCM, зарегистрированных в моем приложении; а запросы, массивы и циклы в коде Java могут быть необходимыми для получения тех токенов, которые я пытаюсь загрузить. Буду признателен, если кто-нибудь подтвердит это.
gcm_registration_id
. Кроме того, я связался со службой поддержки Urban Airship, чтобы узнать об идентификаторах каналов, и они сказали: «Идентификаторы каналов уникальны для Urban Airship». Однако вы можете экспортировать токены устройств из UA. Я приложил наш вспомогательный документ, в котором даются некоторые полезные рекомендации по переносу устройств с UA. Внештатный док. ссылка на UA API. - person Jaime Montoya   schedule 19.12.2017