-
Notifications
You must be signed in to change notification settings - Fork 216
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Push to Start Live Activities #881
Conversation
} | ||
|
||
if (@available(iOS 16.1, *)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We check ios version and log error - is there a reason version is checked here but not in the react native implementation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will make them consistent
- (void)setPushToStartToken:(FlutterMethodCall *)call withResult:(FlutterResult)result { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These 4 methods should resolve by calling result(nil)
at the end
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
Remove autorelease pool
Description
One Line Summary
Update SDK to support Live Activities PushToStart and add a concept of a "Default" Live Activity to facilitate easier adoption.
Details
Push to Start Live Activities
Starting with iOS 17.2, Live Activities can now be started via push notification (Apple's documentation). This change enhances the OneSignal SDK to provide application's access to the full suite of Live Activity functionality.
Default Live Activity
The concept of a "Default" Live Activity has been established in the SDK, which eliminates the need for a customer app to define and manage their own
ActivityAttributes
. This is most beneficial for wrapper-SDKs, as they will no longer need to create their own cross-platform <-> native iOS bridge to establish this management. The following new external interfaces are provided for customer app's to use:DefaultLiveActivityAttributes
struct which conforms toOneSignalLiveActivityAttributes
(i.e. a OneSignal awareActivityAttributes
). A customer app can create a widget withActivityConfiguration(for: DefaultLiveActivityAttributes.self)
to use this provided model. TheDefaultLiveActivityAttributes
establishes a dynamic dictionary of attributes, able to consume any customer-provided structure of data.OneSignal.LiveActivities.setupDefault()
which tells the OneSignal SDK to manage the LiveActivity lifecycle for theDefaultLiveActivityAttributes
type. When calling this method, a customer can use both 'push-to-start' and push-to-update notifications to start/update/end their Default Live Activity.OneSignal.LiveActivities.startDefault(activityId, activityAttributes, initialContentState)
which allows a customer app to start a live activity based on theDefaultLiveActivityAttributes
type "in app".The downside to using a default Live Activity is:
Text(context.state.message)
it would be rendered asText(context.state.data["message"]?.asString() ?? "")
.Alternative (low level) method to setup Live Activities with OneSignal
If a customer app does not want to use the default live activity they can still create their own
ActivityAttribute
structure and manage the live activity lifecycle themselves. These methods require the application to listen for pushToStart token updates, the starting of live activities, and update token updates. This encompasses existingfunctions
OneSignal.LiveActivities.enter
andOneSignal.LiveActivities.exit
which are documented here. Additional new methods to cover registering/unregistering pushToStart tokens have been created:OneSignal.LiveActivities.setPushToStartToken
: To be called 'per-activity-typeeach time that activity type's pushToStart token has been refreshed. An "activity type" is the name of the
ActivityAttribute` structure. The new pushToStart tokens are sync'd to the OneSignal backend and registered against the current subscription, where it can be the target of a started live activity.OneSignal.LiveActivities.removePushToStartToken
: To be calledper-activity-type
whenever that activity type should no longer be registered against the current subscription.Motivation
Full support of Live Activities functionality introduced in iOS 17.2
Scope
Live Activities
Testing
Manual testing
enter
,exit
,setPushToStartToken
, andremovePushToStartToken
. Note that the lower level methods send dummy tokens, the example app does not show how to create a react native<->ios native bridge to manage live activities.Affected code checklist
Checklist
Overview
Testing
Final pass
This change is