Apple рд╡реЙрд▓реЗрдЯ рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдб рдХреЛ рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП

рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЙрд▓реЗрдЯ CIS рдореЗрдВ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реЗрд╡рд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреВрд╕рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЧреНрд░рд╛рд╣рдХ "рд╡реЙрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд░реЗрдВ" рдХрд╛рд░реНрдп рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рдж рдХреЛ рдЗрд╕рдореЗрдВ рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░реВрдВред


рдмрдЯреБрдЖ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдлреЛрди (рдЯрд┐рдХрдЯ, рдбрд┐рд╕реНрдХрд╛рдЙрдВрдЯ рдХрд╛рд░реНрдб, рдЖрджрд┐) рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдб рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрддреНрдкрд╛рдж рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдб / рдЯрд┐рдХрдЯ / рд╕рджрд╕реНрдпрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдлреЛрди рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ! рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ - рдиреАрдЪреЗ рдкрдврд╝реЗрдВред


рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ .pkpass рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдб рдХреЛ рд╡реЙрд▓реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред


рдирдХреНрд╢рд╛ рд╕рдВрд░рдЪрдирд╛


рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдирдХреНрд╢рд╛ рдХреНрдпрд╛ рд╣реИ? рдирдХреНрд╢рд╛ .pkpass рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдЗрд╕рдореЗрдВ рдХрд╛рд░реНрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реИред


рдлрд╝рд╛рдЗрд▓рдирд┐рдпреБрдХреНрддрд┐
background.pngрдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ред
footer.pngрдмрд╛рд░рдХреЛрдб рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЫрд╡рд┐
icon.pngрд╕реВрдЪрдирд╛рдУрдВ рдФрд░ рдкрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЗрдХрди
logo.pngрдХрд╛рд░реНрдб рд▓реЛрдЧреЛред рд╢реАрд░реНрд╖ рдмрд╛рдПрдБ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
manifest.jsonрд╕рднреА рд╢рд╛рдорд┐рд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА
рд╣рд╕реНрддрд╛рдХреНрд╖рд░PKCS7 рд╣рд╕реНрддрд╛рдХреНрд╖рд░
pass.jsonрдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдирдХреНрд╢рд╛ рдЬрд╛рдирдХрд╛рд░реА
strip.pngрдХрд╛рд░реНрдб рдХреЗ рдореБрдЦреНрдп рд╡рд┐рд╡рд░рдг рдХреЗ рдкреАрдЫреЗ рд╕реНрдерд┐рдд рдЫрд╡рд┐
thumbnail.pngрдЕрддрд┐рд░рд┐рдХреНрдд рддрд╕реНрд╡реАрд░ (рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ)

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдб рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:


  • рдмреЛрд░реНрдбрд┐рдВрдЧ рдЯрд┐рдХрдЯ: рд╡рд┐рдорд╛рди рдпрд╛ рдЯреНрд░реЗрди рд╕реЗред рдЖрдорддреМрд░ рдкрд░ рдХреВрдкрди рдПрдХ рдпрд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ;
  • рдХреВрдкрди: рдХреВрдкрди рдФрд░ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП;
  • рдЗрд╡реЗрдВрдЯ рдЯрд┐рдХрдЯ: рдПрдХ рдЗрд╡реЗрдВрдЯ рдФрд░ рдкреВрд░реЗ рд╕реАрдЬрди рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
  • рдбрд┐рд╕реНрдХрд╛рдЙрдВрдЯ рдХрд╛рд░реНрдб: рд╡рдлрд╛рджрд╛рд░реА рдХрд╛рд░реНрдб, рдЫреВрдЯ рдпрд╛ рдЙрдкрд╣рд╛рд░ рдХрд╛рд░реНрдб;
  • рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдХрд╛рд░реНрдб: рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдЯреНрд░реЛ рд╕реЗ рдпрд╛рддреНрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдб рдпрд╛ рдЬрд┐рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕ред

рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдбреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд╕рдмрд╕реЗ рдКрдкрд░ рдирд╛рдорд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдмреЛрд░реНрдбрд┐рдВрдЧ рдкрд╛рд╕



рдХреВрдкрди



рдЗрд╡реЗрдВрдЯ рдЯрд┐рдХрдЯ



рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдХрд╛рд░реНрдб



рдбрд┐рд╕реНрдХрд╛рдЙрдВрдЯ рдХрд╛рд░реНрдб



Pass.json рд╕рдВрд░рдЪрдирд╛


рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░ред рдХрдВрдЯреЗрдирд░ рдкрд╛рд╕ рдЯрд╛рдЗрдк рдЖрдИрдбреА, рдЯреАрдо рдЖрдИрдбреА, рд╕рдВрдЧрдарди рдХрд╛ рдирд╛рдо, рдЖрджрд┐ред
рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреАред рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде "рд╕рдВрдмрджреНрдз" рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреБрдВрдЬреА "рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐" рдХрд╛рд░реНрдбред
рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреА рдХреБрдВрдЬреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬрд╣рд╛рдВ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЙрд╕ рдШрдЯрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдЗрд░рд╛рджрд╛ рд╣реИред
рдХреБрдВрдЬреА рд╢реИрд▓реА рд╣реИред рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╡реЙрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП 5 рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдб рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдП рдЧрдП рдереЗред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рдЕрдкрдиреА рд╢реИрд▓реА рд╣реИред рдРрд╕реА рдХреБрдВрдЬреА рдХреЛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд╛рд░реНрдб рдХреЗ рджреГрд╢реНрдп рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреАред рд╕реНрдкрд╖реНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдмрд╛рд░рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреБрдВрдЬреАред рдЖрдк рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
рдПрдирдПрдлрд╕реА рдХреБрдВрдЬреАред Apple рдкреЗ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рджреЗрдВред


рдЕрдм рд╕рдм рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред


рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░


JSON рдореЗрдВ рдХреБрдВрдЬреАрдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╡рд┐рд╡рд░рдг
рд╡рд┐рд╡рд░рдгрд╕реНрдЯреНрд░рд┐рдВрдЧред
рд╡реИрд╢реНрд╡реАрдХреГрдд
рдирдХреНрд╢реЗ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдгред рднреВрдордВрдбрд▓реАрдХреГрддред
formatVersionрдЗрдВрдЯрдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рд╕рдВрд╕реНрдХрд░рдгред рдорд╛рди 1 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
ORGANIZATIONNAMEрд╕реНрдЯреНрд░рд┐рдВрдЧред
рд╡реИрд╢реНрд╡реАрдХреГрдд
рдХрд╛рд░реНрдб рдЬрд╛рд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЧрдарди рдХрд╛ рдирд╛рдоред
passTypeIdentifierрддрд╛рд░рдЯрд╛рдЗрдк рдЖрдИрдбреА рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдЕрдХрд╛рдЙрдВрдЯ рдкрд╛рд╕ рдХрд░реЗрдВред
serialnumberрддрд╛рд░рд╕рд┐рдВрдЧрд▓ рдХрд╛рд░реНрдб рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░
teamIdentifierрддрд╛рд░рд╡рд┐рдХрд╛рд╕ рджрд▓ рдХреА рдЯреАрдо рдЖрдИ.рдбреА.

рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА


JSON рдореЗрдВ рдХреБрдВрдЬреАрдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╡рд┐рд╡рд░рдг
associatedStoreIdentifiers[рдЗрдВрдЯ]рд╡реИрдХрд▓реНрдкрд┐рдХред рдХрд╛рд░реНрдб рд╕реЗ рдЬреБрдбрд╝реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЖрдИрдбреАред рд╡рд░реНрддрдорд╛рди рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдкрд╣рд▓рд╛ рд╣рдореЗрд╢рд╛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
appLaunchURLрддрд╛рд░URL рдЬреЛ рдЦреЛрд▓рдиреЗ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рд╕реНрдЯрд╛рдЗрд▓ рдХреАрдЬ


JSON рдореЗрдВ рдХреБрдВрдЬреАрдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╡рд┐рд╡рд░рдг
primaryFields[JSON]рдирдХреНрд╢реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реАред
рджреНрд╡рд┐рддреАрдпрдХ рдХреНрд╖реЗрддреНрд░[JSON]рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реАред
auxiliaryFields[JSON]рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдбред рдРрдЪреНрдЫрд┐рдХ
headerFields[JSON]рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рд╢реАрд░реНрд╖рдХред рдпрд╣ рддрдм рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХрд╛рд░реНрдб рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
auxiliaryFields[JSON]рдирдХреНрд╢реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реАред
transitTypeрддрд╛рд░рдЯрд┐рдХрдЯ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд╣рди рдХрд╛ рдкреНрд░рдХрд╛рд░ред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ:
PKTransitTypeAir,
PKTransitTypeBoat,
PKTransitTypeBu`,
PKTransitTypeGeneric,
`PKTransitTypeTrain`ред
backFields[JSON]рдирдХреНрд╢реЗ рдХреЗ рдкреАрдЫреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЦреЗрддреЛрдВ рдХреА рд╕рд░рдгреА

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ JSON рдХрд╛ рдирд┐рдореНрди рд░реВрдк рд╣реИ:


"key" : "value1", "label" : "value2", "value" : "value3" 

рдорд╛рди рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдорд╛рди рдпрд╛ рддреЛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдХреЗ рд╕рд╛рде рдореБрджреНрд░рд╛рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрд╕рд┐рд╕реНрдЯреЗрдВрдЯрдлрд┐рд▓реНрдб рдФрд░ рд╕реЗрдХреЗрдВрдбрд░реАрдлрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП, рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрдирдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред


рд╡рд┐рдЬрд╝реБрдЕрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдХреБрдВрдЬреА


JSON рдореЗрдВ рдХреБрдВрдЬреАрдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╡рд┐рд╡рд░рдг
рдмрд╛рд░рдХреЛрдб[JSON]рдмрд╛рд░рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред
рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧрд░рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВрдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧред (# Fa32e4)
foregroundColorрд░рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВрдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдмрд▓ рд░рдВрдЧ
groupingIdentifierрддрд╛рд░рдШрдЯрдирд╛ рдЯрд┐рдХрдЯ рдФрд░ рдкрд░рд┐рд╡рд╣рди рдЯрд┐рдХрдЯ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХред рдПрдХ рд╣реА рд╢реИрд▓реА рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдб - рдкрд╛рд╕рдЯрд╛рдЗрдкрдбрд╛рдЗрдВрдЯрд┐рдлрд╛рдпрд░ рдФрд░ рдЧреНрд░реБрдкрд┐рдВрдЧрдЖрдИрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░ - рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
labelColorрд░рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВрдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд▓реЗрдмрд▓ рдХрд░реЗрдВ
logoTextрд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреНрд░рд┐рдВрдЧрд▓реЛрдЧреЛ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкрд╛рда

рдмрд╛рд░рдХреЛрдб


рдирдХреНрд╢реЗ рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ред рдПрдХ рдХрд╛рд░реНрдб рдкрд╣рдЪрд╛рди рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реАрд╡рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рднреМрддрд┐рдХ рдХрд╛рд░реНрдб рдирдВрдмрд░ рдпрд╛ рдЯрд┐рдХрдЯ рд╕рдВрдЦреНрдпрд╛)ред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕реНрдХреИрдирд░ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рд╕рд╣реА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдХреЛрдб рдкрдврд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред


JSON рдореЗрдВ рдХреБрдВрдЬреАрдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╡рд┐рд╡рд░рдг
altTextрддрд╛рд░рдпрджрд┐ рдмрд╛рд░рдХреЛрдб рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ рддреЛ рдмрд╛рд░рдХреЛрдб рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд╛рдаред
рдкреНрд░рд╛рд░реВрдкрддрд╛рд░рдмрд╛рд░рдХреЛрдб рдкреНрд░рд╛рд░реВрдкред рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ: PKBarcodeFormatQR,
PKBarcodeFormatPDF417,
PKBarcodeFormatAztec,
PKBarcodeFormatCode128
рд╕рдВрджреЗрд╢рддрд╛рд░рдмрд╛рд░рдХреЛрдб рдореЗрдВ рдХреВрдЯ рдпрд╛ рдХреВрдЯ рд╕рдВрдЦреНрдпрд╛ред
messageEncodingрддрд╛рд░рд╕рдВрджреЗрд╢ рдПрдиреНрдХреЛрдбрд┐рдВрдЧред рдЖрдорддреМрд░ рдкрд░ iso-8859-1 рд╣реИ

рд╕реНрдерд╛рди


рдпреЗ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЙрд╕ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рднреАрддрд░ рдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


JSON рдореЗрдВ рдХреБрдВрдЬреАрдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╡рд┐рд╡рд░рдг
altitureрддрд╛рд░рдпрджрд┐ рдмрд╛рд░рдХреЛрдб рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ рддреЛ рдмрд╛рд░рдХреЛрдб рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд╛рдаред
рдЕрдХреНрд╖рд╛рдВрд╢рджреЗрд╢рд╛рдиреНрддрд░рдЪреМрдбрд╝рд╛рдИ
рд▓реЙрдиреНрдЧрдЯрд┐рдЯреНрдпреВрдбрджреЛрд╣рд░рд╛рдЪреМрдбрд╝рд╛рдИ
relevantTextрддрд╛рд░рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд╛рда рдЬреЛ рдЙрд╕ рд╕рдордп рд▓реЙрдХ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдб рдХреА рд╕реАрдорд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред

рдкреАрдЫреЗ рдХреА рддрд░рдл


рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд░рд┐рд╡рд░реНрд╕ рд╕реВрдЪрдирд╛ рднрд╛рдЧ рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЙрдкрдпреЛрдЧ рдХреА рд╢рд░реНрддреЗрдВ, рдСрдЯреЛ-рдЕрдкрдбреЗрдЯ рдиреАрддрд┐, рд╕рдВрдкрд░реНрдХ рд╡рд┐рд╡рд░рдг рдФрд░ рдХрд╛рд░реНрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд▓рд┐рдВрдХред рдЖрдВрдХрдбрд╝рд╛ рдкрд╛рд╕.рдЬреЗрд╕рди рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдФрд░ рдирдХреНрд╢реЗ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рд╕рд╛рдЗрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдпрджрд┐ рдореВрд▓реНрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд┐рдВрдХ, рдлреЛрди рдирдВрдмрд░ рдЖрджрд┐ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред



рдПрдХ рдирдХреНрд╢рд╛ рдмрдирд╛рдПрдБред рднрд╛рдЧ реи


рддреЛ, рдЪрд┐рддреНрд░ рддреИрдпрд╛рд░ рд╣реИрдВ, рдкрд╛рд╕.рдЬрд╕рди рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╕рднреА рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдШреЛрд╖рдгрд╛рдкрддреНрд░ рднрд░реЗрдВред (рджреЗрдЦреЗрдВ рддрд╛рд▓рд┐рдХрд╛ 1), рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд╕рднреА рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдФрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ:


 . . . . . . "pass.json" = 303c753abc39aa732ec74643d6db28348fe8a823; "strip.png" = 736d01f84cb73d06e8a9932e43076d68f19461ff; "strip@2x.png" = 468fa7bc93e6b55342b56fda09bdce7c829d7d46; . . . . . . 

рдЗрд╕ рдмрд┐рдВрджреБ рд╕реЗ, рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ SHA рдЧрд▓рдд рд╣реЛрдЧрд╛; рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, SHA рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдПрдХ рдкрд╛рд╕ рдЯрд╛рдЗрдк рдЖрдИрдбреА рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрд╡рд┐рдЬрдирд┐рдВрдЧ рдкреНрд░реЛрдлрд╛рдЗрд▓ред



рдЗрд╕рдХреЗ рдмрд╛рдж, рдХрд┐рдЪреЗрди рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ Apple рд╡рд░реНрд▓реНрдбрд╡рд╛рдЗрдб рдбреЗрд╡рд▓рдкрд░ рд░рд┐рд▓реЗрд╢рди рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ (WWDR) рдХреЛ .pem рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВред



рд╡рд╣рд╛рдБ рд╕реЗ, рд╣рдо рдирд┐рд░реНрдорд┐рдд рдкрд╛рд╕ рдЯрд╛рдЗрдк рдЖрдИрдбреА рдХреЛ .p12 рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣рд╛рдЙрд╕рдХреАрдкрд░ рдЖрдкрдХреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧрд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рднреА рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ редjson, pass.json рдФрд░ рдЪрд┐рддреНрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЭреВрда рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЕрдм рдЖрдкрдХреЛ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд╛рд╕ рдЯрд╛рдЗрдк рдЖрдИрдбреА рдФрд░ рдХреБрдВрдЬреА рдХреЛ .pem рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВред


 openssl pkcs12 -in certificate.p12 -clcerts -nokeys -out passcertificate.pem -passin pass: your_password 

рдФрд░


 openssl pkcs12 -in certificates.p12 -nocerts -out passkey.pem -passin pass: -passout pass:new_password 

рдЕрдм рд╣рдо рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЪрд▓реЛ рдЗрд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдмрдирд╛рддреЗ рд╣реИрдВ:


 openssl smime -binary -sign -certfile WWDR.pem -signer passcertificate.pem -inkey passkey.pem -in manifest.json -out signature -outform DER -passin pass:___ 

рддреЛ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ:


 zip -r nameOfPass.pkpass manifest.json pass.json signature logo.png logo@2x.png logo@3x.png icon.png icon@2x.png icon@3x.png 

рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХрд╛рд░реНрдб (.pkpass) рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдПрдХ .pkpass рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдХрд╛рд░реНрдб рдХрд╛ рдПрдХ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рджреЗрдЦреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдлрд╝реЛрди рдкрд░ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред
рдпрд╣ рд╕рдм рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Apple signpass рдпреВрдЯрд┐рд▓рд┐рдЯреА ( Apple рд╡реЙрд▓реЗрдЯ рд╕реИрдВрдкрд▓ signpass рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рднреА SHA рдЧрдгрдирд╛ ( manifest.json рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ signpass рдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:



рдЕрдЧрд▓рд╛, рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:


 ./signpass -p wallet 

рд╡реЙрд▓реЗрдЯ рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рд╕рдВрд╕рд╛рдзрди рд╕реНрдерд┐рдд рд╣реИрдВред рдЖрдЙрдЯрдкреБрдЯ рд╡реЙрд▓реЗрдЯ.рдкрдХреНрдХрд╛ рд╣реИред рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ unletipping wallet.pkpass рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


 unzip wallet.pkpass 

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ pkpass рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдмреИрдХрдПрдВрдб рдХреЛ рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рдбрдмреНрд▓реНрдпреВрдкреАрдбреАрдЖрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ .p12 рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдЯрд╛рдЗрдк рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред


рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдПрдХреАрдХрд░рдг


рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡реЙрд▓реЗрдЯ рдореЗрдВ рдХрд╛рд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдРрдк рдЖрдИрдбреА рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред




рд╡реЙрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕рд╣реА рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╡реЙрд▓реЗрдЯ рд╕реЗ рдХрд╛рд░реНрдб рдкрдврд╝рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдордЭрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкрд╛рд╕ рдЖрдИрдбреА рдореЗрдВ рдЯреАрдо рдЖрдИрдбреАред рдЯреАрдо рдЖрдИрдбреА рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдВрдЯрд╛рдЗрдЯреЗрд▓рдореЗрдВрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреАред



рдПрдХ рдХрд╛рд░реНрдб рдЬреЛрдбрд╝рдирд╛


рдирдХреНрд╢реЗ рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:


 guard let passPath = Bundle.main.path(forResource: "wallet", ofType: "pkpass") else { return } let error: ErrorPointer = ErrorPointer(nilLiteral: ()) guard let passData = NSData(contentsOfFile: passPath) else { return } let pass = PKPass(data: passData as Data, error: error) let passLibrary = PKPassLibrary() passLibrary.addPasses([pass]) { (status) in print(passLibrary.containsPass(pass)) } 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдлрд┐рд░ рд╕реЗ, рдЕрдзрд┐рдХ рдмрд╛рд░ .pkpass рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ PassKit рдХрд╛рдлреА рдкрдардиреАрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдЬреЛрдбрд╝реЗ рдЧрдП рдХрд╛рд░реНрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


рд╡реЙрд▓реЗрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд╛рд░реНрдб рдФрд░ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ PKPassLibrary рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


 let passLibrary = PKPassLibrary() let passes = passLibrary.passes() 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдирдХреНрд╢рд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, PKPassLibrary рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдкреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдФрд░ рдбрд┐рд▓реАрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдкреНрд╕ рдХреЛ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред


рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреА рдЬрд╛рдВрдЪ


рдЪреВрдВрдХрд┐ рдЖрдкрдХреА рд╕реЗрд╡рд╛ рдореЗрдВ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд╛рд░реНрдб рдПрдХ рдЦрд╛рддреЗ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЖрд╡реЗрджрди рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд╛рд░реНрдб рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдпрд╣ serialNumber рд╕реЗ serialNumber ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдХрд╛рд░реНрдб рдирдВрдмрд░ рдХреА serialNumber рдЖрдИрдбреА рд╕реЗрдЯ рдХрд░реЗрдВред


рдкрд░реАрдХреНрд╖рдг


Apple рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП pkpass рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдЙрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реЗрдм рдХреЗ рдмрдЯреБрдП рдХреЗ рдирдореВрдиреЗ
рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ pkpass рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рджреЗрдЦреЗрдВ "рдорд╛рдирдЪрд┐рддреНрд░ рдЬреЛрдбрд╝рдирд╛")ред рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ рдХрд┐ рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╡реЙрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдб рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рдХрд╛рд░реНрдб рдирд╣реАрдВ рджреЗрдЦреЗрдЧрд╛, рдФрд░ рд╡рд┐рдХрд╛рд╕ рдЦреБрдж рджреВрд╕рд░реЗ рдЦрд╛рддреЗ (рдЖрдЙрдЯрд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ) рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдЬрд╛рдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдмрд╛рд░рдХреЛрдб рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд┐рд╕реА рднреА рдХреНрдпреВрдЖрд░ рдХреЛрдб рд╕реНрдХреИрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдПрдирдХреЛрдбреЗрдб рд╣реИ рдпрд╛ рдирд╣реАрдВред рдФрд░ рдЗрд╕ рд╕реНрдХреИрдирд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рдирд┐рд╖реНрдХрд░реНрд╖


рд▓реЗрдЦ рдиреЗ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреА, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЖрд╡реЗрджрди рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдореБрдЭреЗ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред


рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА:


https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/Creating.html
https://developer.apple.com/library/archive/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/TopLevel.html#//apple_ref/doc/uid/TP40012026-CH2-SW3
https://itechroof.wordpress.com/2015/11/30/apple-wallet-part-13/
https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/Updating.html


рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП mehdzor рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/hi428437/


All Articles