Серийный номер iOS Passbook: какие символы допустимы? Какая максимальная длина?

Passbook для iOS использует серийный номер, который ваши серверы могут использовать для идентификации конкретного прохода.

Кто-нибудь знает, какие символы допустимы в серийном номере сберкнижки? Я знаю, что цифры и буквы допустимы, но допустимы ли также символы/знаки препинания (например, «-» и «.»)?

И какова максимальная длина серийного номера?

Спасибо.


person DuneBug    schedule 18.01.2013    source источник


Ответы (1)


Можно использовать практически любой символ, включая «-» и «.», если серийный номер остается уникальным. Специальные символы, такие как '\', должны быть правильно экранированы, хотя они могут быть несовместимы с вашей базой данных или могут вызвать другие проблемы, если они не обрабатываются должным образом в другом месте вашего кода.

Я только что попробовал проход со следующим серийным номером, и он без проблем добавился в Passbook.

"serialNumber":"[]{}-_)(*&^%$#@!`~+=|\\\/?.><,:;"

Символы в кодировке UTF8 также подходят:

"serialNumber":"\u9127\u6a02\u611a" // Chinese characters 鄧樂愚

Что касается максимальной длины, я не знаю никаких ограничений, хотя поэкспериментировать было бы довольно просто.

Этот сериал из 400 символов тоже нормально проглатывается.

"serialNumber":"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"

Я бы рекомендовал не использовать какой-либо пользовательский ввод для серийного номера, так как это может привести к неуникальным коллизиям и открыть вас для инъекций. Кроме того, соблюдение стандартов XML — неплохая практика, позволяющая избежать каких-либо проблем, если вы измените свою архитектуру (скажем, на решение веб-сервиса, такое как AWS DynamoDB) в будущем. Кодировка Base64 вашего серийного номера обеспечит широкую совместимость.

Серийный номер также может использоваться для хранения метаданных в проходе.

"serialNumber":"UniqueID|data1|data2|data3|etc."
person PassKit    schedule 18.01.2013
comment
Спасибо! Это покрывает все основы для меня (длина 400 символов более чем достаточна для моих покупок). Я не уверен, что за это проголосовали. - person DuneBug; 18.01.2013
comment
Спасибо, что сообщили мне @DuneBug - в настоящее время оценка +4 -1, как только ваша репутация превышает 1k, вы можете разделить оценки на + и - голоса. - person PassKit; 18.01.2013