Как мне кодировать большой объект данных для URL в Swift? - PullRequest
0 голосов
/ 07 июня 2018

Я хочу открыть приложение для iOS с помощью URL-адреса, но у меня слишком длинный URL-адрес?Есть ли ограничение на длину URL?Я искал в Интернете весь день, и, похоже, нет однозначного ответа.Мой URL-адрес содержит base64EncodedString объекта и составляет около 1500 байт.

Это выглядит так:

MyApp://favorite?Class=eyJzZXR0aW5ncyI6eyJzY2FsZSI6WzAsNCwxMiwxOSwyMF0sImZyZXEiOjIyMCwidHVuaW5nIjoiZXlKelkyRnNZU0k2SWlGY2JpRWdjSFJ2YkdWdGVTNXpZMnhjYmlGY2JsQjBiMnhsYlhrZ01USWdibTkwWlNCelkyRnNaVnh1SURFeVhHNGhYRzRnTVRkY0x6RTJYRzRnT1Z3dk9GeHVJREU1WEM4eE5seHVJRFZjTHpSY2JpQTBYQzh6WEc0Z01URmNMemhjYmlBelhDOHlYRzRnTVROY0x6aGNiaUExWEM4elhHNGdOMXd2TkZ4dUlERTFYQzg0WEc0Z01sd3ZNVnh1SW4wPSIsInNvdW5kIjoiZXlKaGRIUnlhV0oxZEdWeklqcGJleUpoZEhSaFkyc2lPakl1TXprd01EQXdNREF3TURBd01EQXlMQ0prWldOaGVTSTZNQzR6TkRrNU9UazVPVGs1T1RrNU9UazVMQ0pwYzAxMWRHVmtJanBtWVd4elpTd2ljbVZzWldGelpTSTZNQzR6TlRJMU1EQXdNREF3TURBd01EQXhMQ0p3WVhKMGFXRnNJam93TGpVeExDSmhiWEFpT2pBdU1qTXpOelV3TURBd01EQXdNREF3TVN3aWMzVnpkR0ZwYmlJNk1IMHNleUpoZEhSaFkyc2lPakF1TWpVc0ltUmxZMkY1SWpvd0xqRXpOU3dpYVhOTmRYUmxaQ0k2Wm1Gc2MyVXNJbkpsYkdWaGMyVWlPakVzSW5CaGNuUnBZV3dpT2pFc0ltRnRjQ0k2TUM0M05Td2ljM1Z6ZEdGcGJpSTZNSDBzZXlKaGRIUmhZMnNpT2pBdU9URTFNREF3TURBd01EQXdNREF4TXl3aVpHVmpZWGtpT2pBdU5URXlOVEF3TURBd01EQXdNREF3TXl3aWFYTk5kWFJsWkNJNlptRnNjMlVzSW5KbGJHVmhjMlVpT2pBdU1qWXlOU3dpY0dGeWRHbGhiQ0k2TWk0eU5EazVPVGs1T1RrNU9UazVPVGdzSW1GdGNDSTZNQzR3T0RFNU9UazVPVGs1T1RrNU9UazVPU3dpYzNWemRHRnBiaUk2TUgwc2V5SmhkSFJoWTJzaU9qQXNJbVJsWTJGNUlqb3dMakkwTlN3aWFYTk5kWFJsWkNJNlptRnNjMlVzSW5KbGJHVmhjMlVpT2pBdU16Y3lOVEF3TURBd01EQXdNREF3TVN3aWNHRnlkR2xoYkNJNk5TNDNOREl3TURBd01EQXdNREF3TURFc0ltRnRjQ0k2TUM0d05UY3NJbk4xYzNSaGFXNGlPakI5WFN3aWJtRnRaU0k2SWtOc1pXRnlJRUpsYkd3aUxDSmtaWE5qSWpvaVNuVnpkQ0JoYm05MGFHVnlJR0psYkd3Z2MyOTFibVF1SW4wPSIsInRvbmUiOiJBIiwibXV0ZWQiOmZhbHNlfSwibmFtZSI6IlB0b2xlbXkgaW4gQSIsImRlc2MiOiJDbGVhciBCZWxsIn0=

Я хочу отправить текст или отправить по электронной почте этот URL, а затем нажать получателя нассылка, чтобы открыть мое приложение на своем устройстве.

Беда в том, что ссылка обернута в приложение почты и сообщений и только "MyApp: // любимый?"часть отмечена синим цветом как ссылка.Остальная часть текста не является частью ссылки.

Можно ли как-то отправить данные по URL-адресу?

1 Ответ

0 голосов
/ 07 июня 2018

Не похоже, что это имеет какое-либо отношение к самому URL или Swift.Проблема, которую вы описываете, связана с «приложением почты и сообщений».Похоже, вы отправляете сообщение в виде открытого текста и полагаетесь на детектор данных, чтобы найти его.Это требует слишком много детектора данных, что является эвристическим процессом гадания.Если вы хотите сделать его ссылкой, вы должны отправить его в виде HTML-письма и пометить его как <a href>.

Некоторые примечания по формату:

Эти данныекодируется двойным base64, что очень расточительно.Если вы кодируете только один раз, это будет:

MyApp://favorite?Class=eyJzZXR0aW5ncyI6eyJzY2FsZSI6WzAsNCwxMiwxOSwyMF0sImZyZXEiOjIyMCwidHVuaW5nIjp7InNjYWxhIjoiIVxuISBwdG9sZW15LnNjbFxuIVxuUHRvbGVteSAxMiBub3RlIHNjYWxlXG4gMTJcbiFcbiAxNy8xNlxuIDkvOFxuIDE5LzE2XG4gNS80XG4gNC8zXG4gMTEvOFxuIDMvMlxuIDEzLzhcbiA1LzNcbiA3LzRcbiAxNS84XG4gMi8xXG4ifSwic291bmQiOnsiYXR0cmlidXRlcyI6W3siYXR0YWNrIjoyLjM5MDAwMDAwMDAwMDAwMiwiZGVjYXkiOjAuMzQ5OTk5OTk5OTk5OTk5OSwiaXNNdXRlZCI6ZmFsc2UsInJlbGVhc2UiOjAuMzUyNTAwMDAwMDAwMDAwMSwicGFydGlhbCI6MC41MSwiYW1wIjowLjIzMzc1MDAwMDAwMDAwMDEsInN1c3RhaW4iOjB9LHsiYXR0YWNrIjowLjI1LCJkZWNheSI6MC4xMzUsImlzTXV0ZWQiOmZhbHNlLCJyZWxlYXNlIjoxLCJwYXJ0aWFsIjoxLCJhbXAiOjAuNzUsInN1c3RhaW4iOjB9LHsiYXR0YWNrIjowLjkxNTAwMDAwMDAwMDAwMTMsImRlY2F5IjowLjUxMjUwMDAwMDAwMDAwMDMsImlzTXV0ZWQiOmZhbHNlLCJyZWxlYXNlIjowLjI2MjUsInBhcnRpYWwiOjIuMjQ5OTk5OTk5OTk5OTk4LCJhbXAiOjAuMDgxOTk5OTk5OTk5OTk5OTksInN1c3RhaW4iOjB9LHsiYXR0YWNrIjowLCJkZWNheSI6MC4yNDUsImlzTXV0ZWQiOmZhbHNlLCJyZWxlYXNlIjowLjM3MjUwMDAwMDAwMDAwMDEsInBhcnRpYWwiOjUuNzQyMDAwMDAwMDAwMDAxLCJhbXAiOjAuMDU3LCJzdXN0YWluIjowfV0sIm5hbWUiOiJDbGVhciBCZWxsIiwiZGVzYyI6Ikp1c3QgYW5vdGhlciBiZWxsIHNvdW5kLiJ9LCJ0b25lIjoiQSIsIm11dGVkIjpmYWxzZX0sIm5hbWUiOiJQdG9sZW15IGluIEEiLCJkZXNjIjoiQ2xlYXIgQmVsbCJ9

, что экономит более 350 байт по сравнению с вашим текущим подходом.

Если вы выполните это через gzip до кодирования Base64, это 'была бы треть этого размера (~ 550 байт).А используя двоичный формат, вы, вероятно, могли бы уменьшить это значение до ~ 200 байт (после кодирования base64), даже не получив умных данных.

При этом URL-адреса вполне способны обрабатывать данные такого размера.Я подозреваю, что ваша проблема состоит в том, чтобы просто попросить эвристические системы определить URL-адрес, а не указывать, где именно он находится, с помощью HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...