Максимальная максимальная длина URL-адреса
В соответствии с заголовком, какова максимальная длина URL-адреса при использовании настраиваемой схемы URL-адреса с приложением?
например. Если я запускаю другое приложение по URL-адресу и передаю капли данных, используя что-то вроде
myappscheme://некоторый/путь данных = 0123456789abcdef
как долго эта строка может быть получена до того, как URL-адрес отключится (или система вообще откажется запускать другое приложение)?
Ответы
Ответ 1
К сожалению, ответ кажется недоступным. Макс len не определен конкретно в любой документации iOS, которую я мог найти.
Существуют ограничения, как указано выше ссылкой MSK, для длины URL-адреса URL-адреса, а не абсолютной длины строки URL-адреса. Так что, вероятно, это безопасная ставка для макс, около 2000 символов.
Однако при тестировании, казалось, не было верхнего предела. Я смог использовать 365 535 URL-адресов на iOS без проблем. Но нет необходимости в том, чтобы яблоко продолжало поддерживать его, поэтому оно "использует на свой страх и риск". Однако я бы сказал, что, основываясь на том, что многие, многие приложения используют это для передачи информации, включая большие объемы данных между приложениями, Apple, вероятно, продолжит ее поддерживать, поскольку, по-видимому, нет причин уменьшать длину.
Ответ 2
Ответы, приведенные выше, вводят в заблуждение. Документы на самом деле не упоминают об этом, но пути и имена файлов имеют ограничения по длине.
Вы можете видеть, что существует ограничение на длину пути или имени файла. Вы можете проверить их в syslimits.h
.
#define NAME_MAX 255 /* max bytes in a file name */
#define PATH_MAX 1024 /* max bytes in pathname */
Вы можете зарегистрировать их и сами увидеть:
NSLog(@"PATH MAX VALUE: %i", PATH_MAX)
Контуры ограничены 1024 байтами или 1024 символами в UTF-8.
Имена файлов в путях ограничены 255 байтами или 255 символами в UTF-8.
Я столкнулся с этой проблемой, пытаясь разобраться с файлами, закодированными японскими символами (которые значительно удлиняют URL/имена). Мое единственное решение - обрезать имя на данный момент.
Здесь вы можете увидеть на этой странице поддержки Apple, что они говорят о том, как некоторые языки (например, корейские или японские) имеют символы, которые занимают больше байтов и вызывают проблемы (они на самом деле не обеспечивают хороший способ справиться с этой проблемой хотя):
https://support.apple.com/en-is/HT202808
Ответ 3
Ссылка http://en.wikipedia.org/wiki/URI_scheme:
Название схемы состоит из последовательности символов, начинающихся с буквы и сопровождаемых любой комбинацией букв, цифр, плюс ( "+" ), периода ( "." ) или дефиса ( "-" ). Хотя схемы не чувствительны к регистру, каноническая форма является строчной, а документы, которые указывают схемы, должны делать это с помощью строчных букв. За ним следует двоеточие ( ":" ).
Нет ничего о длине.
Ответ 4
Я создал простой проект для измерения предела, на данный момент кажется, что даже колоссальный мегабайт в порядке. Было бы неразумно зависеть от этого числа на будущее, очевидно.