рдЬрдм рдореЗрд▓ рдбрд┐рд▓реАрд╡рд░ рд╣реЛрддрд╛ рд╣реИ: iOS рдореЗрдВ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХрд╛ рдиреБрдХрд╕рд╛рди

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ, рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред Yandex.Mail рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдпрд╣ рднреА рдордЬрд╛рдХ рдХрд┐рдпрд╛ рдХрд┐ рдЖрд╡реЗрджрди рдореЗрдВ рдХреЗрд╡рд▓ рддреАрди рд╕реНрдХреНрд░реАрди рд╣реИрдВ: рдкрддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА; рдкрддреНрд░ рднреЗрдЬрдирд╛; рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

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

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


рдпрд╣ рд░рд┐рдореЛрдЯ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬреЛ рдХрд┐ APNs (Apple Push Notification Service) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪрдирд╛рдПрдВ рд╣реИрдВред рд╣рдо рд╕реНрдерд╛рдиреАрдп рд╕реВрдЪрдирд╛рдУрдВ рдкрд░ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ:

  • рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдПрдХ рдзрдХреНрдХрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╡рд┐рддрд░рдг рдпреЛрдЬрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд╣рд╛рдВ рдиреБрдХрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдЖрдкрдиреЗ Yandex.Mail рдореЗрдВ рдиреБрдХрд╕рд╛рди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХреИрд╕реЗ рдХрд┐рдпрд╛ - рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреА рдХрддрд╛рд░ред
  • рдХреИрд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдФрд░ рдХреНрдпрд╛ рдЕрдиреНрдп рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ рдФрд░ рд╣рдо рдХрд╣рд╛рдВ рдЦреЛрддреЗ рд╣реИрдВ


рдЕрдм рдзрдХреНрдХрд╛ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрд░реНрдпрд╛рдкреНрдд рдЪреАрдЬ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛ред



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

рддрдм рд╕реЗ рдЕрдм рддрдХ рдХрд╛рдлреА рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИред



рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рдм iOS 3 рдореЗрдВ рд╢реБрд░реВ рд╣реБрдЖ , рдЬрдм рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрд╢ рд╕реВрдЪрдирд╛рдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдИрдВред

рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рд╕реЗрдВрдЯрд░ iOS 5 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ , рдФрд░ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛, рдЕрдм рд╡реЗ Notification Center рдореЗрдВ рдмрдиреЗ рд╣реБрдП рд╣реИрдВ, рдЬрд╣рд╛рдБ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

IOS 6 рдиреЗ Do Not Disturb рдХреА рд╢реБрд░реБрдЖрдд рдХреА ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╕рдордп рдХреА рдЕрд╡рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рд╡рд╣ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

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

рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ iOS 8 рдФрд░ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдПрдХреНрд╢рди рдХрд╛ рдЙрджреНрднрд╡ рдерд╛ , рдЬрд┐рд╕рдиреЗ рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред

IOS 10 рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗрд╡рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рд╛рдордЧреНрд░реА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ ред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рд╣реИ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкрд░ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдпреВрдЖрдИ рджрд┐рдЦрд╛рдирд╛, рдЬрд┐рд╕рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред IOS 10 рдореЗрдВ, рдпрд╣ UI рдЧреИрд░-рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдерд╛ - рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕реЗ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

IOS 11 рдиреЗ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкреНрд░рд╛рдЗрд╡реЗрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХреА ред рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдВрдХреЗрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛред рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдХрджрдо рд╣реИред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдУрдПрд╕ рдХреЗ рдХреЗрд╡рд▓ 8 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЬрд╛рдирдХрд╛рд░реА рдЕрдЪрд╛рдирдХ рдЯреЗрдмрд▓ рдкрд░ рдкрдбрд╝реЗ рдЖрдИрдлреЛрди рдкрд░ рдкреЙрдк рдЕрдк рд╣реЛред

IOS 12 рдореЗрдВ, рдереНрд░реЗрдб-рдЖрдЗрдбреА рджреНрд╡рд╛рд░рд╛ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЛ рдЧреНрд░реБрдк рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдВрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдордиреЗ iOS 10 рдореЗрдВ рдЬреЛ UI рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╡рд╣ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдЖрдк рд╡рд╣рд╛рдВ рдмрдЯрди рдФрд░ рдЬреЗрд╕реНрдЪрд░ рдХрдВрдЯреНрд░реЛрд▓ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рд╡рд╣ рд╕рдм рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ UI рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдЖрдЬ рдкреБрд╢ рд╕реВрдЪрдирд╛рдПрдБ


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

рдкрд╛рда рд╕рдВрджреЗрд╢ рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг


рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рд╣рдо рдПрдХ рдзрдХреНрдХрд╛ рд╕реВрдЪрдирд╛ рдореЗрдВ рдкрд╛рда рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

"aps" : { "alert" : { "title" : "New Mail", "subtitle-loc-key" : "alert_subtitle_localization_key", "loc-key" : "alert_body_localization_key", } } 

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

рдзреНрд╡рдирд┐ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреЗрддрд╛рд╡рдиреА


рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдЖрдк рдкреЗрд▓реЛрдб рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдореЗрдВ рдзреНрд╡рдирд┐рдпрд╛рдБ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

 "aps" : { "sound" : { "critical" : 1, "name" : "bingbong.aiff", "volume" : 1.0, } } 

IOS 12 рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреЗрддрд╛рд╡рдиреА рд╣реИред рдпреЗ рд╡реЗ рдзреНрд╡рдирд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреВ рдиреЙрдЯ рдбрд┐рд╕реНрдЯрд░реНрдм рдореЛрдб рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рднреА рдЦреЗрд▓реА рдЬрд╛рдПрдВрдЧреАред

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

рдореМрди рд╕реВрдЪрдирд╛рдПрдБ


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

 "aps" : { "content-available" : 1 //   alert, sound  badge   payload } 

рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЛ рдЪреБрдк рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреЗрд▓реЛрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: "content-available" : 1 ред рдФрд░ рдкреЗрд▓реЛрдб рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА, рдзреНрд╡рдирд┐ рдФрд░ рдмреИрдЬ рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рдХрд░реЗрдВ - рд╡реЗ рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдП рдЬрд╛рдПрдВрдЧреЗред

рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рдореВрд╣рди


рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреЗрд▓реЛрдб рдореЗрдВ "рдереНрд░реЗрдб-рдЖрдИрдбреА" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рднреАрддрд░ рдХрдИ рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдореВрд╣ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдЦрд╛рддреЛрдВ рджреНрд╡рд╛рд░рд╛, рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛, рд╡рд┐рд╖рдп рджреНрд╡рд╛рд░рд╛ред

 "aps" : { "thread-id" : "any_thread_identifier" } 

рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рд▓реЙрдХ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рднреА рдЬрдЧрд╣ рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рде рд╕рдореВрд╣реАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдЗрд╕реЗ рджрд┐рдЦрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдмрджрд▓реЗрдВ


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

 "aps" : { "mutable-content" : 1 } override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { guard let mutableContent = request.content.mutableCopy() as? UNMutableNotificationContent else { contentHandler(request.content); return } mutableContent.subtitle = "Got it!" contentHandler(mutableContent) } 

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

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

рдЫрд┐рдкреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рд╛рдордЧреНрд░реА


IOS 11 рдореЗрдВ, рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛, рдФрд░ рд╣рдо, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ "рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдВрдЯ" рдХреЛ рдЯрд┐рдХ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╛ рджреВрд╕рд░рд╛ рдЗрд╕реЗ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ UNNotificationCategory рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╣реИ), рдФрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╢реАрд░реНрд╖рдХ рдпрд╛ рдЙрдкрд╢реАрд░реНрд╖рдХ рджрд┐рдЦрд╛рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

 let commentCategory = UNNotificationCategory(identifier: "comment-category", actions: [], intentIdentifiers: [], hiddenPreviewsBodyPlaceholder: NSString.localizedUserNotificationString(forKey:"COMMENT_KEY",arguments: nil), options: [.hiddenPreviewsShowTitle]) 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЪрд░рдг


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

 "aps" : { "category" : "message" } let action = UNNotificationAction(identifier:"reply", title:"Reply", options:[]) let category = UNNotificationCategory(identifier: "message", actions: [action], minimalActions: [action], intentIdentifiers: [], options: []) UNUserNotificationCenter.current().setNotificationCategories([category]) 

рд╕рдореГрджреНрдз рд╕реВрдЪрдирд╛рдПрдБ


рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ, рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдХрд╕реНрдЯрдо UI рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рд╛рдордЧреНрд░реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ UNNotificationContentExtension рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рдирд┐рдпрдорд┐рдд UIViewController рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред

 class NotificationViewController: UIViewController, UNNotificationContentExtension { @IBOutlet var userLabel: UILabel? func didReceive(_ notification: UNNotification) { let content = notification.request.content self.title = content.title let userInfo = content.userInfo self.userLabel?.text = userInfo["video-user"] as? String } } 

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

рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╡рд┐рддрд░рдг рдпреЛрдЬрдирд╛


рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдк iOS рдореЗрдВ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд┐рддрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рддрдХ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╡рд┐рддрд░рдг рдпреЛрдЬрдирд╛ рдЕрдм рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕реА рд╣реА рд╣реИ рдЬреИрд╕реА рдХрд┐ рдЖрдИрдУрдПрд╕ 3 рдореЗрдВ рдереАред



рдХреЛрдИ рдпрд╣ рд╕реЛрдЪреЗрдЧрд╛ рдХрд┐ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдбрд┐рд▓реАрд╡рд░реА рд╕реНрдХреАрдо рд╢реБрд░реВ рд╕реЗ рдареАрдХ рдереА, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рдзрдХреНрдХрд╛ рд╕реВрдЪрдирд╛ рд╡рд┐рддрд░рдг рдпреЛрдЬрдирд╛ рдореЗрдВ рддреАрди рдореБрдЦреНрдп рдиреЛрдб рд╣реИрдВ:

  • рдкреНрд░рджрд╛рддрд╛ рдЬреЛ рдкреЗрд▓реЛрдб рдзрдХреНрдХрд╛ рд╕реВрдЪрдирд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ;
  • рдПрдкреАрдПрди - рдРрдкреНрдкрд▓ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗрд╡рд╛, рдЬреЛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреА рд╣реИ;
  • iOS рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиред

рдореИрдВ рдЗрд╕ рднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рд╣реИ, рдПрдХ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕реЗ рднреЗрдЬрдирд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рдм рд╣реИред рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

  • рдкреНрд░рджрд╛рддрд╛ рдПрдХ рдкреЗрд▓реЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ APN рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред
  • APN рдЗрд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдХ рдзрдХреНрдХрд╛ рд╕рдВрджреЗрд╢ рджреЗрдЦрддрд╛ рд╣реИред

рдореЗрд▓ рдФрд░ рдХрдИ рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдиреНрдирдд рдзрдХреНрдХрд╛ рд╕реВрдЪрдирд╛ рд╡рд┐рддрд░рдг рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗрд╡рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ "mutable-content" : 1 рд╕рд╛рде рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдПрдХ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмреИрдХрдПрдВрдб рд▓реЙрдЬрд┐рдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рджрд╛рддрд╛ рд╕реНрд╡рдпрдВ, рдЬреЛ рдкреЗрд▓реЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдпрд╛рдВрдбреЗрдХреНрд╕ рдореЗрдВ, рдкреНрд░рджрд╛рддрд╛ рдЬреЛ рдкреЗрд▓реЛрдб рдмрдирд╛рддрд╛ рд╣реИ рдЙрд╕реЗ XIVA рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред XIVA рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред рдореЗрд▓ рддреГрддреАрдп рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП XIVA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

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

рдиреБрдХрд╕рд╛рди рдХрд╣рд╛рдВ рд╣реИрдВ?


рдзрдХреНрдХрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╡рд┐рддрд░рдг рдпреЛрдЬрдирд╛ рдореЗрдВ рдЪрд╛рд░ рддреАрд░ рд╣реИрдВ, рдЗрдирдореЗрдВ рд╕реЗ рддреАрди рд╕рдВрдХреНрд░рдордгреЛрдВ рдореЗрдВ рдиреБрдХрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

XIVA рдФрд░ APN рдХреЗ рдмреАрдЪ , рдиреЗрдЯрд╡рд░реНрдХ рд╣рд╛рдирд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ APNs рдФрд░ Extension, рдпрд╛ APNS рдФрд░ iOS рдХреЗ рдмреАрдЪ ред рдпрд╣ рд╕рдмрд╕реЗ рдЖрдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реИред рдРрд╕реЗ рдиреБрдХрд╕рд╛рди рдЗрд╕рд▓рд┐рдП рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ APN рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкреНрд░рддрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд╢ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдлрд╝рд▓рд╛рдЗрди рд╣реИ, рддреЛ рдЙрд╕реЗ рдХрдИ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ, рдЬрдм рд╡рд╣ рдСрдирд▓рд╛рдЗрди рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдЧрд╛ред

рдпреЗ рд╡рд╣реА рдиреБрдХрд╕рд╛рди рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдбрд┐рд▓реАрд╡рд░реА рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдФрд░ рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред Apple рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рд▓реАрд╡рд░реА рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред

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

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

рдкреБрд╢ рд╕реВрдЪрдирд╛ рдХрддрд╛рд░


APNs рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрдВрдбрд▓ рдореЗрдВ рдиреБрдХрд╕рд╛рди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╣рдорд╛рд░рд╛ рддрд░реАрдХрд╛ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХрддрд╛рд░ рдХрд╣рд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдкреВрд░реА рдХрд╣рд╛рдиреА рдХреЛ рдПрдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдореЗрдВ рд╕рдВрдХреБрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╣реЛрдЧрд╛:
рдпрджрд┐ рдЖрдк рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╣рдорд╛рд░реА рд╕реВрдЪрдирд╛ рд╡рд┐рддрд░рдг рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕рднреА рд╕рдорд╛рди рдкреНрд░рддрд┐рднрд╛рдЧреА рд╣реИрдВ: XIVA, APN, рдПрдХреНрд╕рдЯреЗрдВрд╢рдиред рд╕рд░рд▓реАрдХреГрдд рдпреЛрдЬрдирд╛ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИ:

  • XIVA рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ APN рдХреЛ рднреЗрдЬрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬрддрд╛ рд╣реИред
  • рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдирдВрдмрд░ 1 рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдирдВрдмрд░ 3ред рдпрд╣ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдбреЗрдЯрд╛ рдЧрд╛рдпрдм рд╣реИред
  • XIVA рдХреЗ рдкрд╛рд╕ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рднреЗрдЬрддрд╛ рд╣реИ, рдлреИрд▓рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдкрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред
  • XIVA рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреЗрд▓реЛрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╕рднреА рд╕рджрд╕реНрдпрддрд╛рдПрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рд╣рдо рдлрд┐рд░ рд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВ, рд╣рдо рдПрдХ рдзрдХреНрдХрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рднреА рд╕рдВрджреЗрд╢ рд╣реИрдВ рдЬреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдкрд╣рд▓рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдореБрджреНрджрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рд╣реИред рдЬрдм рд╣рдо XIVA рд╕реЗ рдХрд┐рд╕реА рд╕рдВрджреЗрд╢ рдХрд╛ рдкреБрди: рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд╕рдВрдкрд░реНрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ APN рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреБрдЫ рд╕реВрдЪрдирд╛рдПрдВ рдЧрд╛рдпрдм рдереАрдВ, рдФрд░ XIVA рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ред XIVA рдкреЗрд▓реЛрдб APNs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдорд┐рд╕реНрдб рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рднреЗрдЬрд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ, рд╣рдореЗрдВ рдПрдХ рдФрд░ рдкреЗрд▓реЛрдб рдорд┐рд▓рд╛ рдФрд░ рдПрдХ рдкрд╛рд╕ рдХреЗ рд╕рд╛рде рднреАред рдЙрдиреНрд╣реЛрдВрдиреЗ рдлрд┐рд░ рдкреВрдЫрд╛ - XIVA рдиреЗ рдлрд┐рд░ рднреЗрдЬрд╛ред

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

Xiva


рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдм XIVA рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЙрддреНрд╕реБрдХ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдмреИрдХрдПрдВрдб рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред

XIVA рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХрддрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдерд╛ рдФрд░ рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдерд╛ред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

  • рдХреБрдВрдЬреА <service, user> ред
  • рдкреЗрд▓реЛрдб рдХреЛ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдореЗрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛)ред

XIVA рдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рд▓рд┐рдпрд╛ рдФрд░ APN рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдХреЛ рднреЗрдЬ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ iOS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

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

рдкрд╛рд╕-рдереНрд░реВ рдирдВрдмрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ app_name рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдорд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдПрдВрдб-рдЯреВ-рдПрдВрдб рдирдВрдмрд░рд┐рдВрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╣рдордиреЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛: XIVA рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдореЗрдВ рдкреЗрд▓реЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЕрдм apns_queue рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ device_id + app_name рд░реВрдк device_id + app_name - рдмрд╣реБрдд рдбреЗрдЯрд╛ рдЬрд┐рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдирдВрдмрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╡рд╣ рд╣реИ, key: <apns_queue, device_id + app_name> ред

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

рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗрд╡рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

 public override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { // . . . } 

рд╣рдо рдЗрд╕рдореЗрдВ рджреА рдЧрдИ didReceive рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрдпрд╛ рдЖрдпрд╛ред рд╣рдо "mutable-content" : 1 рдХреЛ рд╕рднреА рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдкрдбрд╝реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рд╣рдо рдЧрдгрдирд╛ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

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

 guard let payload = try? self.payloadParser.parsePayload(from: request.content.userInfo) else { //  ,     xiva contentHandler(request.content); return } 

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

 self.logger.logNotificationReceived(with: payload) if lastPositionDeviceId != deviceId { // deviceId ,    lastNotificationPosition = nil lastPositionDeviceId = deviceId } 

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

 guard let xivaInfo = payload.xivaInfo else { contentHandler(request.content); return } 

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

 guard isHashCompatible(deviceId: deviceId, deviceIdHash: xivaInfo.deviceIdHash) else { // payload device_id   device_id  contentHandler(request.content); return } 

рдЕрдЧрд▓рд╛ рдмреНрд▓реЙрдХ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕рд╣реЗрдЬреА рдЧрдИ рд╕реНрдерд┐рддрд┐ рд╣реИ:

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

 guard let lastPos = lastNotificationPosition else { //      lastNotificationPosition = xivaInfo.notificationPosition contentHandler(request.content); return } 

рд╣рдо рдорд┐рд╕реНрдб рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЧреБрдо рд╢реВрдиреНрдп рдареАрдХ рд╣реИ, рддреЛ рд╣рдордиреЗ рдХреБрдЫ рднреА рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

 let missedMessages = xivaInfo.notificationPosition - lastPos - 1 guard missedMessages > 0 else { //   pushтАУ     contentHandler(request.content); return } 

рдЕрдиреНрдпрдерд╛, рд╣рдо XIVA рд╕реЗ рд╕реНрдерд┐рддрд┐ рдбреЗрдЯрд╛ рд▓реЗрддреЗ рд╣реИрдВ - рдЙрд╕реА рдирд┐рд░рдВрддрд░ рдирдВрдмрд░рд┐рдВрдЧ рд╕реЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЪреВрдХ рдХреА рдорд╛рддреНрд░рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рдореВрд▓реНрдп рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред

 lastNotificationPosition = xivaInfo.notificationPosition guard missedMessages <= repeatMaxCount else { //    ,   contentHandler(buildNewNotification()); return } 

рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдСрдлрд╝рд▓рд╛рдЗрди рд╣реИ, рдФрд░ рдЗрд╕ рджреМрд░рд╛рди рд╕реМ рд╕рдВрджреЗрд╢ рдЬрдорд╛ рд╣реЛ рдЧрдП рд╣реИрдВред рд╣рдо рдкреВрд░реЗ рд╕реМ (рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ) рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВрдЧреЗ, XIVA рдкреВрд░реЗ рд╕реМ рднреЗрдЬ рджреЗрдЧрд╛, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рднреА рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреАред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдереНрд░реЗрдб-рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдореВрд╣ рджреЗрддреЗ рд╣реИрдВ), рд╕рднреА рдПрдХ рд╣реА, рдкреНрд░рддреНрдпреЗрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рд╕рднреА рдЪреЗрдХ рдкрд╛рд╕ рд╣реЛрдВрдЧреЗред рдРрд╕рд╛ рд▓рдЧрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рднреА рдПрдХ рд╕реМ рд╕реВрдЪрдирд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 100 рдЫреВрдЯреЗ рд╣реБрдП рд╕рдВрджреЗрд╢ рд╣реИрдВ, рдЖрд╡реЗрджрди рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВред рдФрд░ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрдм рд╕рднреА рдЪреЗрдХ рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо XIVA рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ: рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдИ, рдФрд░ рдЫреВрдЯреЗ рд╣реБрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдФрд░ рджреЗрдЦреЛ:

  • рдпрджрд┐ XIVA рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ: "рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдореИрдВ рдбреЗрдЯрд╛ рднреЗрдЬреВрдВрдЧрд╛", рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд░реНрддрдорд╛рди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдФрд░ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ XIVA рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрди рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдЬреЛ рдЫреВрдЯ рдЧрдП рд╣реИрдВред
  • рдпрджрд┐ XIVA рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдХрд╕реНрдЯрдо рд╕реВрдЪрдирд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рд╕рдВрджреЗрд╢ рд╣реИрдВ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

 self.requestMissedNotifications(lastPosition: xivaInfo.notificationPosition, gap: missedMessages) { result in result.onValue { _ in self.logger.logNotificationProcessed(with: .success) contentHandler(request.content) }.onError { error in self.logger.logNotificationProcessed(with: .failure(error)) contentHandler(buildNewNotification()) } } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреЗрдХ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдЕрдиреНрдп рдХрдард┐рдирд╛рдЗрдпреЛрдВ


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

рдкреБрд╢-рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕реАрдорд╛рдПрдВ


рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рд╣рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрдИ рд╡рд╣ рд╣реИ рдкреБрд╢-рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рддрд┐рдмрдВрдзред

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

рдкреБрд╢-рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИ ред Apple рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ 30 рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рдХреИрд╕реЗ рд▓рдЧрд╛рдпрд╛ред рд╣рдордиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓рд╛рдЧреВ рдХреА рдЬрд┐рд╕реЗ рд╣рдордиреЗ "рд╕реБрдВрджрд░" рдкреБрд╢ рд╕реВрдЪрдирд╛рдПрдБ рдХрд╣рд╛, рдореАрдбрд┐рдпрд╛ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реВрдЪрдирд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝рд╛, рд╢реАрд░реНрд╖рдХ, рдЙрдкрд╢реАрд░реНрд╖рдХ рдмрджрд▓ рджрд┐рдпрд╛ред рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреБрдЫ рдкреБрд╢ рд╕реВрдЪрдирд╛рдПрдБ рд╕реБрдВрджрд░ рдмрди рдЧрдИрдВ, рдЬрдмрдХрд┐ рдмрд╛рдХреА рдмрджрд╕реВрд░рдд рдбрдХрд▓рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдиреА рд░рд╣реАрдВред

рд╣рдордиреЗ рдЗрди рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рдерд╛, рдмрд╕ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╣рдо рдкреВрд░реНрдгрддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдпрд╣ рдирд╣реАрдВ рдерд╛ред , , push- , APNs.

тАФ . Apple , , push-extension, , , . , 12 .

Apple Developer Forum , , . , тАФ 10 .

, . AppMetrica. , AppMetrica , Extension . , - .

: Extension .


push-extension UserDefaults. , , AppMetrica.

. . , , . , . , XIVA ( ), , .

, Notification Extension iOS 10 , Extension, , .

AppMetrica : , push-extension . AppMetrica push-, , . , AppMetrica Push SDK .

, . тАФ , . , .



тАФ , , .

, push-, , тАФ .

, , . , тАж


: , , . , ? - , push-? , ? user experience ?

, 2тАУ3тАУ20 ?

, , , , , , , . , push-. , .

рдкрд░рд┐рдгрд╛рдо


Push- iOS . , .. , .

push- ( ) . . XIVA. , , . , , . !

push-extension. , . , .

, . , , , , - . , push- . , , , App Store, , !

AppsConf , 21 22 , .. 50 , . 1 , тАФ .

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


All Articles