CarPlay Audio and Navigation Apps
CarPlay Audio and Navigation Apps
WWDC 2018
What’s Special About CarPlay ?
- Touch screens, rotary knob, and touchpad inputs
- Left and right hand drive
- Night interface style
- Screen sizes
- Automaker
![](https://cdn-images-1.medium.com/max/800/1*tA6T8cSfuoQJPCvuAbaong.png)
- Messaging
![](https://cdn-images-1.medium.com/max/800/1*DCwcohpc6pAIDnfhYgCOIw.png)
- VoIP calling
- Audio ( new )
![](https://cdn-images-1.medium.com/max/800/1*Qk2JPKc5OUiQ-Xszn5TK3Q.png)
- Navigation ( new )
![](https://cdn-images-1.medium.com/max/800/1*JYk6FmmNEs7bEYmlxgTpvA.png)
Audio Apps in CarPlay
- Template based
- Works with all CarPlay systems
- Uses existing MediaPlayer APIs
CarPlay Audio App APIs
MPPlayableContent
![](https://cdn-images-1.medium.com/max/800/1*Ki5-JCof9PPjM3fTQCo-rw.png)
![](https://cdn-images-1.medium.com/max/800/1*FLU0_lU_4EtjOpLrW4I03g.png)
Improvements in iOS 12 ( new )
- Improved performance in
MPPlayableContent
- Faster startup sequence
- Smoother animations
- Better communication to your app
Best Practices
- Call
reloadData()
only when needed ⚠️ - Use
beginUpdates( )
andendUpdate( )
- Keep an internal representation of the data source to optimize performance
Don’t Miss a Beat ! ⚠️
Account for these common scenarios
- Screen locked with passcode
- Unreliable network connectivity
![](https://cdn-images-1.medium.com/max/800/1*sBTMKzwbyhbQMDwuxEjTiQ.gif)
Anticipate the Hits
Utilize beginLoadingChildItems( )
to initiate fetching content
![](https://cdn-images-1.medium.com/max/800/1*cFLCPHRuTYih5MIInvlS8Q.png)
![](https://cdn-images-1.medium.com/max/800/1*bMT-KbOf8pCvgX1Q6Sc9jw.gif)
Greatest Hits
- Use
MPPlayableContent
to populate the CarPlay screen - Anticipate user scenarios while driving
- Run your audio apps in CarPlay!
Navigation Apps in CarPlay
- Built with CarPlay framework
- Template based
- Supports all CarPlay systems
![](https://cdn-images-1.medium.com/max/800/1*uZcVRew2ooj9UZvZA6wgrg.png)
Map Template
Key responsibilities
- Panning
- Navigation Alerts
![](https://cdn-images-1.medium.com/max/800/1*BeSPF4qbmvsobrk6JtwUVQ.jpeg)
- Guidance
![](https://cdn-images-1.medium.com/max/800/1*H8O-JKQ4DJxdllArtm7_sQ.png)
![](https://cdn-images-1.medium.com/max/800/1*fTpl5u9b3aUvHgUzRhxHaw.png)
![](https://cdn-images-1.medium.com/max/800/1*koNKqnProsHuSvVu_9wWjQ.png)
![](https://cdn-images-1.medium.com/max/800/1*IrsBSq6dBjFy-YTejd6iTg.png)
![](https://cdn-images-1.medium.com/max/800/1*62L10_i49d8iTOqMr1ifFQ.png)
![](https://cdn-images-1.medium.com/max/800/1*pz7ndGfdtoKu3mtyxxFPLw.png)
![](https://cdn-images-1.medium.com/max/800/1*CLHcPyLIlY5w4iPt_-zgnA.png)
![](https://cdn-images-1.medium.com/max/800/1*HBUTRTg7Erup0K5eOUYjrw.gif)
Guidance
![](https://cdn-images-1.medium.com/max/800/1*9RecfCPOTUSUIWEm1MEDmg.png)
![](https://cdn-images-1.medium.com/max/800/1*cEAnkSenF15MRfL1DIo_EA.png)
Route Preview
Class and methods
![](https://cdn-images-1.medium.com/max/800/1*jchpXx3tkh1NIQiQdzbiRw.png)
![](https://cdn-images-1.medium.com/max/800/1*AATHIbiBNQVweRW3eQh2rA.gif)
Guidance
- Classes and method
![](https://cdn-images-1.medium.com/max/800/1*fJfQ57SMKR2rTzVhgfj_4Q.png)
![](https://cdn-images-1.medium.com/max/800/1*0qp6QjMS7spMRGHnpiTJ-w.png)
- What happens next ?
- Set upcoming maneuvers and travel estimates
- Set pause reason
- Navigation alerts
- End Navigation
Notifications
![](https://cdn-images-1.medium.com/max/800/1*pfufmXC6YfOavXTUphhDDA.png)
![](https://cdn-images-1.medium.com/max/800/1*FCFABBH45dghANwkD9YmtQ.png)
Demo
![](https://cdn-images-1.medium.com/max/800/1*p_Aer6cyH0i9o9wNkijwLw.png)
![](https://cdn-images-1.medium.com/max/800/1*NjbQ4e1Sk5_uSjPEIK7YWQ.png)
![](https://cdn-images-1.medium.com/max/800/1*AATHIbiBNQVweRW3eQh2rA.gif)