Парсить клики и доставку на старом формате пушей, если в пуш-уведомление добавлены кастомные параметры от клиентов#3394
Проверка на количество ключей == 1 в userInfo была нужна для возможности отличить форматы пушей друг от друга.
Старый формат пушей
```
{
"aps" : {
"mutable-content" : 1,
"alert" : {
"title" : "Привет, это push! 😄😄",
"body" : "Тестовый текст пуша, смотри, я помещаюсь нормально?\nТут проверка в бэкграунд режиме"
},
"content-available" : 1,
"sound" : "default"
},
"payload" : "",
"imageUrl" : "https:\/\/mobpush-images.mindbox.ru\/Mpush-test\/223\/59c92f76-c417-4cf5-a468-af49d8296c49.gif",
"uniqueKey" : "4c5e2a09-fae6-4c51-adc1-3224c98e2aef",
"clickUrl" : "https:\/\/glvrd.ru\/",
"buttons" : [
{
"url" : "https:\/\/pushok.mindbox.ru\/?b=1&k=2",
"text" : "Кнопка 1😡",
"uniqueKey" : "cff05f38-6df4-4a10-9859-ea3bf0a65068"
},
{
"url" : "https:\/\/pushok.mindbox.ru\/?b=1&k=3",
"text" : "Кнопка 2😡",
"uniqueKey" : "4df5a10c-d5d1-4059-8e59-df3f12aec757"
}
]
}
```
Новый формат пушей
```
{
"clickUrl": "https://mindbox.ru/",
"payload": "{\n \"payload\": \"data\"\n}",
"uniqueKey": "4cccb64d-ba46-41eb-9699-3a706f2b910b",
"imageUrl": "https://mobpush-images.mindbox.ru/Mpush-test/63/5933f4cd-47e3-4317-9237-bc5aad291aa9.png",
"buttons": [
{
"url": "https://developers.mindbox.ru/docs/mindbox-sdk",
"text": "Documentation",
"uniqueKey": "1b112bcd-5eae-4914-8842-d77198466466"
}
],
"aps": {
"mutable-content": 1,
"alert": {
"title": "Test title",
"body": "Test description"
},
"content-available": 1,
"sound": "default"
}
}
```
В старом формате 1 блок `aps` и уже внутри него лежит ключ uniqueKey, по которому идет определение от Mindbox это пуш или нет, и когда определялось что ключ один то весь userInfo подменялся всем блоком aps -> `let innerUserInfo = userInfo["aps"] as? [AnyHashable: Any]; self.userInfo = innerUserInfo`. А в новом формате всё размазано равномерно по верхнему слою словаря, поэтому там просто делали `self.userInfo = userInfo`.
Пофиксил это путем проверки у блока aps наличия ключа `uniqueKey`. Не стал привязываться к количеству элементов у объекта, так как это будет стремновато. Проще переделать здесь проверку определив формат, чем сохранять всегда любой `userInfo` а потом в `decode` искать нужный ключ по всем уровням вложенности словаря.
Добавил пару логов. Может их на какой-то более грамотный вариант переделать, чтобы было легко отличать одно от другого?
Парсить клики и доставку на старом формате пушей, если в пуш-уведомление добавлены кастомные параметры от клиентов#3394
Проверка на количество ключей == 1 в userInfo была нужна для возможности отличить форматы пушей друг от друга.
Старый формат пушей