Streaming is available in most browsers,
and in the Developer app.
-
Add SharePlay to your app
Discover how your app can take advantage of SharePlay to turn any activity into a shareable experience with friends! We'll share the latest updates to SharePlay, explore the benefits of creating shared activities, dive into some exciting use cases, and take you through best practices to create engaging and fun moments of connection in your app.
Chapters
- 2:10 - New to SharePlay
- 5:43 - Use Cases
- 9:48 - Add SharePlay to your app
- 11:09 - Best Practices
Resources
Related Videos
WWDC23
-
Download
♪ Mellow instrumental hip-hop ♪ ♪ Justin Etzine: Welcome to "Add SharePlay to your app." I'm Justin Etzine from the SharePlay team. When people think of SharePlay, they often think about being on a FaceTime call with their friends, watching a show, or listening to music together. In fact, these are the most popular types of SharePlay experiences today. Many video streaming and music listening apps support SharePlay, including Apple's own. Just press play, and you're in the activity together. But really, it's much more than that. SharePlay is all about any activity with any group. It can help bring groups to activities in apps without needing to worry about accounts or servers. SharePlay can also be added to enhance shared experiences already offered by your apps today. With a small amount of work to adopt, you can bring an instant start with the group that's already there. And we believe privacy to be a fundamental human right. The powerful data channel optimized and secured for FaceTime powers SharePlay too. This means GroupActivities provides a fully end-to-end encrypted channel for your app's data to pass through, and Apple cannot see any app data sent over SharePlay. Virtually every app offers opportunities for SharePlay. Any activity is better when you can share it with friends, and there, SharePlay can help. And with GroupActivities, the framework to adopt for SharePlay, app teams small and large can leverage everything they need to get the group together to the activity and to facilitate fast data transfer between participants once in the activity. At its core, you bring the activity, and we'll bring the group. In this session, we'll cover some of the new products, technologies, and features coming to SharePlay. We'll tell you a bit about how they unlock new use cases, walk you through the benefits of adopting SharePlay for your app, and offer advice on best practices to get the most from SharePlay. Groups are often already together when they use SharePlay. And the activity started may not be the experience they stick with throughout their time together. One of the beauties of SharePlay is that it enables your apps to take advantage of the group that's already present. SharePlay has been especially impactful for me with my family living on the east coast of the United States. SharePlay helps me maintain a close connection to my brother and parents. At first, we looked to connect those far away through meaningful and fun experiences in your apps. This is why, when we first created SharePlay, we focused the experience of SharePlay in FaceTime calls. From there, we expanded SharePlay so that it could be used with or without a call with SharePlay via Messages. But beyond far away, often the group is right there next to you, in the same room. We're thrilled to bring SharePlay over AirDrop in iOS 17, where bringing your devices together starts a SharePlay, just like that. One of my favorite parts of AirDrop is how easy it is to find who you're trying to share with, since they're in the same room. Imagine even when you're next to somebody, jamming out on the subway with your friends, laughing at the funniest new memes, or finding your dream home with your partner without having to look over one person's shoulder. No need to ask for their username or email to share. Just AirDrop and you're there, together. AirDrop joins FaceTime and Messages as existing group contexts you can bring to SharePlay. And as the group moves, so does the SharePlay. If you start it nearby and move apart, you can keep the chat going in Messages. And hopping into a FaceTime call is just a tap away. And in tvOS 17, you can start your FaceTime call on the big screen. From there, getting the SharePlay going is just an app away. As you'll hear a bit later in the talk, this is a great example of why we encourage you to bring SharePlay to your apps across the ecosystem, so that when the group moves the experience can keep going without a hitch. Now, when defining your GroupActivity type, you provide metadata to inform the system on how to best represent your activity. For this order together here, we specify an activity type of generic. This type, among other things, tells the system HUD which icon to use: Watching together, listening together, playing together through Game Center, or generic to indicate any other form of SharePlay experience you can imagine. In iOS 17, iPadOS 17, macOS Sonoma, and tvOS 17, we're adding some additional types to help best classify activities: Workout, Shop, Read, Learn, and Create Together. We're excited to see how this helps illustrate your exciting types of experiences, both now and to come. WWDC23 has some fantastic content about how to use SharePlay in new ways. To learn more about them, check out "Build spatial SharePlay experiences." Some apps may want to take advantage of SharePlay, but with content that not everyone has access to before the activity begins. For this, try the new SharePlay file transfer APIs, which you can learn about more in "Share files with SharePlay." By nature, SharePlay can mean something different from app to app, depending on the experiences enabled. Let's dive into some cool use cases that can be enhanced with SharePlay. Adding SharePlay to an education app can help elevate static diagrams and text into interactive views that stay in sync so students can engage together, no matter if they're far away or in the same classroom. Prep your meals for the week to maximize your macros with your partner and eat healthier together. Browse the latest feed to find the funniest new content. And if you combine everyone's interests, there will be something in there for everyone. Go shopping together. Figure out what furniture suits both your styles before you move in with your new roommates. Coordinate a rideshare with friends. Browse the menu from your favorite takeout place together and easily order family style. Take a moment to pause and think about the potential of SharePlay in your app. What group experiences have you thought about or are already offered in your app today? Phew! Lots of exciting use cases there. All this thinking's got me hungry.
Priya Shah: Oh, hi, Justin, are you ordering lunch? Justin: Oh, hey, yeah, perfect timing! I was just about to order some tacos from that food truck down the street -- they just adopted SharePlay. Priya: I love their tacos! Want to do a group order? Justin: Yeah, let's do it.
Priya: Awesome! Could you add Gavin and Timirah too so they can join our group order? Justin: Oh, yeah. Sure. Priya: I think I'm going to get the spicy tofu taco. Justin: I think I'm going to go with the chicken tinga taco. Priya: That sounds really good. Oh, Timirah just added some chips and guac. Justin: I can't wait. Priya: I'm so excited. Justin: I'll see you in a minute. Priya: See ya. Starting a group order with Justin who was right next to me, and our friends who are on their way, was quick and seamless with SharePlay. And now I know I have some tacos to look forward to. SharePlay is a powerful feature that can take any activity in your app and make it available for people to enjoy in groups for a more engaging and interactive experience. By enabling real-time shared experiences like these, you can connect people in new ways and provide them with a more social and collaborative experience. Adopting SharePlay brings a group directly into your app, either to a shared experience you've already created or to elevate an experience by making it possible to now share with groups. If your app is currently full of rich experiences for individuals, adopting SharePlay is a quick way to allow people to experience your app with their friends and family. And if your app already supports group experiences, SharePlay can help make sharing seamless by leveraging existing groups far and near from FaceTime, Messages, and now, even AirDrop. SharePlay helps bring the group of friends to your shared activity. Looks like Timirah just kicked off this week's social hour with her favorite playlist. Anyone else in the group is also able to change the playlist. Once a group is in a SharePlay session, there is no need to reshare when switching activities. People can also completely change the activity type without having to reconfigure the group. So a viral hit might remind Justin of an activity in your app! And if your app supports SharePlay, he can seamlessly bring the entire group with him to check it out. And if anyone in the group doesn't already have your app, they are taken to the App Store to download it if they'd like to join the group. Once you've added the group activity capability to your app, new this year in iOS 17, tapping the Share button from an active FaceTime call presents a new, redesigned menu card showcasing apps that support SharePlay and collaboration experiences to make it even easier for people to step into your activity with friends. Adopting GroupActivities also provides your app with all the necessary group-management UI elements like a people picker, notifications, and state changes, so you can focus on building an engaging activity. Additionally, by adopting SharePlay, you also get the real-time, low-latency, and fully encrypted data channel for syncing your app's activity. In order to leverage all of these benefits, let's take a look at adopting SharePlay. First, we will import the GroupActivities framework and create an activity which follows the GroupActivity protocol. We will then define the activity with an activity identifier unique to this app. Then we will add the activity metadata which specifies parts of the shared experience that are user facing -- the title, the preview image, and the type. These details will show up in the UI so everyone knows exactly which activity they are joining. You might have multiple activities in the same app. So it's important to make sure the title and icon are not generic. The title is the name of the activity the group started, not the name of the app. And the optional subtitle lets you provide even more detail about the activity. In this example, we've added the name of the taco truck the order together activity is associated with. And the preview image is not the app's icon, but specific to the activity of ordering tacos together. Check out the SharePlay documentation on developer.apple.com to implement starting, joining, and ending SharePlay experiences for your app. And to learn how to use SharePlay to adapt to your use case with GroupSessionMessenger, check out the session "Build Custom Experiences with Group Activities." Once you have the basic adoption of SharePlay complete, let's consider some best practices to make your app's SharePlay experience magical and seamless. To build a great experience, it is important to design for your specific use case. Think about the experience you are creating as if you and your friends are sharing it together without any devices. How might you talk about a show together, order food together, or shop together? Take note of the parts of these experiences that make you feel connected to the people you're sharing them with. Add elements to your app's design that might help preserve that feeling of togetherness. We dive deep into this topic in the session "Make a Great SharePlay Experience." When getting your app set up for SharePlay, it's also important to consider the different platforms that your app supports. SharePlay is now available on iOS, iPadOS, macOS, and tvOS to ensure that anyone on any device can join the experience you're building. With the addition of SharePlay through AirDrop, make sure to think about both types of SharePlay experiences, when people are apart and when they're close by. In order to make group activities in your app even more discoverable, support the ability to SharePlay directly in your app's UI with a SharePlay button. Additionally, don't forget to adopt NSItemProvider for your group activity. This will allow people to start a session with their friends from the ShareSheet and with friends nearby using AirDrop. Make sure that your metadata and state changes are descriptive and understandable in the context of someone using your app with their friends. This ensure everyone knows what's going on with the activity. And finally, don't forget to test your experience. You will need two or more physical devices for testing the SharePlay functionality effectively to make sure everyone enjoying your activity has the same incredible experience you had intended. Every app has an opportunity for SharePlay SharePlay gives you access to existing groups from FaceTime, Messages, and now, even AirDrop. It provides a performant and private data channel for syncing your app's data, and takes care of group management UI like people pickers, notifications, and state management. When creating your own SharePlay experience, keep best practices in mind. We cannot wait to see all the incredible SharePlay experiences you build. Thank you for watching our session. ♪
-
-
4:15 - Defining your GroupActivity type
var metadata: GroupActivityMetadata { var metadata = GroupActivityMetadata() metadata.title = “Order Tacos Together” metadata.type = .generic return metadata }
-
9:50 - Add SharePlay
import GroupActivities struct OrderTogether: GroupActivity { // Define a unique activity identifier for system to reference static let activityIdentifier = "com.example.apple-samplecode.TacoTruck.OrderTogether" // App-specific data so your app can launch the activity on others' devices let orderUUID: UUID let truckName: String var metadata: GroupActivityMetadata { var metadata = GroupActivityMetadata() metadata.title = "Order Tacos Together" metadata.subtitle = truckName metadata.previewImage = UIImage(named: "ActivityImage")?.cgImage metadata.type = .shopTogether return metadata } }
-
-
Looking for something specific? Enter a topic above and jump straight to the good stuff.
An error occurred when submitting your query. Please check your Internet connection and try again.