Skip to content

Commit 46ca7a5

Browse files
author
Melih Gurgah
committed
fix: bump minimum iOS to 16.2 for push-based Live Activities
1 parent c78d1aa commit 46ca7a5

File tree

11 files changed

+31
-31
lines changed

11 files changed

+31
-31
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Real-time job tracking with Live Activity support for React Native apps. Perfect
1111
## Features
1212

1313
-**Real-time updates** via Polling
14-
-**iOS Live Activity** - Lock Screen & Dynamic Island (iOS 16.1+)
14+
-**iOS Live Activity** - Lock Screen & Dynamic Island (iOS 16.2+)
1515
-**Android Ongoing Notification** - Persistent foreground notification
1616
-**Multi-job support** - Track up to 5 concurrent Live Activities
1717
-**React hooks** for easy integration
@@ -237,7 +237,7 @@ function RunningJobs() {
237237
238238
## iOS Live Activity
239239
240-
Show job progress on the Lock Screen and Dynamic Island (iOS 16.1+).
240+
Show job progress on the Lock Screen and Dynamic Island (iOS 16.2+).
241241
242242
### Setup
243243

ios/SeennLiveActivity.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class SeennLiveActivity: RCTEventEmitter {
5353
// MARK: - Push Token Callback
5454

5555
private func setupPushTokenCallback() {
56-
if #available(iOS 16.1, *) {
56+
if #available(iOS 16.2, *) {
5757
SeennLiveActivityRegistry.shared.setPushTokenCallback { [weak self] jobId, token in
5858
guard let self = self else { return }
5959
if self.hasListeners {
@@ -92,7 +92,7 @@ class SeennLiveActivity: RCTEventEmitter {
9292
resolve: @escaping RCTPromiseResolveBlock,
9393
reject: @escaping RCTPromiseRejectBlock
9494
) {
95-
if #available(iOS 16.1, *) {
95+
if #available(iOS 16.2, *) {
9696
guard let bridge = SeennLiveActivityRegistry.shared.getBridge() else {
9797
resolve(false)
9898
return
@@ -108,7 +108,7 @@ class SeennLiveActivity: RCTEventEmitter {
108108
resolve: @escaping RCTPromiseResolveBlock,
109109
reject: @escaping RCTPromiseRejectBlock
110110
) {
111-
if #available(iOS 16.1, *) {
111+
if #available(iOS 16.2, *) {
112112
guard let bridge = SeennLiveActivityRegistry.shared.getBridge() else {
113113
resolve(false)
114114
return
@@ -124,7 +124,7 @@ class SeennLiveActivity: RCTEventEmitter {
124124
resolve: @escaping RCTPromiseResolveBlock,
125125
reject: @escaping RCTPromiseRejectBlock
126126
) {
127-
if #available(iOS 16.1, *) {
127+
if #available(iOS 16.2, *) {
128128
resolve(SeennLiveActivityRegistry.shared.isRegistered)
129129
} else {
130130
resolve(false)
@@ -149,7 +149,7 @@ class SeennLiveActivity: RCTEventEmitter {
149149
let initialProgress = params["initialProgress"] as? Int ?? 0
150150
let initialMessage = params["initialMessage"] as? String
151151

152-
if #available(iOS 16.1, *) {
152+
if #available(iOS 16.2, *) {
153153
guard let bridge = SeennLiveActivityRegistry.shared.getBridge() else {
154154
resolve([
155155
"success": false,
@@ -172,7 +172,7 @@ class SeennLiveActivity: RCTEventEmitter {
172172
} else {
173173
resolve([
174174
"success": false,
175-
"error": "Live Activities require iOS 16.1+"
175+
"error": "Live Activities require iOS 16.2+"
176176
])
177177
}
178178
}
@@ -202,7 +202,7 @@ class SeennLiveActivity: RCTEventEmitter {
202202
eta = Date(timeIntervalSince1970: timestamp)
203203
}
204204

205-
if #available(iOS 16.1, *) {
205+
if #available(iOS 16.2, *) {
206206
guard let bridge = SeennLiveActivityRegistry.shared.getBridge() else {
207207
resolve(false)
208208
return
@@ -261,7 +261,7 @@ class SeennLiveActivity: RCTEventEmitter {
261261
ctaCornerRadius = ctaButton["cornerRadius"] as? Int
262262
}
263263

264-
if #available(iOS 16.1, *) {
264+
if #available(iOS 16.2, *) {
265265
guard let bridge = SeennLiveActivityRegistry.shared.getBridge() else {
266266
resolve(false)
267267
return
@@ -295,7 +295,7 @@ class SeennLiveActivity: RCTEventEmitter {
295295
resolve: @escaping RCTPromiseResolveBlock,
296296
reject: @escaping RCTPromiseRejectBlock
297297
) {
298-
if #available(iOS 16.1, *) {
298+
if #available(iOS 16.2, *) {
299299
guard let bridge = SeennLiveActivityRegistry.shared.getBridge() else {
300300
resolve([])
301301
return
@@ -312,7 +312,7 @@ class SeennLiveActivity: RCTEventEmitter {
312312
resolve: @escaping RCTPromiseResolveBlock,
313313
reject: @escaping RCTPromiseRejectBlock
314314
) {
315-
if #available(iOS 16.1, *) {
315+
if #available(iOS 16.2, *) {
316316
guard let bridge = SeennLiveActivityRegistry.shared.getBridge() else {
317317
resolve(false)
318318
return
@@ -331,7 +331,7 @@ class SeennLiveActivity: RCTEventEmitter {
331331
resolve: @escaping RCTPromiseResolveBlock,
332332
reject: @escaping RCTPromiseRejectBlock
333333
) {
334-
if #available(iOS 16.1, *) {
334+
if #available(iOS 16.2, *) {
335335
guard let bridge = SeennLiveActivityRegistry.shared.getBridge() else {
336336
resolve(false)
337337
return
@@ -347,7 +347,7 @@ class SeennLiveActivity: RCTEventEmitter {
347347
resolve: @escaping RCTPromiseResolveBlock,
348348
reject: @escaping RCTPromiseRejectBlock
349349
) {
350-
if #available(iOS 16.1, *) {
350+
if #available(iOS 16.2, *) {
351351
guard let bridge = SeennLiveActivityRegistry.shared.getBridge() else {
352352
resolve(false)
353353
return

ios/SeennLiveActivityManager.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Foundation
88
// Your app must implement SeennLiveActivityBridge and register it during app init.
99
// See: https://docs.seenn.io/client/react-native#live-activity-setup
1010

11-
@available(iOS 16.1, *)
11+
@available(iOS 16.2, *)
1212
public protocol SeennLiveActivityBridge: AnyObject {
1313
/// Check if Live Activities are enabled on this device
1414
func areActivitiesEnabled() -> Bool
@@ -71,7 +71,7 @@ public protocol SeennLiveActivityBridge: AnyObject {
7171

7272
// MARK: - Bridge Registry
7373

74-
@available(iOS 16.1, *)
74+
@available(iOS 16.2, *)
7575
@objc(SeennLiveActivityRegistry)
7676
public class SeennLiveActivityRegistry: NSObject {
7777
@objc public static let shared = SeennLiveActivityRegistry()

ios/SeennReactNative.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Pod::Spec.new do |s|
1010
s.license = package["license"]
1111
s.authors = package["author"]
1212

13-
s.platforms = { :ios => "16.1" }
13+
s.platforms = { :ios => "16.2" }
1414
s.source = { :git => package["repository"]["url"], :tag => "v#{s.version}" }
1515

1616
s.source_files = "*.{h,m,mm,swift}"

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@seenn/react-native",
3-
"version": "0.9.2",
3+
"version": "0.9.3",
44
"description": "Seenn React Native SDK - Job state transport with iOS Live Activity support (Expo compatible)",
55
"main": "dist/index.js",
66
"module": "dist/index.mjs",

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
export { Seenn } from './Seenn';
66

7-
// Live Activity (iOS 16.1+) - Native Module
7+
// Live Activity (iOS 16.2+) - Native Module
88
export { LiveActivity } from './native/LiveActivity';
99
export type {
1010
LiveActivityStartParams,

src/native/JobNotification.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export const JobNotification = {
123123

124124
/**
125125
* Check if job notifications are supported on this device
126-
* - iOS: Requires iOS 16.1+ with Live Activities enabled
126+
* - iOS: Requires iOS 16.2+ with Live Activities enabled
127127
* - Android: Requires Android 8.0+ (API 26)
128128
*/
129129
async isSupported(): Promise<boolean> {

src/native/LiveActivity.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ function getEventEmitter(): NativeEventEmitter | null {
170170
export const LiveActivity = {
171171
/**
172172
* Check if Live Activities are supported on this device
173-
* Returns false on Android and iOS < 16.1
173+
* Returns false on Android and iOS < 16.2
174174
*/
175175
async isSupported(): Promise<boolean> {
176176
if (Platform.OS !== 'ios') return false;

templates/SeennLiveActivityBridge/SeennLiveActivityBridgeImpl.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import SeennReactNative
1010
//
1111
// Copy this file to your Xcode project and register it in AppDelegate.
1212

13-
@available(iOS 16.1, *)
13+
@available(iOS 16.2, *)
1414
class SeennLiveActivityBridgeImpl: SeennLiveActivityBridge {
1515

1616
static let shared = SeennLiveActivityBridgeImpl()

templates/SeennWidgetExtension/SeennJobAttributes.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import Foundation
1212

1313
/// Attributes for Seenn Job Live Activity
1414
/// Must match the definition in SeennReactNative
15-
@available(iOS 16.1, *)
15+
@available(iOS 16.2, *)
1616
public struct SeennJobAttributes: ActivityAttributes {
1717
public struct ContentState: Codable, Hashable {
1818
public var progress: Int

0 commit comments

Comments
 (0)