Hi!
I'm working on trying to integrate SharePlay with Personas into a visionOS app. I'm still at the beginning stages and I'm following some of the 1st party documentation + videos from WWDC.
https://developer.apple.com/videos/play/wwdc2023/10087
https://developer.apple.com/documentation/groupactivities/adding-spatial-persona-support-to-an-activity#Update-the-immersion-level-automatically-for-a-Full-Space
I'm using:
Xcode 15.3 (15E204a)
visionOS 1.1 (21O209)
In both the examples linked above, they reference
systemCoordinator.groupImmersionStyle
However this doesn't seem to exist.
Also, it's not clear how to open/transition to the various spaces if groupImmersionStyle did exist and I could detect full, mixed, progressive spaces.
Am I missing something?
Was this removed or did I configure something incorrectly?
Is there a full sample for SharePlay + visionOS somewhere that I might have missed?
Thanks for any help!
Group Activities
RSS for tagIntegrate your app into FaceTime to share its contents with groups of people.
Posts under Group Activities tag
27 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
I'm developing a motion tracking app that takes requires a real-time view of an iPhone camera to capture the person's body. The motion is mapped to a virtual body. Currently this appears overlayed on the person that the iPhone sees.
However, I want to transmit this real time 3D virtual body to a different Apple device, as an AR app, that the other user can place in their environment.
Any suggestions on how I can get this 3d model to be viewable by another user (and maintain live updating based on motion tracking)?
I am adding Group Activities integration with a MacCatalyst app. I have added the Group Activities entitlement in Xcode. I also checked the entitlements with :
codesign --display --entitlements :-
I can see the entitlement :
<key>com.apple.developer.group-session</key><true/><key>
The feature work fine on iPadOS but when I run it on MacOS, the GroupActivitySharingController is not loading properly. I get the following error messages:
Cannot run query EXQuery: extension point com.apple.groupactivities platforms: 6 with error: (null)
Failed to lookup extension with query EXQuery: extension point com.apple.groupactivities platforms: 6 on <_GroupActivities_UIKit.PeoplePickerController: 0x600005020980>
Failed to fetch config for hostViewController <_GroupActivities_UIKit.PeoplePickerController: 0x600005020980>
Failed to build remote hostViewController for <_GroupActivities_UIKit.GroupActivitySharingController: 0x1417f1250>
Failed to fetch extensionViewController
Calling -viewDidAppear: directly on a view controller is not supported, and may result in out-of-order callbacks and other inconsistent behavior. Use the -beginAppearanceTransition:animated: and -endAppearanceTransition APIs on UIViewController to manually drive appearance callbacks instead. Make a symbolic breakpoint at UIViewControllerAlertForAppearanceCallbackMisuse to catch this in the debugger. View controller: <_GroupActivities_UIKit.GroupActivitySharingController: 0x1417f1250>
I got a similar error on iPadOS when the entitlement was not added. Now that I have the entitlement, the error appears only on MacOS.
Does MacOS/MacCatalyst use a different entitlements file? What could be cuasing this?
I have copied an sqlite file from document to app group container. I found that if I delete the app and reinstall, the file is automatically created.
How is that happed? The app group container is not just a folder and can be synchronized by iCloud?
I cannot find any informations about the feature. If there is, please show me the link, thanks
Hello,
I am new to Apple development and am wondering if I have configuration missing to enable access to FaceTime within the visionOS Simulator. I am on XCode 15.2, Simulator Version 15.2, and visionOS 1.0. I am trying to use the "Destinations Video" code as reference for implementing a shared activity but even running this in the simulator doesn't seem to prompt the SharePlay buttons shown in the video: https://developer.apple.com/documentation/visionos/destination-video
I am trying to test out SharePlay and GroupActivities but am not sure where exactly to download the developer Persona specified in the release notes here and how to configure that: https://developer.apple.com/documentation/visionos-release-notes/visionos-release-notes#FaceTime
Can someone advise on how to enable FaceTime + SharePlay in the visionOS Simulator?
Hi,
I am having trouble with Share Play working.
When I create and run the GroupActivity sample in SharePlay, I get the following message and GroupActivity does not work.
https://mitemmetim.medium.com/shareplay-tutorial-share-custom-data-between-ios-and-macos-a50bfecf6e64
Dropping activity as there is no active conversation: <TUMutableConversationActivityCreateSessionRequest 0x2836731c0 activityIdentifier=jp.co.1planet.sample.SharePlayTutorial.SharePlayActivity applicationContext={length = 42, bytes = 0x62706c69 73743030 d0080000 00000000 ... 00000000 00000009 } metadata=<TUConversationActivityMetadata 0x28072d380 context=CPGroupActivityGenericContext title=SharePlay Example sceneAssociationBehavior=<TUConversationActivitySceneAssociationBehavior 0x28237a740 targetContentIdentifier=(null) shouldAssociateScene=1 preferredSceneSessionRole=(null)>> UUID=3137DDE4-F5B2-46B2-9097-30DD6CAE79A3>
I tried running it on Mac and iOS, but it did not work as expected.
By the way, we are also trying the following
https://developer.apple.com/forums/thread/683624
I have no knowledge of GroupActivity; I have Group Activities set in Capability. Do I need to set anything else? Please let me know if you can find any solution to this message. By the way, I am using Xcode 15.2 Beta, iOS 17.1.1 and iOS 17.3 Beta, Mac OS 14.2.1 (23C71).
Best Regards.
I'd like to implement a fully immersive space that's experienced by multiple Vision Pro users simultaneously via SharePlay. To do this, the multiple Vision Pro users will join a SharePlay-enabled visionOS window that has a button to enter a fully immersive space, which is also SharePlay-enabled. I tried following the WWDC sessions and docs, but they don't provide enough detail about integrating SharePlay into an existing window and immersive space. How can I adjust my SharePlay code so it makes my visionOS window + fully immersive space SharePlay-able? Please see existing code below for a SharePlay visionOS widow, thank you.
P.S. WWDC ref. https://developer.apple.com/videos/play/wwdc2023/10087
import SwiftUI
import RealityKit
import RealityKitContent
import GroupActivities
import LinkPresentation
struct SharePlayWorld: View, GroupActivity {
@Environment(ViewModel.self) private var model
@Environment(\.openWindow) private var openWindow
@Environment(\.dismissWindow) private var dismissWindow
@Environment(\.openImmersiveSpace) private var openImmersiveSpace
@Environment(\.dismissImmersiveSpace) private var dismissImmersiveSpace
var body: some View {
@Bindable var model = model
Toggle(
model.isShowingPracticeSpace ? "Leave Space" : "Enter Space",
isOn: $model.isShowingPracticeSpace
)
.onChange(of: model.isShowingPracticeSpace) { _, isShowing in
Task {
if isShowing
{
await openImmersiveSpace(id: "SharePlayWorld")
}
else
{
await dismissImmersiveSpace()
}
}
}
.toggleStyle(.button)
}
// SHAREPLAY CODE
private func startSharePlaySession() async {
for await session in SharePlayWorld.sessions() {
guard let systemCoordinator = await session.systemCoordinator else { continue }
let isLocalParticipantSpatial = systemCoordinator.localParticipantState.isSpatial
Task.detached {
for await localParticipantState in systemCoordinator.localParticipantStates {
if localParticipantState.isSpatial {
// Start syncing scroll position
} else {
// Stop syncing scroll position
}
}
}
var configuration = SystemCoordinator.Configuration()
configuration.spatialTemplatePreference = .sideBySide
systemCoordinator.configuration = configuration
session.join()
}
// Create the activity
let activity = SharePlayWorld()
// Register the activity on the item provider
let itemProvider = NSItemProvider()
itemProvider.registerGroupActivity(activity)
// Create the activity items configuration
let configuration = await UIActivityItemsConfiguration(itemProviders: [itemProvider])
// Provide the metadata for the group activity
configuration.metadataProvider = { key in
guard key == .linkPresentationMetadata else { return nil }
let metadata = LPLinkMetadata()
metadata.title = "Explore Together"
metadata.imageProvider = NSItemProvider(object: UIImage(named: "explore-activity")!)
return metadata
}
self.activityItemsConfiguration = configuration
}
}
#Preview {
SharePlayWorld()
.environment(ViewModel())
}