Skip to content

PushToTalk iOS xcode14.0 beta1

Manuel de la Pena edited this page Aug 5, 2022 · 3 revisions

#PushToTalk.framework https://github.com/xamarin/xamarin-macios/pull/15645

diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTBase.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTBase.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTBase.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTBase.h	2022-05-21 09:01:58.000000000 -0400
@@ -0,0 +1,15 @@
+//
+//  PTBase.h
+//  PushToTalk
+//
+//  Copyright © 2022 Apple. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#ifdef __cplusplus
+#define PT_EXTERN extern "C" __attribute__((visibility("default")))
+#else
+#define PT_EXTERN extern __attribute__((visibility("default")))
+#endif
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelDescriptor.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelDescriptor.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelDescriptor.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelDescriptor.h	2022-05-31 14:52:25.000000000 -0400
@@ -0,0 +1,32 @@
+//
+//  PTChannelDescriptor.h
+//  PushToTalk
+//
+//  Copyright © 2022 Apple. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <PushToTalk/PTBase.h>
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+NS_SWIFT_SENDABLE // Immutable with no mutable subclasses
+PT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos)
+@interface PTChannelDescriptor : NSObject
+
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+
+- (instancetype)initWithName:(NSString *)name image:(UIImage *_Nullable)image NS_DESIGNATED_INITIALIZER;
+
+/// The channel's "group name" shown in system user interface. (This is shown while nobody else is speaking.)
+@property (nonatomic, copy, readonly) NSString *name;
+
+/// The channel's "group photo" presented in the system user interface. This image is shown while nobody else is speaking.
+@property (nonatomic, copy, readonly, nullable) UIImage *image;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelManager.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelManager.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelManager.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelManager.h	2022-05-31 14:52:25.000000000 -0400
@@ -0,0 +1,65 @@
+//
+//  PTChannelProvider.h
+//  PushToTalk
+//
+//  Copyright © 2022 Apple. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <PushToTalk/PTBase.h>
+#import <PushToTalk/PTChannelDescriptor.h>
+#import <PushToTalk/PTChannelManagerDelegate.h>
+#import <PushToTalk/PTChannelRestorationDelegate.h>
+#import <PushToTalk/PTParticipant.h>
+
+typedef NS_ENUM(NSInteger, PTServiceStatus) {
+    /// The service is available for use and ready for use by the client.
+    PTServiceStatusReady,
+    /// The client is attempting to establish a connection to the service.
+    PTServiceStatusConnecting,
+    /// The service has become unavailable and availability needs to be re-established once conditions have changed.
+    PTServiceStatusUnavailable,
+} API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos);
+
+NS_ASSUME_NONNULL_BEGIN
+
+NS_SWIFT_SENDABLE
+PT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos)
+@interface PTChannelManager : NSObject
+
+/// You must instantiate a channel manager upon launching your app, otherwise the system will tear down channels and their ability to receive pushes. By providing a restoration delegate, you can decide whether to rejoin or leave any previously active channels that the system knows about. Once the channel restoration process is completed, you will be given the PTChannelManager instance.
++ (void)channelManagerWithDelegate:(id <PTChannelManagerDelegate>)delegate restorationDelegate:(id <PTChannelRestorationDelegate>)restorationDelegate completionHandler:(void(^)(PTChannelManager * _Nullable manager, NSError *_Nullable error))completionHandler NS_SWIFT_NAME(channelManager(delegate:restorationDelegate:completionHandler:));
+
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+
+/// Only one channel can be active at a time -- this is the channel that will handle user events
+/// This being nonnull reflects whether the user can see this channel is active in the user interface
+/// The ephemeral push token is only usable when this is nonnull.
+@property (nonatomic, strong, nullable, readonly) NSUUID *activeChannelUUID;
+
+/// You may only join a channel in the foreground. If successful, you will receive the delegate callback channelManager:didJoinChannelWithUUID:reason: with reason PTChannelJoinReasonProgrammaticRequest. Otherwise, the delegate callback channelManager:failedToJoinChannelWithUUID:error: will be invoked if implemented.
+- (void)requestJoinChannelWithUUID:(NSUUID *)channelUUID descriptor:(PTChannelDescriptor *)descriptor NS_SWIFT_NAME(requestJoinChannel(channelUUID:descriptor:));
+
+/// If successful, you will receive the delegate callback channelManager:channelUUID:didBeginTransmittingFromSource: with PTChannelTransmitRequestSourceProgrammaticRequest. Otherwise, the delegate callback channelManager:failedToBeginTransmittingInChannelWithUUID:error: will be invoked if implemented.
+- (void)requestBeginTransmittingWithChannelUUID:(NSUUID *)channelUUID NS_SWIFT_NAME(requestBeginTransmitting(channelUUID:));
+
+/// If successful, you will receive the delegate callback channelManager:channelUUID:didEndTransmittingFromSource with request source PTChannelTransmitRequestSourceProgrammaticRequest. Otherwise, the delegate callback channelManager:failedToStopTransmittingInChannelWithUUID:error: will be invoked if implemented. Generally, this should always succeed, unless you are not currently transmitting or are not joined to a channel.
+- (void)stopTransmittingWithChannelUUID:(NSUUID *)channelUUID NS_SWIFT_NAME(stopTransmitting(channelUUID:));
+
+/// If successful, you will receive the delegate callback channelManager:channelUUID:didLeaveChannelWithUUID:reason: with reason PTChannelLeaveReasonProgrammaticRequest, Otherwise, the delegate callback channelManager:failedToLeaveChannelWithUUID:error: will be invoked if implemented. Generally, this should always succeed so long as you are already joined to a channel.
+- (void)leaveChannelWithUUID:(NSUUID *)channelUUID NS_SWIFT_NAME(leaveChannel(channelUUID:));
+
+/// Updates the channel descriptor
+- (void)setChannelDescriptor:(PTChannelDescriptor *)channelDescriptor forChannelUUID:(NSUUID *)channelUUID completionHandler:(void (^_Nullable)(NSError * _Nullable error))completionHandler NS_SWIFT_NAME(setChannelDescriptor(_:channelUUID:completionHandler:));
+
+/// When receiving incoming audio from a remote participant, set the participant to a nonnull value, which will update the system user interface and block transmitting. When the user has stopped speaking, set the participant to nil.
+- (void)setActiveRemoteParticipant:(PTParticipant *_Nullable)participant forChannelUUID:(NSUUID *)channelUUID completionHandler:(void (^_Nullable)(NSError * _Nullable error))completionHandler NS_SWIFT_NAME(setActiveRemoteParticipant(_:channelUUID:completionHandler:));
+
+/// The default value for service status is PTServiceStatusReady. If your underlying network connection is experiencing issues, set the appropriate service status. The service status will be reflected in the system user interface.
+- (void)setServiceStatus:(PTServiceStatus)status forChannelUUID:(NSUUID *)channelUUID completionHandler:(void (^_Nullable)(NSError * _Nullable))completionHandler NS_SWIFT_NAME(setServiceStatus(_:channelUUID:completionHandler:));
+
+@end
+
+NS_ASSUME_NONNULL_END
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelManagerDelegate.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelManagerDelegate.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelManagerDelegate.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelManagerDelegate.h	2022-05-31 14:49:55.000000000 -0400
@@ -0,0 +1,88 @@
+//
+//  PTChannelEventDelegate.h
+//  PushToTalk
+//
+//  Copyright © 2022 Apple. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <PushToTalk/PTParticipant.h>
+#import <PushToTalk/PTPushResult.h>
+
+@class PTChannelManager;
+@class AVAudioSession;
+
+typedef NS_ENUM(NSInteger, PTChannelJoinReason) {
+    /// The app joined via a programmatic call to requestJoinChannelWithUUID:descriptor: while in the foreground
+    PTChannelJoinReasonDeveloperRequest = 0,
+    
+    /// Rejoined via channel restoration
+    PTChannelJoinReasonChannelRestoration = 1,
+} API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos);
+
+typedef NS_ENUM(NSInteger, PTChannelLeaveReason) {
+    PTChannelLeaveReasonUnknown = 0,
+    
+    /// User pressed the leave button in the system UI
+    PTChannelLeaveReasonUserRequest = 1,
+    
+    /// The app made a call to leaveChannelWithUUID:
+    PTChannelLeaveReasonDeveloperRequest = 2,
+    
+    /// For example, a new managed device restriction has come into effect
+    PTChannelLeaveReasonSystemPolicy = 3,
+} API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos);
+
+typedef NS_ENUM(NSInteger, PTChannelTransmitRequestSource) {
+    PTChannelTransmitRequestSourceUnknown = 0,
+    
+    /// User pressed the transmit button in the on-screen system user interface
+    PTChannelTransmitRequestSourceUserRequest = 1,
+    
+    /// The app made a call to requestBeginTransmittingWithChannelUUID:
+    PTChannelTransmitRequestSourceDeveloperRequest = 2,
+    
+    /// User pressed a button on a hands-free device such as a wired headset
+    PTChannelTransmitRequestSourceHandsfreeButton = 3,
+} API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol PTChannelManagerDelegate <NSObject>
+
+/// This method is called when your channel becomes active in the system user interface
+- (void)channelManager:(PTChannelManager *)channelManager didJoinChannelWithUUID:(NSUUID *)channelUUID reason:(PTChannelJoinReason)reason NS_SWIFT_NAME(channelManager(_:didJoinChannel:reason:));
+
+/// This method is called once your channel is ended
+- (void)channelManager:(PTChannelManager *)channelManager didLeaveChannelWithUUID:(NSUUID *)channelUUID reason:(PTChannelLeaveReason)reason NS_SWIFT_NAME(channelManager(_:didLeaveChannel:reason:));
+
+/// This method is called when the user begins pressing the Talk button in the system user interface,  when a programmatic transmit start request succeeds, or transmitting began due to a hands-free accessory button press.
+- (void)channelManager:(PTChannelManager *)channelManager channelUUID:(NSUUID *)channelUUID didBeginTransmittingFromSource:(PTChannelTransmitRequestSource)source;
+
+/// This method is called when the user stops pressing the Talk button in the system user interface,  when a programmatic transmit stop request succeeds, or transmitting ends due to a hands-free accessory button press.
+- (void)channelManager:(PTChannelManager *)channelManager channelUUID:(NSUUID *)channelUUID didEndTransmittingFromSource:(PTChannelTransmitRequestSource)source;
+
+/// This method is called when your channel manager receives a push token after joining a channel. This token is ephemeral and is only valid while joined to the channel; it is invalidated when the user or a push request leave the channel. When sending pushes, the apns-topic header field must use your app’s bundle ID with .voip-ptt appended to the end
+- (void)channelManager:(PTChannelManager *)channelManager receivedEphemeralPushToken:(NSData *)pushToken;
+
+/// This method is called for each incoming push. You must instantiate and return nonnil PTPushResult for each incoming push. The system will fulfill the action specified by the PTPushResult on your behalf automatically.
+- (PTPushResult *)incomingPushResultForChannelManager:(PTChannelManager *)channelManager channelUUID:(NSUUID *)channelUUID pushPayload:(NSDictionary<NSString *, id> *)pushPayload NS_SWIFT_NAME(incomingPushResult(channelManager:channelUUID:pushPayload:));
+
+- (void)channelManager:(PTChannelManager *)channelManager didActivateAudioSession:(AVAudioSession *)audioSession;
+
+- (void)channelManager:(PTChannelManager *)channelManager didDeactivateAudioSession:(AVAudioSession *)audioSession;
+
+@optional
+
+- (void)channelManager:(PTChannelManager *)channelManager failedToJoinChannelWithUUID:(NSUUID *)channelUUID error:(NSError *)error NS_SWIFT_NAME(channelManager(_:failedToJoinChannel:error:));
+
+- (void)channelManager:(PTChannelManager *)channelManager failedToLeaveChannelWithUUID:(NSUUID *)channelUUID error:(NSError *)error NS_SWIFT_NAME(channelManager(_:failedToLeaveChannel:error:));
+
+- (void)channelManager:(PTChannelManager *)channelManager failedToBeginTransmittingInChannelWithUUID:(NSUUID *)channelUUID error:(NSError *)error NS_SWIFT_NAME(channelManager(_:failedToBeginTransmittingInChannel:error:));
+
+- (void)channelManager:(PTChannelManager *)channelManager failedToStopTransmittingInChannelWithUUID:(NSUUID *)channelUUID error:(NSError *)error NS_SWIFT_NAME(channelManager(_:failedToStopTransmittingInChannel:error:));
+
+@end
+
+NS_ASSUME_NONNULL_END
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelRestorationDelegate.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelRestorationDelegate.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelRestorationDelegate.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTChannelRestorationDelegate.h	2022-05-21 09:01:58.000000000 -0400
@@ -0,0 +1,23 @@
+//
+//  PTChannelRestorationDelegate.h
+//  PushToTalk
+//
+//  Copyright © 2022 Apple. All rights reserved.
+//
+
+
+#import <Foundation/Foundation.h>
+#import <PushToTalk/PTChannelDescriptor.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol PTChannelRestorationDelegate <NSObject>
+
+/// If the system had been tracking a channel previously, this method will be called.
+- (PTChannelDescriptor *)channelDescriptorForRestoredChannelUUID:(NSUUID *)channelUUID NS_SWIFT_NAME(channelDescriptor(restoredChannelUUID:));
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTErrors.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTErrors.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTErrors.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTErrors.h	2022-05-31 14:52:25.000000000 -0400
@@ -0,0 +1,60 @@
+//
+//  PTErrors.h
+//  PushToTalk
+//
+//  Copyright © 2022 Apple. All rights reserved.
+//
+
+
+#import <PushToTalk/PTBase.h>
+
+PT_EXTERN NSErrorDomain const PTInstantiationErrorDomain API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos);
+PT_EXTERN NSErrorDomain const PTChannelErrorDomain API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos);
+
+typedef NS_ERROR_ENUM(PTInstantiationErrorDomain, PTInstantiationError) {
+    PTInstantiationErrorUnknown = 0,
+    
+    /// The PushToTalk API is not available on the simulator or macOS devices
+    PTInstantiationErrorInvalidPlatform = 1,
+    
+    /// App is lacking the push-to-talk UIBackgroundMode
+    PTInstantiationErrorMissingBackgroundMode = 2,
+    
+    /// App is lacking apns-environment entitlement (Push Notifications Capability)
+    PTInstantiationErrorMissingPushServerEnvironment = 3,
+    
+    /// App is lacking the com.apple.developer.push-to-talk entitlement
+    PTInstantiationErrorMissingEntitlement = 4,
+    
+    /// There is already an in-flight instantiation request
+    PTInstantiationErrorInstantiationAlreadyInProgress = 5,
+} API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos);
+
+typedef NS_ERROR_ENUM(PTChannelErrorDomain, PTChannelError) {
+    PTChannelErrorUnknown = 0,
+    
+    /// The action cannot be performed because there is no active channel with the supplied UUID
+    PTChannelErrorChannelNotFound = 1,
+    
+    /// There is a maximum of one active channel at a time, for the whole device
+    PTChannelErrorChannelLimitReached = 2,
+    
+    /// A traditional call is ongoing, preventing the channel action
+    PTChannelErrorCallActive = 3,
+    
+    /// Setting a nonnil active participant is not posible while transmitting is ongoing.
+    PTChannelErrorTransmissionInProgress = 4,
+    
+    /// Error for trying to end a transmission when no transmission is even started
+    PTChannelErrorTransmissionNotFound = 5,
+    
+    /// Error for trying to join a channel or begin transmitting while app is not foreground
+    PTChannelErrorAppNotForeground = 6,
+    
+    /// A device management policy or profile forbids joining the channel
+    PTChannelErrorDeviceManagementRestriction = 7,
+    
+    /// A Screen Time restriction prevented the action
+    PTChannelErrorScreenTimeRestriction = 8,
+} API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos);
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTParticipant.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTParticipant.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTParticipant.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTParticipant.h	2022-05-31 14:52:25.000000000 -0400
@@ -0,0 +1,28 @@
+//
+//  PTParticipant.h
+//  PushToTalk
+//
+//  Copyright © 2022 Apple. All rights reserved.
+//
+
+#import <PushToTalk/PTBase.h>
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+NS_SWIFT_SENDABLE // Immutable with no mutable subclasses
+PT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos)
+@interface PTParticipant : NSObject
+
+@property (nonatomic, readonly, copy) NSString *name;
+@property (nonatomic, readonly, copy, nullable) UIImage *image;
+
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+
+/// The name length must be greater than 0. 
+- (instancetype)initWithName:(NSString *)name image:(UIImage *_Nullable)image NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTPushResult.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTPushResult.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTPushResult.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PTPushResult.h	2022-05-31 14:52:25.000000000 -0400
@@ -0,0 +1,30 @@
+//
+//  PTPushResult.h
+//  PushToTalk
+//
+//  Copyright © 2022 Apple. All rights reserved.
+//
+
+
+#import <PushToTalk/PTParticipant.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+NS_SWIFT_SENDABLE // Immutable with no mutable subclasses
+PT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos)
+__attribute__((objc_subclassing_restricted))
+@interface PTPushResult : NSObject
+
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+
+/// Use this if the push is a result of the user leaving the channel
+@property(class, nonatomic, readonly) PTPushResult *leaveChannelPushResult NS_SWIFT_NAME(leaveChannel);
+
+/// Use this to report the active remote participant that started speaking
++ (PTPushResult *)pushResultForActiveRemoteParticipant:(PTParticipant *)participant NS_SWIFT_NAME(activeRemoteParticipant(_:));
+
+@end
+
+NS_ASSUME_NONNULL_END
+
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PushToTalk.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PushToTalk.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PushToTalk.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PushToTalk.framework/Headers/PushToTalk.h	2022-05-21 09:01:58.000000000 -0400
@@ -0,0 +1,16 @@
+//
+//  PushToTalk.h
+//  PushToTalk
+//
+//  Copyright © 2022 Apple. All rights reserved.
+//
+
+#import <PushToTalk/PTBase.h>
+#import <PushToTalk/PTParticipant.h>
+#import <PushToTalk/PTPushResult.h>
+#import <PushToTalk/PTChannelDescriptor.h>
+#import <PushToTalk/PTChannelManagerDelegate.h>
+#import <PushToTalk/PTChannelRestorationDelegate.h>
+#import <PushToTalk/PTChannelManager.h>
+#import <PushToTalk/PTErrors.h>
+
Clone this wiki locally