рд╣рдордиреЗ CarPlay рдХреЗ рддрд╣рдд 2GIS рдХреИрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рд╣рдо рдЕрднреА рднреА рдирд╛рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ


рдирдорд╕реНрддреЗ! рдореЗрд░рд╛ рдирд╛рдо рд╡рд╛рдиреНрдпрд╛ рд╣реИ, рдореИрдВ iOS рдХреЗ рд▓рд┐рдП 2GIS рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рдЖрдЬ рдПрдХ рдХрд╣рд╛рдиреА рд╣реЛрдЧреА рдХрд┐ рд╣рдорд╛рд░реЗ рдирд╛рд╡рд┐рдХ CarPlay рдореЗрдВ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдЕрдзреВрд░реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЙрддреНрдкрд╛рдж рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕реЗ AppStore рдореЗрдВ рд░рдЦрд╛ред


CarPlay рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, CarPlay рдХреЗ рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рдФрд░ рдЙрди рдХрд╛рд░рдгреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕рд╛рдордЧреНрд░реА, рдЬрд┐рдирдХреЗ рдХрд╛рд░рдг рд╣рдордиреЗ рдХреБрдЫ рдирд┐рд░реНрдгрдп рд▓рд┐рдПред


CarPlay рджреВрд╕рд░реЗ OS рдХреЗ рдЕрдВрджрд░ рдХрд╛ OS рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдпрджрд┐ рдореЛрдЯреЗ рддреМрд░ рдкрд░, рддреЛ CarPlay рд╣реЗрдб рдпреВрдирд┐рдЯ рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рд╣рд░реА рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ; рдХрд╛рд░ рд╡рдХреНрддрд╛рдУрдВ рд╕реЗ рдзреНрд╡рдирд┐; рдЯрдЪ рд╕реНрдХреНрд░реАрди, рдЯрдЪ рдкреИрдирд▓, рд╡реЙрд╢рд░ рдФрд░ рдЕрдиреНрдп рдЗрдирдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ред


рдпрд╣реА рд╣реИ, рд╕рдВрдкреВрд░реНрдг рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рд╕реАрдзреЗ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ (рдПрдХ рдЕрд▓рдЧ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рднреА рдирд╣реАрдВ!) рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ: рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░реЗрдбрд┐рдпреЛ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдорд╢реАрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ iOS рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


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


рдЬрдм рд╣рдо Apple рдХреЗ рдЙрддреНрддрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рдереЗ, рддрдм рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдирдореВрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди CountryRoads рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, CarPlay.framework рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдЧрдИ рдереАред CarPlay рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рдиреБрдХрд╕рд╛рди рдФрд░ рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ CarPlay рд░реЗрдбрд┐рдпреЛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреГрд╖реНрдарднреВрдорд┐ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред


рдкрд╣рд┐рдП рдореЗрдВ рдкрд╣рд▓реА рдЫрдбрд╝реА


рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЖрд╡реЗрджрди рдиреЗ рд╣рдореЗрдВ рдирд┐рд░рд╛рд╢ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рджреЛ рдХрд╛рд░рдг рдереЗ:


  1. рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рддрдХрдиреАрдХреА рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдФрд░ рдКрд░реНрдЬрд╛ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред
  2. рд╣рдорд╛рд░рд╛ рдирдХреНрд╢рд╛ рдУрдкрдирдЬреАрдПрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ (рд╣рд╛рдВ, рдкрджрд╛рд╡рдирдд, рд╣рд╛рдВ, рдзрд╛рддреБ рдирд╣реАрдВ, рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐), рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рд░рд╛рдЬреНрдп рдореЗрдВ рдУрдПрдирдЬреАрд╕реАрдПрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд▓рд╛ рджреГрд╢реНрдп рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм, рдХреНрд░реИрд╢ред

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


рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ MKMapView рддреГрддреАрдп-рдкрдХреНрд╖ рдЯрд╛рдЗрд▓ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрд▓реЗрдВ рд╡рд┐рд╢реЗрд╖ рдЖрдпрддрд╛рдХрд╛рд░ рдХрдВрдЯреЗрдирд░ рд╣реИрдВред рд╣рдо рд╕рд┐рд░реНрдл рдПрдХ рд╕реЗрд░рдЪреЛрдХрд╛ рдмрди рдЧрдП, рдЬреЛ рдЯрд╛рдЗрд▓ рджреЗрдирд╛ рдЬрд╛рдирддрд╛ рд╣реИред GitHub рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рд╣реИред


Apple рдЬрд╡рд╛рдм


рд╣рдореЗрдВ Apple рд╕реЗ рдПрдХ рдЙрддреНрддрд░ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдореЗрдВ, рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ "рдХреБрд▓реАрди рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП" рджрд╕реНрддрд╛рд╡реЗрдЬ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдХрдВрдЯреНрд░реАрд░реЛрдбреНрд╕ рдирдореВрдирд╛ рдЖрд╡реЗрджрди рдХрд╛ рдХреЛрдб (рдЗрд╕реЗ рдбрдмреНрд▓реНрдпреВрдбрдмреНрд▓реНрдпреВрдбреАрд╕реА рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛) рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдирд┐рдЬреА рдХреНрд╖рдорддрд╛ рдХреБрдВрдЬреА com.apple.developer.carplay-maps ред рдпрд╣ рдХреБрдВрдЬреА рдПрдВрдЯрд╛рдЗрдЯреЗрд▓рдореЗрдВрдЯ-рдлрд╛рдЗрд▓ рдореЗрдВ рд╡реИрд▓реНрдпреВ YES рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреА рдЧрдИ рд╣реИ, рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдпрд╣ рд╕рдордЭреЗ рдХрд┐ рдЬрдм рдЖрдк рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк CarPlay рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рдХрд╣рд╛рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдкреНрд░рд┐рдВрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛, рдореИрдВ Xcode рдмреАрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдврд╝ рдЧрдпрд╛ред 2 рдЬреАрдЖрдИрдПрд╕ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рд▓реЗрдХрд┐рди CoutryRoads рдирдореВрдирд╛ рдЖрд╡реЗрджрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереАред


CarPlay рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╡рд┐рдВрдбреЛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджреНрдШрд╛рдЯрди рд╕реЗ рдкрд╣рд▓реЗ, рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ рдРрд╕реА рдЦрд┐рдбрд╝рдХреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛:



рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди defaults write com.apple.iphonesimulator CarPlayExtraOptions -bool YES : defaults write com.apple.iphonesimulator CarPlayExtraOptions -bool YES


рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ - рдореБрдЭреЗ рдЗрд╕реЗ рд▓рдЧрднрдЧ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ 800 ├Ч 480 рдЕрдВрдХ рдФрд░ ├Ч 2 рд╕реНрдХреЗрд▓ рдХреЗ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдирд╛ рдкрдбрд╝рд╛ред рдлрд┐рд▓рд╣рд╛рд▓, рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рдмрд╣реБрдд рдорджрдж рдХрд░рддреА рд╣реИред


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



рдЖрдзрд╛рд░ рджреГрд╢реНрдп рдЖрдкрдХрд╛ рдирдХреНрд╢рд╛ рд╣реИред рдЗрд╕ рдкрд░рдд рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдирдХреНрд╢рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


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


рдмреАрдЯрд╛ рд╡рд┐рдХрд╛рд╕


рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ ApplicationDelegate рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ CPApplicationDelegate рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред


 func application( _ application: UIApplication, didConnectCarInterfaceController controller: CPInterfaceController, to window: CPWindow ) {} func application( _ application: UIApplication, didDisconnectCarInterfaceController controller: CPInterfaceController, from window: CPWindow ) {} 

рдЖрдЗрдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рджреЗрдЦреЗрдВ:


UIApplication рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред
CPWindow UIWindow рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИ, рдЬреЛ рд░реЗрдбрд┐рдпреЛ рдХреА рд╣реЗрдб рдпреВрдирд┐рдЯ рдХреЗ рдмрд╛рд╣рд░реА рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рд╣реИред
CPInterfaceController - рдХреЗрд╡рд▓ CarPlay.framework рд╕реЗ UINavigationController рдХреЗ рдПрдирд╛рд▓реЙрдЧ рдХреА рддрд░рд╣ рдХреБрдЫред


рдЕрдм рд╣рдо рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред


 func application( _ application: UIApplication, didConnectCarInterfaceController controller: CPInterfaceController, to window: CPWindow ) { let carMapViewController = CarMapViewController( interfaceController: controller ) let navigationController = UINavigationController( rootViewController: carMapViewController ) window.rootViewController = navigationController } 

DidConnect рдореЗрдВ, рдЖрдкрдХреЛ рдЙрд╕ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо didFinishLaunching рдореЗрдВ рджреЗрдЦрддреЗ рдереЗред рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ CarMapViewController рдПрдХ рдЖрдзрд╛рд░ рджреГрд╢реНрдп (рдирд┐рдпрдВрддреНрд░рдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИ) рд╣реИред


рдпрд╣рд╛рдБ рдЪрд┐рддреНрд░ рдореИрдВ рдЕрдВрдд рдореЗрдВ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ:



рдХрд╣реАрдВ рди рдХрд╣реАрдВ, рдЗрд╕рдиреЗ рдореБрдЭ рдкрд░ рдпрд╣ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдирдпрд╛ Xcode рдирдпрд╛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИ рдФрд░, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, 2GIS рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред


рдореИрдВрдиреЗ Xcode рдЦреЛрд▓рд╛, рд╡рд┐рд░рд╛рд╕рдд рд╕реНрдерд╛рдкрд┐рдд рдХреА (рдпрд╛ рдмрд▓реНрдХрд┐ рд╕реНрдерд┐рд░, рдЪрд▓реЛ рдПрдХ рдХреБрджрд╛рд▓ рдХреЛ рдХреБрджрд╛рд▓ рдХрд╣рддреЗ рд╣реИрдВ) рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо, рдФрд░ рдореЗрд░реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ: 2GIS рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рд╕рдорд╛рди рдХреНрд╖рдорддрд╛ рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ CarPlay рдХреЗ рддрд╣рдд 2GIS рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд▓реЙрдЧ рдирд╣реАрдВ рджреЗрдЦрд╛ред рдпрд╣ рдФрд░ рднреА рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рджреГрд╢реНрдп рдХреЗ Apple рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдиреЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛, рд▓реЗрдХрд┐рди, рджреВрд╕рд░реА рдУрд░, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ UIAlertView рдХрд╛ рдПрдХ рдХрдВрдЯреЗрдВрдЯ рд╡реНрдпреВ рджреЗрдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, UIAlertView рдкрджрд╛рд╡рдирдд рд╣реЛ рдЧрдпрд╛ред


рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВрдиреЗ MKMapView рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдпрд╣ рд╣рдореЗрдВ рдСрдлрд╝рд▓рд╛рдЗрди рд╡рдВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╣рдореЗрдВ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдЧрд╛ред


рдПрдХрд▓ рдХрд╛рд░реНрдб рдХреА рд╕рдорд╕реНрдпрд╛


рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдЦрдмрд░ рдкрд░ рдЦреБрд╢реА рдордирд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ рдХрд┐ рдХрд╛рд░рдкреНрд▓реЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдирдХреНрд╢рд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рдореНрди рд╕рдорд╕реНрдпрд╛ рдиреЗ рдореБрдЭреЗ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛: рддрдХрдиреАрдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдирдХреНрд╢рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╣реБрдд рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рдерд╛ред


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


рд╣рд╛рдВ, рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд▓реНрджреА рд╣реИ, рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдорд╡реАрдкреА рдХреЛ рд░рд┐рд╡рд╛рдЗрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рдХрдорд╛рдВрдб рдХреЛ рдХрд┐рдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред


рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг


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



рдЖрдЗрдП рдЬрд╝реВрдо рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдирд┐рдпрдВрддреНрд░рдг рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╣реА рд╕реНрдерд┐рдд рд╣реИрдВ рдФрд░ рдпреЗ рд╕рд╛рдзрд╛рд░рдг рдпреВрдЖрдИрд╕реАрдУрдВрдЯреНрд░реЛрд▓ рдирд╣реАрдВ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЖрдзрд╛рд░ рджреГрд╢реНрдп рдкрд░ рдирдХреНрд╢рд╛ рд╣реИред


рдЗрди рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЛ рдХрд╛рд░реНрдб рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рдирдореВрдирд╛ рдЖрд╡реЗрджрди рдореЗрдВ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛ред рд╡рд╣рд╛рдБ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ - CPMapTemplate рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ред



CPMapTemplate - рдиреЗрд╡рд┐рдЧреЗрд╢рдирдмреАрдЖрд░ рдХреЗ рдирдХреНрд╢реЗ рдФрд░ рдПрдирд╛рд▓реЙрдЧ рдкрд░ рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдЯреЗрдореНрдкрд▓реЗрдЯред рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдмрдирд╛рдпрд╛ рдФрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 let mapTemplate = CPMapTemplate() self.interfaceController.setRootTemplate(mapTemplate, animated: false) 

рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЗрди рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдХрд╛рд░реНрдб рдкрд░ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


 let zoomInButton = CPMapButton(тАж) let zoomOutButton = CPMapButton(тАж) let myLocationButton = CPMapButton(тАж) self.mapTemplate.mapButtons = [ zoomInButton, zoomOutButton, myLocationButton ] 

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


рддрдм рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЛ рдорд┐рд▓рд╛ рдХрд┐ рдореИрдВ рдирдХреНрд╢реЗ рдХреЛ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдорд┐рд▓рд╛:


 Navigation apps are designed to work with a variety of car input devices, and CarPlay does not support direct user interaction in the base view (apps do not directly receive tap or drag events). 

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



рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ, рдкреНрд░рд▓реЗрдЦрди рдЭреВрда рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╣реИ рдирд╛?


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


 let panButton = CPBarButton(тАж) self.mapTemplate.leadingNavigationBarButtons = [panButton] self.mapTemplate.trailingNavigationBarButtons = [] 

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


рдФрд░ рдХрд╛рд░реНрдб рдбреНрд░реИрдЧ рдФрд░ рдбреНрд░реЙрдк рдореЛрдб рдХреЛ рд╕рдХреНрд░рд┐рдп рдФрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:


 self.mapTemplate.showPanningInterface(animated: true) self.mapTemplate.dismissPanningInterface(animated: true) 

рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкреНрд░рджрд░реНрд╢рди


рдЕрдЧрд▓рд╛, рдореИрдВрдиреЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред


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


рдХреЛрдб
 let choice0 = CPRouteChoice( summaryVariants: ["46 "], additionalInformationVariants: ["  "], selectionSummaryVariants: ["1  7 "] ) let choice1 = CPRouteChoice( summaryVariants: ["46 "], additionalInformationVariants: ["  "], selectionSummaryVariants: [тАЬ1  11 "] ) let startItem = MKMapItem(тАж) let endItem = MKMapItem(тАж) endItem.name = ",  тАЭ let trip = CPTrip( origin: startItem, destination: endItem, routeChoices: [choice0, choice1] ) let tripPreviewTextConfiguration = CPTripPreviewTextConfiguration( startButtonTitle: " тАЭ, additionalRoutesButtonTitle: тАЬтАЭ, overviewButtonTitle: "" ) self.mapTemplate.showTripPreviews( [trip], textConfiguration: tripPreviewTextConfiguration ) 

рдорд╛рд░реНрдЧ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдкрд░ рд╣рдореЗрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдорд┐рд▓рд╛:



рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЛрдб


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


 func mapTemplate( _ mapTemplate: CPMapTemplate, startedTrip trip: CPTrip, using routeChoice: CPRouteChoice ) { self.navigationSession = self.mapTemplate.startNavigationSession(for: trip) } 

CPNavigationSession - рдПрдХ рд╡рд░реНрдЧ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХреБрдЫ UI рддрддреНрд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЛрдб рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред


рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:


 let maneuver = CPManeuver() maneuver.symbolSet = CPImageSet( lightContentImage: icon, darkContentImage: darkIcon ) maneuver.instructionVariants = [". "] maneuver.initialTravelEstimates = CPTravelEstimates(тАж) self.navigationSession?.upcomingManeuvers = [maneuver] 

рдлрд┐рд░ рд░реЗрдбрд┐рдпреЛ рдХреА рд╕реНрдХреНрд░реАрди рдкрд░ рд╣рдореЗрдВ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:



рдлреБрдЯреЗрдЬ рдХреЛ рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдореЗрдВ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:


 let estimates = CPTravelEstimates(тАж) self.navigationSession?.updateEstimates(estimates, for: maneuver) 

рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!


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


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


рд╡реЗрдирд┐рд╕ AVH-Z500BT


рдкреНрд░рд╛рд╡рдзрд╛рди рдкреНрд░реЛрдлрд╛рдЗрд▓


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


 Code Signing Error: Automatic signing is unable to resolve an issue with the "v4ios" target's entitlements. Automatic signing can't add the com.apple.developer.carplay-maps entitlement to your provisioning profile. Switch to manual signing and resolve the issue by downloading a matching provisioning profile from the developer website. 

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


рдбрд┐рдмрдЧрд┐рдВрдЧ


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


рдФрд░ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВ рдмрддрд╛рддрд╛ рд╣реВрдВ:

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


рдФрд░ рдлрд┐рд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ рдХрд┐ Apple рдиреЗ рдХреЛрдИ DevKit рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ (рддрд╛рдХрд┐ Apple-way, рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ)ред рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рд╕реНрдЯреИрдВрдб рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рдерд╛ред рдЕрдм рддрдХ, рд╣рд░ рд╣рдлреНрддреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░, рдХреБрдЫ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдкрдХреЛ рдкрд┐рдХреНрд╕ рд╕реЗ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдЯреИрдВрдб рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рддреЗ рд╕рдордп рдПрдбрдорд┐рди рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреНрдпреЛрдВред


рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдврд╛рдВрдЪрд╛ рдЬреЛ рд╣рдордиреЗ рдХрднреА рдмрдирд╛рдпрд╛ рдерд╛


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


рд╡реНрдпреВрдкреЛрд░реНрдЯ рд╕рдорд╕реНрдпрд╛рдПрдБ


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



рдФрд░ рдЗрд╕рд▓рд┐рдП:



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


 let routeControlsWidth = self.view.frame.width * 0.48 let zoomControlWidth = self.view.frame.width * 0.15 

рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рди рдХреЗрд╡рд▓ рдорд╛рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг


рдкрд╣рд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ, рд╣рдордиреЗ CPGridTemplate рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдП рдЧрдП рдЕрдкрдиреЗ рд░реВрдмреНрд░рд┐рдХреЗрдЯрд░ рдХреЛ рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛:



CPListTemplate рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╕рдВрджреАрджрд╛ рдФрд░ рдШрд░ / рдХрд╛рд░реНрдпред



рдФрд░ CPSearchTemplate рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреАрдмреЛрд░реНрдб рдЦреЛрдЬ:



рдореИрдВ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдб рдирд╣реАрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ)ред


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред

CPInterfaceController UIKit рдХреЗ рд╕рдорд╛рди рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЗрдВ рдХрд░ рд╕рдХрддреА рд╣реИред рдЯреАред рдИред


 self.interfaceController.pushTemplate(listTemplate, animated: true) self.interfaceController.presentTemplate(alertTemplate, animated: true) 

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CPAlertTemplate, рддреЛ рдЖрдк рд▓реЙрдЧ рдореЗрдВ рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ CPAlertTemplate рдХреЗрд╡рд▓ рдорд╛рдореВрд▓реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ Apple рдиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд┐рдирд╛ рд╣реБрдб рдХреЗ рддрд╣рдд рдХрд┐рд╢реНрддреЛрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рдЫрд┐рдкрд╛рдпрд╛ рдирд╣реАрдВ рд╣реИ:


 self.interfaceController.showTemplate(listTemplate, animated: true) 

рдЗрд╕рдиреЗ UIKit рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рддрд░рд╣ CPTemplate рдХреЗ рд╡рд╛рд░рд┐рд╕реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рддреЛрдбрд╝ рджреАред


рдЬрдм рдЖрдк рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд╡рд╛рд░рд┐рд╕ рдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:


 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported object <YourAwesomeGridTemplate: 0x60000060dce0> <identifier: 6CAC7E3B-FE70-43FC-A8B1-8FC39334A61D, userInfo: (null)> passed to pushTemplate:animated:. Allowed classes: {( CPListTemplate, CPGridTemplate, CPSearchTemplate, CPMapTemplate )}' 

рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХреАрдбрд╝реЗ


Artemenko-aa рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкрд╣рд▓реЗ рдХреАрдбрд╝реЗ рдореЗрдВ рд╕реЗ рдПрдХ, рдЬреЛ рдЙрд╕рдиреЗ рдкрд╛рдпрд╛, рд╣рдо рдЕрднреА рднреА рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдХрд╛рд░рдкреНрд▓реЗ рд░реЗрдбрд┐рдпреЛ рд╕реЗ рдлреЛрди рдХрд╛рдЯрддреЗ рд╣реИрдВ, рддреЛ рд╡реЙрдЪрдбреЙрдЧ рдиреЗ рдЫрд┐рдЯрдкреБрдЯ рд░реВрдк рд╕реЗ рд╣рдореЗрдВ рдирд╛рдЦреВрди рджрд┐рдпрд╛ - рдмрд┐рдирд╛ рдХрд╛рд░рдг рдмрддрд╛рдПред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ syslogs рднреА рдЦреБрд▓ рдЧрдП, рдХреБрдЫ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрд╛рд░рдг рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдпрд╛ рд╕рдордЭрдирд╛ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред


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


рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдпрд╣ iOS рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрдерд╛ рдХрд┐ рдпрд╣ CarPlay рд╕реЗ рдЬреБрдбрд╝рд╛ рдерд╛ред



рдореИрдВрдиреЗ рдЗрд╕реЗ рд░рдбрд╛рд░ (рдЕрдиреНрдп рд╕рднреА рдмрдЧреНрд╕ рдХреА рддрд░рд╣) рднреА рдмрддрд╛рдпрд╛ред рдореБрдЭреЗ рдРрд╕реЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рд╕рдХрд╛, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рд░рдбрд╛рд░ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред


рдЪреВрдВрдХрд┐ рдРрдкреНрдкрд▓ рдиреЗ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рдИ рдереА, рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╣реА рджреВрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХрд╛рдлреА рдмрд╛рд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ CarPlay рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╢реЗрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓рд╛рдЗрдЯрдирд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рдордп рдлреЛрди рдЪрд╛рд░реНрдЬ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рдордп, рдЪрд╛рд░реНрдЬрд┐рдВрдЧ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИред рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЖрдк рдмреИрдЯрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлреЛрди рдиреЗ рдЪрд╛рд░реНрдЬ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдФрд░ CarPlay рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЧрдпрд╛ред


рдпрд╣ рдпреЛрдЬрдирд╛ рд╡рд┐рдлрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдерд╛ред рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪрд▓реЗ рдЧрдП, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛!



рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдмреИрд╕рд╛рдЦреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдХреЛрдб рд╕реЗ рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИ: Apple рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ iOS рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕рдм рдХреБрдЫ рддрдп рдХрд┐рдпрд╛ред


рджреЛ рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреА рдХрд╣рд╛рдиреА


рдкрд╣рд▓реЗ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдерд╛ред рд╕рдВрдкрд╛рджрдХреАрдп рдХреЗ рдкрд╛рда рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╡рд┐рд╡рд░рдг (рдиреЛрдЯреНрд╕ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░рдирд╛) рдпрд╣ рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рдо CarPlay рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рди рддреЛ рд╕рдореАрдХреНрд╖рд╛ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢, рдФрд░ рди рд╣реА Google рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдРрд╕рд╛ рдерд╛ред рд╣рдордиреЗ рдмрд╣рд╕ рдирд╣реАрдВ рдХреА (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реИ), рд╣рдордиреЗ рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕ рд╕реЗ рд╡рд┐рд╡рд░рдг рддрдХ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдФрд░ рдПрдХ рдирдИ рд╕рдореАрдХреНрд╖рд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд▓рдЧреЗред


рджреВрд╕рд░рд╛ рд╕реВрдЪреА рд╢рд╣рд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдХрд╛рд░рдг рд╣реБрдЖред 2 рдЬреАрдЖрдИрдПрд╕ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ - рдСрдкрд░реЗрд╢рди рдХрд╛ рдкреВрд░реНрдг рдСрдлрд╝рд▓рд╛рдЗрди рдореЛрдбред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдиреЗ рд╣рдореЗрдВ рдкреИрд░ рдореЗрдВ рдЧреЛрд▓реА рдорд╛рд░ рджреАред


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



рдЖрдк рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ


рдЬреЗрд╕реНрдЪрд░ рдореИрдк рдореВрд╡рдореЗрдВрдЯ


рд▓рдЧрднрдЧ рдЙрд╕реА рд╕рдордп, Google рдореИрдкреНрд╕ рд╕реЗ CarPlay рдХреЗ рддрд╣рдд рдирд╛рд╡рд┐рдХ рдмрд╛рд╣рд░ рдЖ рдЧрдпрд╛ - рдФрд░ рдЖрдк рд╕реНрдХреНрд░реАрди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдирдХреНрд╢реЗ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдЬреА рдПрдкреАрдЖрдИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ! Google рдХреЗ рд▓реЛрдЧ рдмрд╕ рдкрд╛рд╕ рдХреА рдПрдХ рдЗрдорд╛рд░рдд рд╕реЗ рдЖрдП рдФрд░ рдХрд╣рд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЦрд┐рд░рдХрд╛рд░, рдкреНрд░рд▓реЗрдЦрди рдХрд╣рддрд╛ рд╣реИ:


 Navigation apps are designed to work with a variety of car input devices, and CarPlay does not support direct user interaction in the base view (apps do not directly receive tap or drag events). 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдЕрднреА рднреА рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЧреБрдЧрд▓реА рд╣реЛ рдЧрдИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рд╡реНрдпрд░реНрде рдерд╛, рдХреНрдпреЛрдВрдХрд┐ CarPP рдиреЗрд╡рд┐рдЧреЗрд╢рди рдРрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рддрдХрдиреАрдХреА рд▓реЗрдЦ рдирд╣реАрдВ рдереЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ Apple рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдФрд░ SUDDENLY рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред


рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдореБрдЭреЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдирд┐рд╖реНрдкрдХреНрд╖ рд░реВрдк рд╕реЗ рдЭреВрда рдмреЛрд▓ рд░рд╣рд╛ рд╣реИред рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рдЕрднреА рднреА рдЗрд╢рд╛рд░реЛрдВ рд╕реЗ рдирдХреНрд╢рд╛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рднреА рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдмрдЪреА рд╣реБрдИ рдереА CarPlay.fram рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рд╕рднреА .h рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдирд╛ред


рдФрд░ рд▓реЛ рдФрд░ рдирд┐рд╣рд╛рд░рдирд╛! рдореИрдВ CPMapTemplate рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ CPMapTemplateDelegate рдХреЛ рдвреВрдБрдврддрд╛ рд╣реВрдБ, рдЬрд┐рд╕рдореЗрдВ 3 рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдЪрд┐рд▓реНрд▓рд╛рддреА рд╣реБрдИ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рдЗрд╢рд╛рд░реЛрдВ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред


3 рд╡рд┐рдзрд┐рдпрд╛рдБ

/ * рдЬрдм рдПрдХ рдкреИрди рдЗрд╢рд╛рд░рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдХреБрдЫ CarPlay рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
/
рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝реЗрдХ рдореИрдкрдЯреИрдореНрдкрд▓реЗрдЯрдбреАрдбрдмрд┐рдирдкреИрдирдЧреНрдпреЛрд░ (_ mapTemplate: CPMapTemplate)


рдПрдХ рдкреИрди рдЬреЗрд╕реНрдЪрд░ рдмрджрд▓рдиреЗ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ CarPlay рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
/
рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рджреБрд░реНрдЧрдо рдорд╛рдирдЪрд┐рддреНрд░


/ * рдЬрдм рдПрдХ рдкреИрди рдЗрд╢рд╛рд░рд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдХреБрдЫ CarPlay рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
/
рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ func mapTemplate (_ mapTemplate: CPMapTemplate, didEndPanGestureWithVelocity рд╡реЗрдЧ: CGPoint
)


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


рдордЬреЗрджрд╛рд░ рддрдереНрдп: рдПрдХ CarPlay рд░реЗрдбрд┐рдпреЛ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдХреЗ рдПрдХ рдЪреМрдерд╛рдИ рд╣рд┐рд╕реНрд╕реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкреИрди рдЗрд╢рд╛рд░рд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ UIPANGestureRecognizer рдХреЛ рдХреЗрд╡рд▓ 10 рдЕрдВрдХ рдЪрд╛рд╣рд┐рдПред


рд╡рд┐рднрд┐рдиреНрди рд░реЗрдбрд┐рдпреЛ рдЯреЗрдк рд░рд┐рдХреЙрд░реНрдбрд░ рдкрд░ рдпреВрдЖрдИ рдХреА рдПрдХрд░реВрдкрддрд╛


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



рдФрд░ рдпрд╣ CPSearchTemplate UI рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдерд╛ред рдФрд░ рдЗрд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдордЭрдирд╛ рдЕрднреА рднреА рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдиреАрдЪреЗ рдХреА рдкреНрд▓реЗрдЯ рдореЗрдВ рдХрд┐рддрдиреЗ рд╕реЗрд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред


рдЧрддрд┐ рд╕реАрдорд╛ рдирд┐рдпрдВрддреНрд░рдг


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


рд╕рд╡рд╛рд▓ рдирдВрдмрд░ рдПрдХ: рдХрд╣рд╛рдВ рд░рдЦреЗрдВ?


CPWindow рдореЗрдВ .h рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдлрд┐рд░ рд╕реЗ, рдореБрдЭреЗ рдПрдХ рдЙрддреНрд╕реБрдХ рд▓реЗрдЖрдЙрдЯ рдорд┐рд▓рд╛:
var mapButtonSafeAreaLayoutGuide: UILayoutGuide


рдФрд░ рдпрд╣ рд╡рд╣реА рдирд┐рдХрд▓рд╛ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рдерд╛ред рд╣рдорд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рд╣реИ:




рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ рджреЛ: рдХреНрдпрд╛ рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдХрд╛рдиреВрдиреА рд╣реИ?


рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдЖрдзрд╛рд░ рджреГрд╢реНрдп рдкрд░ рд╣реИред рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдзрд╛рд░ рджреГрд╢реНрдп рдореЗрдВ рдирдХреНрд╢реЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:


 The base view is where the map is drawn. The base view must be used exclusively to draw a map, and may not be used to display other UI elements. Instead, navigation apps overlay UI elements such as the navigation bar and map buttons using the provided templates. 

рд▓реЗрдХрд┐рди рд╕рдореАрдХреНрд╖рдХреЛрдВ рдиреЗ рд╣рдореЗрдВ AppStore рдореЗрдВ рдпрд╛рдж рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдЕрднреА рднреА рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдЖрд╡рд╛рдЬ рдЦреЛрдЬ




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


рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛: рдПрдирд┐рдореЗрд╢рдиред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ CPVoiceControlTemplate рдореЗрдВ рдорд╛рдирдХ рдПрдирд┐рдореЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╛рдХреН рдкрд╣рдЪрд╛рди рдФрд░ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдиреАрдореЗрд╢рди рдХреЛ рдЪрд┐рддреНрд░реЛрдВ рд╕реЗ рдлреНрд░реЗрдо-рджрд░-рдлреНрд░реЗрдо рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ рдФрд░ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рдерд╛ рдХрд┐ рд╡реЗ рдХрд┐рддрдиреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЧрдП рдереЗред


 for i in 1...12 { if let image = UIImage(named: "carplay_searching_\(i)") { images.append(image) } } let image = UIImage.animatedImage(with: images, duration: 0.96) 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрд╡реЗрджрди рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд╣реАрдВ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ред


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


рд░рд╛рдЗрдЯ-рд╣реИрдВрдб рдбреНрд░рд╛рдЗрд╡ рдХрд╛рд░реЗрдВред


рд╣рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рднреЗрдЬрд╛ рдЧрдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ UI рдЙрд▓реНрдЯрд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛!



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


рдЕрд▓реНрдЯреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рдирд╣реАрдВ рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдХрдареЛрд░рддрд╛ рд╕реЗ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


 let isLeftWheelCar = self.speedControlViewController.view.frame.origin.x > self.view.frame.size.width / 2.0 

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИред


рд╡рд╣ рд╕рдм рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ CarPlay рдХреЗ рддрд╣рдд рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдирд╛рд╡рд┐рдХ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдФрд░ рд░реВрдкрд░реЗрдЦрд╛ рдЕрдкреВрд░реНрдг рд╣реИред рдордВрдЪ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рд╣реИ, рдХрд┐рд╕реА рдХреЛ рдХреБрдЫ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ Apple рдЬреНрдЮрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рдирд╣реАрдВ рд╣реИред

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


All Articles