From 5e84b8f061178b2e973ccbc024a42cd16b9b3321 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Fri, 26 Apr 2024 17:34:14 -0400 Subject: [PATCH 1/4] Push to Start Live Activities --- examples/RNOneSignalTS/ios/Podfile | 5 + examples/RNOneSignalTS/ios/Podfile.lock | 66 +++-- .../RNOneSignalTS.xcodeproj/project.pbxproj | 259 +++++++++++++++++- .../ios/RNOneSignalTS/Info.plist | 2 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../Assets.xcassets/Contents.json | 6 + .../WidgetBackground.colorset/Contents.json | 11 + .../onesignaldemo.imageset/Contents.json | 21 ++ .../onesignaldemo.imageset/onesignal-logo.png | Bin 0 -> 20552 bytes .../ios/RNOneSignalWidget/Info.plist | 11 + .../RNOneSignalWidgetBundle.swift | 16 ++ .../RNOneSignalWidgetLiveActivity.swift | 65 +++++ examples/RNOneSignalTS/src/OSButtons.tsx | 77 ++++++ examples/RNOneSignalTS/src/OSDemo.tsx | 6 + ios/RCTOneSignal/RCTOneSignalEventEmitter.m | 41 +++ src/index.ts | 102 ++++++- src/models/LiveActivities.ts | 15 + 18 files changed, 699 insertions(+), 28 deletions(-) create mode 100644 examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/Contents.json create mode 100644 examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json create mode 100644 examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json create mode 100644 examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png create mode 100644 examples/RNOneSignalTS/ios/RNOneSignalWidget/Info.plist create mode 100644 examples/RNOneSignalTS/ios/RNOneSignalWidget/RNOneSignalWidgetBundle.swift create mode 100644 examples/RNOneSignalTS/ios/RNOneSignalWidget/RNOneSignalWidgetLiveActivity.swift create mode 100644 src/models/LiveActivities.ts diff --git a/examples/RNOneSignalTS/ios/Podfile b/examples/RNOneSignalTS/ios/Podfile index b33e170b..80fcf840 100644 --- a/examples/RNOneSignalTS/ios/Podfile +++ b/examples/RNOneSignalTS/ios/Podfile @@ -21,6 +21,11 @@ target 'RNOneSignalTS' do # post_install do |installer| # flipper_post_install(installer) # end + pod 'OneSignalXCFramework', :path => '~/Development/OneSignal/onesignal-ios-sdk' +end + +target 'RNOneSignalWidgetExtension' do + pod 'OneSignalXCFramework', :path => '~/Development/OneSignal/onesignal-ios-sdk' end target 'RNOneSignalTS-tvOS' do diff --git a/examples/RNOneSignalTS/ios/Podfile.lock b/examples/RNOneSignalTS/ios/Podfile.lock index 09fdf3c2..c28162b5 100644 --- a/examples/RNOneSignalTS/ios/Podfile.lock +++ b/examples/RNOneSignalTS/ios/Podfile.lock @@ -10,26 +10,48 @@ PODS: - React-jsi (= 0.64.4) - ReactCommon/turbomodule/core (= 0.64.4) - glog (0.3.5) - - OneSignalXCFramework (5.0.0-beta-01): - - OneSignalXCFramework/OneSignalCore (= 5.0.0-beta-01) - - OneSignalXCFramework/OneSignalExtension (= 5.0.0-beta-01) - - OneSignalXCFramework/OneSignalNotifications (= 5.0.0-beta-01) - - OneSignalXCFramework/OneSignalOSCore (= 5.0.0-beta-01) - - OneSignalXCFramework/OneSignalOutcomes (= 5.0.0-beta-01) - - OneSignalXCFramework/OneSignalUser (= 5.0.0-beta-01) - - OneSignalXCFramework/OneSignalCore (5.0.0-beta-01) - - OneSignalXCFramework/OneSignalExtension (5.0.0-beta-01): + - OneSignalXCFramework (5.1.5): + - OneSignalXCFramework/OneSignalComplete (= 5.1.5) + - OneSignalXCFramework/OneSignal (5.1.5): - OneSignalXCFramework/OneSignalCore + - OneSignalXCFramework/OneSignalExtension + - OneSignalXCFramework/OneSignalLiveActivities + - OneSignalXCFramework/OneSignalNotifications + - OneSignalXCFramework/OneSignalOSCore + - OneSignalXCFramework/OneSignalOutcomes + - OneSignalXCFramework/OneSignalUser + - OneSignalXCFramework/OneSignalComplete (5.1.5): + - OneSignalXCFramework/OneSignal + - OneSignalXCFramework/OneSignalInAppMessages + - OneSignalXCFramework/OneSignalLocation + - OneSignalXCFramework/OneSignalCore (5.1.5) + - OneSignalXCFramework/OneSignalExtension (5.1.5): + - OneSignalXCFramework/OneSignalCore + - OneSignalXCFramework/OneSignalOutcomes + - OneSignalXCFramework/OneSignalInAppMessages (5.1.5): + - OneSignalXCFramework/OneSignalCore + - OneSignalXCFramework/OneSignalNotifications + - OneSignalXCFramework/OneSignalOSCore - OneSignalXCFramework/OneSignalOutcomes - - OneSignalXCFramework/OneSignalNotifications (5.0.0-beta-01): + - OneSignalXCFramework/OneSignalUser + - OneSignalXCFramework/OneSignalLiveActivities (5.1.5): + - OneSignalXCFramework/OneSignalCore + - OneSignalXCFramework/OneSignalOSCore + - OneSignalXCFramework/OneSignalUser + - OneSignalXCFramework/OneSignalLocation (5.1.5): + - OneSignalXCFramework/OneSignalCore + - OneSignalXCFramework/OneSignalNotifications + - OneSignalXCFramework/OneSignalOSCore + - OneSignalXCFramework/OneSignalUser + - OneSignalXCFramework/OneSignalNotifications (5.1.5): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalExtension - OneSignalXCFramework/OneSignalOutcomes - - OneSignalXCFramework/OneSignalOSCore (5.0.0-beta-01): + - OneSignalXCFramework/OneSignalOSCore (5.1.5): - OneSignalXCFramework/OneSignalCore - - OneSignalXCFramework/OneSignalOutcomes (5.0.0-beta-01): + - OneSignalXCFramework/OneSignalOutcomes (5.1.5): - OneSignalXCFramework/OneSignalCore - - OneSignalXCFramework/OneSignalUser (5.0.0-beta-01): + - OneSignalXCFramework/OneSignalUser (5.1.5): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalNotifications - OneSignalXCFramework/OneSignalOSCore @@ -227,8 +249,8 @@ PODS: - React-jsi (= 0.64.4) - React-perflogger (= 0.64.4) - React-jsinspector (0.64.4) - - react-native-onesignal (4.5.0): - - OneSignalXCFramework (= 5.0.0-beta-01) + - react-native-onesignal (5.1.2): + - OneSignalXCFramework (= 5.1.5) - React (< 1.0.0, >= 0.13.0) - React-perflogger (0.64.4) - React-RCTActionSheet (0.64.4): @@ -301,6 +323,7 @@ DEPENDENCIES: - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - OneSignalXCFramework (from `~/Development/OneSignal/onesignal-ios-sdk`) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) @@ -332,7 +355,6 @@ DEPENDENCIES: SPEC REPOS: trunk: - boost-for-react-native - - OneSignalXCFramework EXTERNAL SOURCES: DoubleConversion: @@ -343,6 +365,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/FBReactNativeSpec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + OneSignalXCFramework: + :path: "~/Development/OneSignal/onesignal-ios-sdk" RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTRequired: @@ -398,9 +422,9 @@ SPEC CHECKSUMS: boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de FBLazyVector: fa8275d5086566e22a26ddc385ab5772e7f9b1bd - FBReactNativeSpec: 799cb1402acc2a3e73cb23b36dae1513cd34e35d + FBReactNativeSpec: 342841ad3cdf88a10071a3507d3708b236cee677 glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62 - OneSignalXCFramework: 7d3eb90c3e78908b0d72aa88600bfdab694460ec + OneSignalXCFramework: f30c480b2de63da9c2c0195415cda40635552f13 RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c RCTRequired: f85fa00af016059cf88b90b8f8ff9a6af9e4b6c3 RCTTypeSafety: 5279aaf0fb1ad715cbbbbee32d5c98c72598bc9c @@ -412,7 +436,7 @@ SPEC CHECKSUMS: React-jsi: 64f80675a66899bf0f4a58b8e3908966fa516234 React-jsiexecutor: 8c077bef1c64430b6034f27df1000d194551e2eb React-jsinspector: d4f6973dd474357dbaaf6f52f31ffc713bf3e766 - react-native-onesignal: 039457cc04ef4e56c30069c4f3a1f3e893986abf + react-native-onesignal: 788854579298ce9c147ce21412efd03939f3a4a5 React-perflogger: 5a890ca0911669421b7611661e9b58f91c805f5c React-RCTActionSheet: bd180e0879f8424a73650c5c28fbef4f3b5b27fb React-RCTAnimation: 1004d2b4be1f2cedfdc4cb2326adc95b989e6c6b @@ -427,6 +451,6 @@ SPEC CHECKSUMS: ReactCommon: b4a65d2d6e9eeffd4b32dde1245962b3f43907d0 Yoga: d1fc3575b8b68891ff5ef3c276daa855e841eb32 -PODFILE CHECKSUM: f9cd8e12615dff6738f284cf82df8cb563bf51cf +PODFILE CHECKSUM: ed9d9960aa1a99be2f8a4eca21e1d34a6d2db081 -COCOAPODS: 1.11.3 +COCOAPODS: 1.15.2 diff --git a/examples/RNOneSignalTS/ios/RNOneSignalTS.xcodeproj/project.pbxproj b/examples/RNOneSignalTS/ios/RNOneSignalTS.xcodeproj/project.pbxproj index 4ce04e86..3112eb92 100644 --- a/examples/RNOneSignalTS/ios/RNOneSignalTS.xcodeproj/project.pbxproj +++ b/examples/RNOneSignalTS/ios/RNOneSignalTS.xcodeproj/project.pbxproj @@ -11,11 +11,18 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 253695C4E9A699005F42621D /* libPods-RNOneSignalWidgetExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61034C424A27BFA51ECE7842 /* libPods-RNOneSignalWidgetExtension.a */; }; 29BEA1DBD99B294F68C30F74 /* libPods-RNOneSignalTS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A9C6834BD4C5D01D66A88E4 /* libPods-RNOneSignalTS.a */; }; 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2DCD954D1E0B4F2C00145EB5 /* RNOneSignalTSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* RNOneSignalTSTests.m */; }; + 47D8EDE32BDC200D00C1DFB8 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D8EDE22BDC200D00C1DFB8 /* WidgetKit.framework */; }; + 47D8EDE52BDC200D00C1DFB8 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D8EDE42BDC200D00C1DFB8 /* SwiftUI.framework */; }; + 47D8EDE82BDC200D00C1DFB8 /* RNOneSignalWidgetBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47D8EDE72BDC200D00C1DFB8 /* RNOneSignalWidgetBundle.swift */; }; + 47D8EDEA2BDC200D00C1DFB8 /* RNOneSignalWidgetLiveActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47D8EDE92BDC200D00C1DFB8 /* RNOneSignalWidgetLiveActivity.swift */; }; + 47D8EDEE2BDC200E00C1DFB8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 47D8EDED2BDC200E00C1DFB8 /* Assets.xcassets */; }; + 47D8EDF22BDC200E00C1DFB8 /* RNOneSignalWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 47D8EDE12BDC200D00C1DFB8 /* RNOneSignalWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 498F06C29F943469E4545E09 /* libPods-RNOneSignalTS-RNOneSignalTSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B0F4647666F7BF086F879F61 /* libPods-RNOneSignalTS-RNOneSignalTSTests.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; E59362D331330C433770475D /* libPods-RNOneSignalTS-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 731F649974B0D3A78561EBEB /* libPods-RNOneSignalTS-tvOS.a */; }; @@ -37,10 +44,32 @@ remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; remoteInfo = "RNOneSignalTS-tvOS"; }; + 47D8EDF02BDC200E00C1DFB8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 47D8EDE02BDC200D00C1DFB8; + remoteInfo = RNOneSignalWidgetExtension; + }; /* End PBXContainerItemProxy section */ +/* Begin PBXCopyFilesBuildPhase section */ + 47D8EDF32BDC200E00C1DFB8 /* Embed Foundation Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 47D8EDF22BDC200E00C1DFB8 /* RNOneSignalWidgetExtension.appex in Embed Foundation Extensions */, + ); + name = "Embed Foundation Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00BDEDC593673D3A90947A63 /* Pods-RNOneSignalWidgetExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNOneSignalWidgetExtension.debug.xcconfig"; path = "Target Support Files/Pods-RNOneSignalWidgetExtension/Pods-RNOneSignalWidgetExtension.debug.xcconfig"; sourceTree = ""; }; 00E356EE1AD99517003FC87E /* RNOneSignalTSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNOneSignalTSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* RNOneSignalTSTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNOneSignalTSTests.m; sourceTree = ""; }; @@ -55,9 +84,19 @@ 2D02E47B1E0B4A5D006451C7 /* RNOneSignalTS-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RNOneSignalTS-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D02E4901E0B4A5D006451C7 /* RNOneSignalTS-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "RNOneSignalTS-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 36D4E6F2A4B2D0FD6204CDC5 /* Pods-RNOneSignalTS-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNOneSignalTS-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-RNOneSignalTS-tvOSTests/Pods-RNOneSignalTS-tvOSTests.debug.xcconfig"; sourceTree = ""; }; + 47D8EDE12BDC200D00C1DFB8 /* RNOneSignalWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = RNOneSignalWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 47D8EDE22BDC200D00C1DFB8 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; + 47D8EDE42BDC200D00C1DFB8 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; + 47D8EDE72BDC200D00C1DFB8 /* RNOneSignalWidgetBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNOneSignalWidgetBundle.swift; sourceTree = ""; }; + 47D8EDE92BDC200D00C1DFB8 /* RNOneSignalWidgetLiveActivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNOneSignalWidgetLiveActivity.swift; sourceTree = ""; }; + 47D8EDED2BDC200E00C1DFB8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 47D8EDEF2BDC200E00C1DFB8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 47D8EDF72BDC206D00C1DFB8 /* OneSignalLiveActivities.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = OneSignalLiveActivities.xcframework; path = "../../../../onesignal-ios-sdk/iOS_SDK/OneSignalSDK/OneSignal_LiveActivities/OneSignalLiveActivities.xcframework"; sourceTree = ""; }; 4D0B08EF16DFB3514375DEA2 /* Pods-RNOneSignalTS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNOneSignalTS.release.xcconfig"; path = "Target Support Files/Pods-RNOneSignalTS/Pods-RNOneSignalTS.release.xcconfig"; sourceTree = ""; }; 5B888D71258AA3AB00DE2069 /* RNOneSignalTS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = RNOneSignalTS.entitlements; path = RNOneSignalTS/RNOneSignalTS.entitlements; sourceTree = ""; }; 5E39C0CF1D4B9C731BDF0E2B /* Pods-RNOneSignalTS-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNOneSignalTS-tvOS.release.xcconfig"; path = "Target Support Files/Pods-RNOneSignalTS-tvOS/Pods-RNOneSignalTS-tvOS.release.xcconfig"; sourceTree = ""; }; + 61034C424A27BFA51ECE7842 /* libPods-RNOneSignalWidgetExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNOneSignalWidgetExtension.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 71DAE3F4B0D815B08FEFC968 /* Pods-RNOneSignalWidgetExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNOneSignalWidgetExtension.release.xcconfig"; path = "Target Support Files/Pods-RNOneSignalWidgetExtension/Pods-RNOneSignalWidgetExtension.release.xcconfig"; sourceTree = ""; }; 731F649974B0D3A78561EBEB /* libPods-RNOneSignalTS-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNOneSignalTS-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = RNOneSignalTS/LaunchScreen.storyboard; sourceTree = ""; }; 87C7E919B1029F3FE8F8EFD4 /* libPods-RNOneSignalTS-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNOneSignalTS-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -103,6 +142,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 47D8EDDE2BDC200D00C1DFB8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 47D8EDE52BDC200D00C1DFB8 /* SwiftUI.framework in Frameworks */, + 47D8EDE32BDC200D00C1DFB8 /* WidgetKit.framework in Frameworks */, + 253695C4E9A699005F42621D /* libPods-RNOneSignalWidgetExtension.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -141,16 +190,31 @@ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( + 47D8EDF72BDC206D00C1DFB8 /* OneSignalLiveActivities.xcframework */, ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, 0A9C6834BD4C5D01D66A88E4 /* libPods-RNOneSignalTS.a */, B0F4647666F7BF086F879F61 /* libPods-RNOneSignalTS-RNOneSignalTSTests.a */, 731F649974B0D3A78561EBEB /* libPods-RNOneSignalTS-tvOS.a */, 87C7E919B1029F3FE8F8EFD4 /* libPods-RNOneSignalTS-tvOSTests.a */, + 47D8EDE22BDC200D00C1DFB8 /* WidgetKit.framework */, + 47D8EDE42BDC200D00C1DFB8 /* SwiftUI.framework */, + 61034C424A27BFA51ECE7842 /* libPods-RNOneSignalWidgetExtension.a */, ); name = Frameworks; sourceTree = ""; }; + 47D8EDE62BDC200D00C1DFB8 /* RNOneSignalWidget */ = { + isa = PBXGroup; + children = ( + 47D8EDE72BDC200D00C1DFB8 /* RNOneSignalWidgetBundle.swift */, + 47D8EDE92BDC200D00C1DFB8 /* RNOneSignalWidgetLiveActivity.swift */, + 47D8EDED2BDC200E00C1DFB8 /* Assets.xcassets */, + 47D8EDEF2BDC200E00C1DFB8 /* Info.plist */, + ); + path = RNOneSignalWidget; + sourceTree = ""; + }; 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( @@ -164,6 +228,7 @@ 13B07FAE1A68108700A75B9A /* RNOneSignalTS */, 832341AE1AAA6A7D00B99B32 /* Libraries */, 00E356EF1AD99517003FC87E /* RNOneSignalTSTests */, + 47D8EDE62BDC200D00C1DFB8 /* RNOneSignalWidget */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, 8FFF12E89EE080FB55269932 /* Pods */, @@ -180,6 +245,7 @@ 00E356EE1AD99517003FC87E /* RNOneSignalTSTests.xctest */, 2D02E47B1E0B4A5D006451C7 /* RNOneSignalTS-tvOS.app */, 2D02E4901E0B4A5D006451C7 /* RNOneSignalTS-tvOSTests.xctest */, + 47D8EDE12BDC200D00C1DFB8 /* RNOneSignalWidgetExtension.appex */, ); name = Products; sourceTree = ""; @@ -195,6 +261,8 @@ 5E39C0CF1D4B9C731BDF0E2B /* Pods-RNOneSignalTS-tvOS.release.xcconfig */, 36D4E6F2A4B2D0FD6204CDC5 /* Pods-RNOneSignalTS-tvOSTests.debug.xcconfig */, 885D3FE2ACBD052AC8EF22FC /* Pods-RNOneSignalTS-tvOSTests.release.xcconfig */, + 00BDEDC593673D3A90947A63 /* Pods-RNOneSignalWidgetExtension.debug.xcconfig */, + 71DAE3F4B0D815B08FEFC968 /* Pods-RNOneSignalWidgetExtension.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -235,10 +303,12 @@ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 258A29E138A5D5C56B8AB2B5 /* [CP] Copy Pods Resources */, BF08836FBCCF6DF73FFD31DC /* [CP] Embed Pods Frameworks */, + 47D8EDF32BDC200E00C1DFB8 /* Embed Foundation Extensions */, ); buildRules = ( ); dependencies = ( + 47D8EDF12BDC200E00C1DFB8 /* PBXTargetDependency */, ); name = RNOneSignalTS; productName = RNOneSignalTS; @@ -284,12 +354,31 @@ productReference = 2D02E4901E0B4A5D006451C7 /* RNOneSignalTS-tvOSTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + 47D8EDE02BDC200D00C1DFB8 /* RNOneSignalWidgetExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 47D8EDF62BDC200E00C1DFB8 /* Build configuration list for PBXNativeTarget "RNOneSignalWidgetExtension" */; + buildPhases = ( + 800906FA7CF5F140E441461B /* [CP] Check Pods Manifest.lock */, + 47D8EDDD2BDC200D00C1DFB8 /* Sources */, + 47D8EDDE2BDC200D00C1DFB8 /* Frameworks */, + 47D8EDDF2BDC200D00C1DFB8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RNOneSignalWidgetExtension; + productName = RNOneSignalWidgetExtension; + productReference = 47D8EDE12BDC200D00C1DFB8 /* RNOneSignalWidgetExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 83CBB9F71A601CBA00E9B192 /* Project object */ = { isa = PBXProject; attributes = { + LastSwiftUpdateCheck = 1530; LastUpgradeCheck = 1130; TargetAttributes = { 00E356ED1AD99517003FC87E = { @@ -312,6 +401,11 @@ ProvisioningStyle = Automatic; TestTargetID = 2D02E47A1E0B4A5D006451C7; }; + 47D8EDE02BDC200D00C1DFB8 = { + CreatedOnToolsVersion = 15.3; + DevelopmentTeam = 99SW8E36CT; + ProvisioningStyle = Automatic; + }; }; }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RNOneSignalTS" */; @@ -331,6 +425,7 @@ 00E356ED1AD99517003FC87E /* RNOneSignalTSTests */, 2D02E47A1E0B4A5D006451C7 /* RNOneSignalTS-tvOS */, 2D02E48F1E0B4A5D006451C7 /* RNOneSignalTS-tvOSTests */, + 47D8EDE02BDC200D00C1DFB8 /* RNOneSignalWidgetExtension */, ); }; /* End PBXProject section */ @@ -367,6 +462,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 47D8EDDF2BDC200D00C1DFB8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 47D8EDEE2BDC200E00C1DFB8 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -467,9 +570,12 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNOneSignalTS-RNOneSignalTSTests/Pods-RNOneSignalTS-RNOneSignalTSTests-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalFramework.framework/OneSignalFramework", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignal/OneSignalFramework.framework/OneSignalFramework", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalCore/OneSignalCore.framework/OneSignalCore", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalExtension/OneSignalExtension.framework/OneSignalExtension", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalInAppMessages/OneSignalInAppMessages.framework/OneSignalInAppMessages", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalLiveActivities/OneSignalLiveActivities.framework/OneSignalLiveActivities", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalLocation/OneSignalLocation.framework/OneSignalLocation", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalNotifications/OneSignalNotifications.framework/OneSignalNotifications", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalOSCore/OneSignalOSCore.framework/OneSignalOSCore", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalOutcomes/OneSignalOutcomes.framework/OneSignalOutcomes", @@ -480,6 +586,9 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalFramework.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalCore.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalExtension.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalInAppMessages.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalLiveActivities.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalLocation.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalNotifications.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalOSCore.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalOutcomes.framework", @@ -534,6 +643,28 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + 800906FA7CF5F140E441461B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNOneSignalWidgetExtension-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 985973970AD5AD54BC615F13 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -559,9 +690,12 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNOneSignalTS/Pods-RNOneSignalTS-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalFramework.framework/OneSignalFramework", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignal/OneSignalFramework.framework/OneSignalFramework", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalCore/OneSignalCore.framework/OneSignalCore", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalExtension/OneSignalExtension.framework/OneSignalExtension", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalInAppMessages/OneSignalInAppMessages.framework/OneSignalInAppMessages", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalLiveActivities/OneSignalLiveActivities.framework/OneSignalLiveActivities", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalLocation/OneSignalLocation.framework/OneSignalLocation", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalNotifications/OneSignalNotifications.framework/OneSignalNotifications", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalOSCore/OneSignalOSCore.framework/OneSignalOSCore", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OneSignalXCFramework/OneSignalOutcomes/OneSignalOutcomes.framework/OneSignalOutcomes", @@ -572,6 +706,9 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalFramework.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalCore.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalExtension.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalInAppMessages.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalLiveActivities.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalLocation.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalNotifications.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalOSCore.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OneSignalOutcomes.framework", @@ -657,6 +794,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 47D8EDDD2BDC200D00C1DFB8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 47D8EDE82BDC200D00C1DFB8 /* RNOneSignalWidgetBundle.swift in Sources */, + 47D8EDEA2BDC200D00C1DFB8 /* RNOneSignalWidgetLiveActivity.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -670,6 +816,11 @@ target = 2D02E47A1E0B4A5D006451C7 /* RNOneSignalTS-tvOS */; targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; }; + 47D8EDF12BDC200E00C1DFB8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 47D8EDE02BDC200D00C1DFB8 /* RNOneSignalWidgetExtension */; + targetProxy = 47D8EDF02BDC200E00C1DFB8 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -722,6 +873,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 0A7DFFDE8B0834B951B8FAB1 /* Pods-RNOneSignalTS.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = RNOneSignalTS/RNOneSignalTS.entitlements; @@ -747,6 +899,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 4D0B08EF16DFB3514375DEA2 /* Pods-RNOneSignalTS.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = RNOneSignalTS/RNOneSignalTS.entitlements; @@ -880,6 +1033,99 @@ }; name = Release; }; + 47D8EDF42BDC200E00C1DFB8 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 00BDEDC593673D3A90947A63 /* Pods-RNOneSignalWidgetExtension.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = RNOneSignalWidget/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = RNOneSignalWidget; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.5/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.RNOneSignalWidget; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 47D8EDF52BDC200E00C1DFB8 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 71DAE3F4B0D815B08FEFC968 /* Pods-RNOneSignalWidgetExtension.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = RNOneSignalWidget/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = RNOneSignalWidget; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.5/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.RNOneSignalWidget; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; 83CBBA201A601CBA00E9B192 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1032,6 +1278,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 47D8EDF62BDC200E00C1DFB8 /* Build configuration list for PBXNativeTarget "RNOneSignalWidgetExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 47D8EDF42BDC200E00C1DFB8 /* Debug */, + 47D8EDF52BDC200E00C1DFB8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RNOneSignalTS" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/examples/RNOneSignalTS/ios/RNOneSignalTS/Info.plist b/examples/RNOneSignalTS/ios/RNOneSignalTS/Info.plist index 900cddea..7a74d71c 100644 --- a/examples/RNOneSignalTS/ios/RNOneSignalTS/Info.plist +++ b/examples/RNOneSignalTS/ios/RNOneSignalTS/Info.plist @@ -45,6 +45,8 @@ Your message goes here NSLocationWhenInUseUsageDescription Your message goes here + NSSupportsLiveActivities + UIBackgroundModes remote-notification diff --git a/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/AccentColor.colorset/Contents.json b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..13613e3e --- /dev/null +++ b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/Contents.json b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json new file mode 100644 index 00000000..0eddeb7c --- /dev/null +++ b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/onesignaldemo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "onesignal-logo.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Assets.xcassets/onesignaldemo.imageset/onesignal-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ba97c7a7dd4f08b2eee34231c4a115f376acc115 GIT binary patch literal 20552 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 btXcmbTG6qQZ0LMh00000NkvXXu0mjfx4I7T literal 0 HcmV?d00001 diff --git a/examples/RNOneSignalTS/ios/RNOneSignalWidget/Info.plist b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Info.plist new file mode 100644 index 00000000..0f118fb7 --- /dev/null +++ b/examples/RNOneSignalTS/ios/RNOneSignalWidget/Info.plist @@ -0,0 +1,11 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.widgetkit-extension + + + diff --git a/examples/RNOneSignalTS/ios/RNOneSignalWidget/RNOneSignalWidgetBundle.swift b/examples/RNOneSignalTS/ios/RNOneSignalWidget/RNOneSignalWidgetBundle.swift new file mode 100644 index 00000000..ce557273 --- /dev/null +++ b/examples/RNOneSignalTS/ios/RNOneSignalWidget/RNOneSignalWidgetBundle.swift @@ -0,0 +1,16 @@ +// +// RNOneSignalWidgetBundle.swift +// RNOneSignalWidget +// +// Created by Brian Smith on 4/26/24. +// + +import WidgetKit +import SwiftUI + +@main +struct RNOneSignalWidgetBundle: WidgetBundle { + var body: some Widget { + RNOneSignalWidgetLiveActivity() + } +} diff --git a/examples/RNOneSignalTS/ios/RNOneSignalWidget/RNOneSignalWidgetLiveActivity.swift b/examples/RNOneSignalTS/ios/RNOneSignalWidget/RNOneSignalWidgetLiveActivity.swift new file mode 100644 index 00000000..9910d4d3 --- /dev/null +++ b/examples/RNOneSignalTS/ios/RNOneSignalWidget/RNOneSignalWidgetLiveActivity.swift @@ -0,0 +1,65 @@ +// +// RNOneSignalWidgetLiveActivity.swift +// RNOneSignalWidget +// +// Created by Brian Smith on 4/26/24. +// + +import ActivityKit +import WidgetKit +import SwiftUI +import OneSignalLiveActivities + +struct RNOneSignalWidgetLiveActivity: Widget { + var body: some WidgetConfiguration { + ActivityConfiguration(for: DefaultLiveActivityAttributes.self) { context in + // Lock screen/banner UI goes here\VStack(alignment: .leading) { + VStack { + Spacer() + Text("REACT: " + (context.attributes.data["title"]?.asString() ?? "")).font(.headline) + Spacer() + HStack { + Spacer() + Label { + Text(context.state.data["message"]?.asDict()?["en"]?.asString() ?? "") + } icon: { + Image("onesignaldemo") + .resizable() + .scaledToFit() + .frame(width: 40.0, height: 40.0) + } + Spacer() + } + Text("INT: " + String(context.state.data["intValue"]?.asInt() ?? 0)) + Text("DBL: " + String(context.state.data["doubleValue"]?.asDouble() ?? 0.0)) + Text("BOL: " + String(context.state.data["boolValue"]?.asBool() ?? false)) + Spacer() + } + .activitySystemActionForegroundColor(.black) + .activityBackgroundTint(.white) + } dynamicIsland: { _ in + DynamicIsland { + // Expanded UI goes here. Compose the expanded UI through + // various regions, like leading/trailing/center/bottom + DynamicIslandExpandedRegion(.leading) { + Text("Leading") + } + DynamicIslandExpandedRegion(.trailing) { + Text("Trailing") + } + DynamicIslandExpandedRegion(.bottom) { + Text("Bottom") + // more content + } + } compactLeading: { + Text("L") + } compactTrailing: { + Text("T") + } minimal: { + Text("Min") + } + .widgetURL(URL(string: "http://www.apple.com")) + .keylineTint(Color.red) + } + } +} diff --git a/examples/RNOneSignalTS/src/OSButtons.tsx b/examples/RNOneSignalTS/src/OSButtons.tsx index 5d6d3b48..73d4dc96 100644 --- a/examples/RNOneSignalTS/src/OSButtons.tsx +++ b/examples/RNOneSignalTS/src/OSButtons.tsx @@ -181,6 +181,79 @@ class OSButtons extends React.Component { ]; } + createLiveActivitiesFields() { + const {loggingFunction} = this.props; + + const startDefaultLiveActivity = renderButtonView( + 'Start Default Live Activity', + async () => { + loggingFunction('Starting live activity'); + await OneSignal.LiveActivities.startDefault( + this.props.inputFieldValue, + {title: 'Welcome!'}, + { + message: {en: 'Hello World!'}, + intValue: 3, + doubleValue: 3.14, + boolValue: true, + }, + ); + loggingFunction('Live Activity started'); + }, + ); + + // In a real app the below methods would call a bridge to perform a live + // activity function, the data then passed back to RN, and subsequently + // passed over to the OneSignal SDK. + const enterLiveActivity = renderButtonView( + 'Enter Live Activity', + async () => { + loggingFunction('Entering live activity'); + await OneSignal.LiveActivities.enter( + this.props.inputFieldValue, + 'FAKE_TOKEN', + ); + }, + ); + + const exitLiveActivity = renderButtonView( + 'Exit Live Activity', + async () => { + loggingFunction('Exiting live activity'); + await OneSignal.LiveActivities.exit(this.props.inputFieldValue); + }, + ); + + const setPushToStartLiveActivity = renderButtonView( + 'Set Push-To-Start Live Activity', + async () => { + loggingFunction('Exiting live activity'); + await OneSignal.LiveActivities.setPushToStartToken( + this.props.inputFieldValue, + 'FAKE_TOKEN', + ); + }, + ); + + const removePushToStartLiveActivity = renderButtonView( + 'Remove Push-To-Start Live Activity', + async () => { + loggingFunction('Exiting live activity'); + await OneSignal.LiveActivities.removePushToStartToken( + this.props.inputFieldValue, + ); + }, + ); + + return [ + startDefaultLiveActivity, + enterLiveActivity, + exitLiveActivity, + setPushToStartLiveActivity, + removePushToStartLiveActivity, + ]; + } + createSessionFields() { const {loggingFunction} = this.props; @@ -484,6 +557,10 @@ class OSButtons extends React.Component { {this.createNotificationFields()} + Live Activities + + {this.createLiveActivitiesFields()} + Session diff --git a/examples/RNOneSignalTS/src/OSDemo.tsx b/examples/RNOneSignalTS/src/OSDemo.tsx index 94f2dbf1..b6a330b6 100644 --- a/examples/RNOneSignalTS/src/OSDemo.tsx +++ b/examples/RNOneSignalTS/src/OSDemo.tsx @@ -33,6 +33,12 @@ class OSDemo extends React.Component { OneSignal.initialize(APP_ID); OneSignal.Debug.setLogLevel(LogLevel.Verbose); + OneSignal.LiveActivities.setupDefault(); + // OneSignal.LiveActivities.setupDefault({ + // enablePushToStart: false, + // enablePushToUpdate: true, + // }); + OneSignal.Notifications.addEventListener( 'foregroundWillDisplay', (event) => { diff --git a/ios/RCTOneSignal/RCTOneSignalEventEmitter.m b/ios/RCTOneSignal/RCTOneSignalEventEmitter.m index 03b15994..50614a0e 100644 --- a/ios/RCTOneSignal/RCTOneSignalEventEmitter.m +++ b/ios/RCTOneSignal/RCTOneSignalEventEmitter.m @@ -1,5 +1,6 @@ #import "RCTOneSignalEventEmitter.h" #import +#import "OneSignalLiveActivities/OneSignalLiveActivities-Swift.h" #import "RCTOneSignal.h" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" @@ -130,6 +131,46 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body { }]; } +RCT_EXPORT_METHOD(setPushToStartToken:(NSString *)activityType + withToken:(NSString *)token) { + @autoreleasepool { + NSError* err=nil; + [OneSignalLiveActivitiesManagerImpl setPushToStartToken:activityType withToken:token error:&err]; + if (err) { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"activityType must be the name of your ActivityAttributes struct"]]; + } + } +} + +RCT_EXPORT_METHOD(removePushToStartToken:(NSString *)activityType) { + @autoreleasepool { + NSError* err=nil; + [OneSignalLiveActivitiesManagerImpl removePushToStartToken:activityType error:&err]; + if (err) { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"activityType must be the name of your ActivityAttributes struct"]]; + } + } +} + +RCT_EXPORT_METHOD(setupDefaultLiveActivity:(NSDictionary * _Nullable)options) { + LiveActivitySetupOptions *laOptions = nil; + + if (options != nil) { + laOptions = [LiveActivitySetupOptions alloc]; + [laOptions setEnablePushToStart:[options[@"enablePushToStart"] boolValue]]; + [laOptions setEnablePushToUpdate:[options[@"enablePushToUpdate"] boolValue]]; + } + + [OneSignalLiveActivitiesManagerImpl setupDefaultWithOptions:laOptions]; +} + +RCT_EXPORT_METHOD(startDefaultLiveActivity:(NSString *)activityId + withAttributes:(NSDictionary * _Nonnull)attributes + withContent:(NSDictionary * _Nonnull)content) { + + [OneSignalLiveActivitiesManagerImpl startDefault:activityId attributes:attributes content:content]; +} + RCT_EXPORT_METHOD(setPrivacyConsentGiven:(BOOL)granted) { dispatch_async(dispatch_get_main_queue(), ^{ [OneSignal setConsentGiven:granted]; diff --git a/src/index.ts b/src/index.ts index 3979bd05..7829d33c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -26,6 +26,7 @@ import { } from './models/Subscription'; import { UserState, UserChangedState } from './models/User'; import NotificationWillDisplayEvent from './events/NotificationWillDisplayEvent'; +import { LiveActivitySetupOptions } from './models/LiveActivities'; import { InAppMessage, InAppMessageEventTypeMap, @@ -156,8 +157,13 @@ export namespace OneSignal { export namespace LiveActivities { /** - * Associates a temporary push token with an Activity ID on the OneSignal server. - */ + * Indicate this device has exited a live activity, identified within OneSignal by the `activityId`. + * + * Only applies to iOS + * + * @param activityId: The activity identifier the live activity on this device will receive updates for. + * @param token: The activity's update token to receive the updates. + **/ export function enter( activityId: string, token: string, @@ -176,8 +182,12 @@ export namespace OneSignal { } /** - * Deletes activityId associated temporary push token on the OneSignal server. - */ + * Indicate this device has exited a live activity, identified within OneSignal by the `activityId`. + * + * Only applies to iOS + * + * @param activityId: The activity identifier the live activity on this device will no longer receive updates for. + **/ export function exit(activityId: string, handler?: Function) { if (!isNativeModuleLoaded(RNOneSignal)) return; @@ -185,11 +195,93 @@ export namespace OneSignal { handler = () => {}; } - // Only Available on iOS if (Platform.OS === 'ios') { RNOneSignal.exitLiveActivity(activityId, handler); } } + + /** + * Indicate this device is capable of receiving pushToStart live activities for the + * `activityType`. The `activityType` **must** be the name of the struct conforming + * to `ActivityAttributes` that will be used to start the live activity. + * + * Only applies to iOS + * + * @param activityType: The name of the specific `ActivityAttributes` structure tied + * to the live activity. + * @param token: The activity type's pushToStart token. + */ + export function setPushToStartToken(activityType: string, token: string) { + if (!isNativeModuleLoaded(RNOneSignal)) return; + + if (Platform.OS === 'ios') { + RNOneSignal.setPushToStartToken(activityType, token); + } + } + + /** + * Indicate this device is no longer capable of receiving pushToStart live activities + * for the `activityType`. The `activityType` **must** be the name of the struct conforming + * to `ActivityAttributes` that will be used to start the live activity. + * + * Only applies to iOS + * + * @param activityType: The name of the specific `ActivityAttributes` structure tied + * to the live activity. + */ + export function removePushToStartToken(activityType: string) { + if (!isNativeModuleLoaded(RNOneSignal)) return; + + if (Platform.OS === 'ios') { + RNOneSignal.removePushToStartToken(activityType); + } + } + + /** + * Enable the OneSignalSDK to setup the default`DefaultLiveActivityAttributes` structure, + * which conforms to the `OneSignalLiveActivityAttributes`. When using this function, the + * widget attributes are owned by the OneSignal SDK, which will allow the SDK to handle the + * entire lifecycle of the live activity. All that is needed from an app-perspective is to + * create a Live Activity widget in a widget extension, with a `ActivityConfiguration` for + * `DefaultLiveActivityAttributes`. This is most useful for users that (1) only have one Live + * Activity widget and (2) are using a cross-platform framework and do not want to create the + * cross-platform <-> iOS native bindings to manage ActivityKit. + * + * Only applies to iOS + * + * @param options: An optional structure to provide for more granular setup options. + */ + export function setupDefault(options?: LiveActivitySetupOptions) { + if (!isNativeModuleLoaded(RNOneSignal)) return; + + if (Platform.OS === 'ios') { + RNOneSignal.setupDefaultLiveActivity(options); + } + } + + /** + * Start a new LiveActivity that is modelled by the default`DefaultLiveActivityAttributes` + * structure. The `DefaultLiveActivityAttributes` is initialized with the dynamic `attributes` + * and `content` passed in. + * + * Only applies to iOS + * + * @param activityId: The activity identifier the live activity on this device will be started + * and eligible to receive updates for. + * @param attributes: A dynamic type containing the static attributes passed into `DefaultLiveActivityAttributes`. + * @param content: A dynamic type containing the content attributes passed into `DefaultLiveActivityAttributes`. + */ + export function startDefault( + activityId: string, + attributes: object, + content: object, + ) { + if (!isNativeModuleLoaded(RNOneSignal)) return; + + if (Platform.OS === 'ios') { + RNOneSignal.startDefaultLiveActivity(activityId, attributes, content); + } + } } export namespace User { diff --git a/src/models/LiveActivities.ts b/src/models/LiveActivities.ts new file mode 100644 index 00000000..191a94bb --- /dev/null +++ b/src/models/LiveActivities.ts @@ -0,0 +1,15 @@ +/** + * The setup options for `OneSignal.LiveActivities.setupDefault`. + */ +export type LiveActivitySetupOptions = { + /** + * When true, OneSignal will listen for pushToStart tokens for the `OneSignalLiveActivityAttributes` structure. + */ + enablePushToStart: boolean; + + /** + * When true, OneSignal will listen for pushToUpdate tokens for each start live activity that uses the + * `OneSignalLiveActivityAttributes` structure. + */ + enablePushToUpdate: boolean; +}; From 75874b5bf473e15605e620f02e3e24f83d6731b0 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Mon, 13 May 2024 10:38:44 -0400 Subject: [PATCH 2/4] Update to use official native iOS 5.2.0 release --- examples/RNOneSignalTS/ios/Podfile | 4 +-- examples/RNOneSignalTS/ios/Podfile.lock | 39 ++++++++++++------------- react-native-onesignal.podspec | 2 +- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/examples/RNOneSignalTS/ios/Podfile b/examples/RNOneSignalTS/ios/Podfile index 80fcf840..f8f2eb4f 100644 --- a/examples/RNOneSignalTS/ios/Podfile +++ b/examples/RNOneSignalTS/ios/Podfile @@ -21,11 +21,11 @@ target 'RNOneSignalTS' do # post_install do |installer| # flipper_post_install(installer) # end - pod 'OneSignalXCFramework', :path => '~/Development/OneSignal/onesignal-ios-sdk' end target 'RNOneSignalWidgetExtension' do - pod 'OneSignalXCFramework', :path => '~/Development/OneSignal/onesignal-ios-sdk' + # Note that this should match the version used by react-native-onesignal.podspec + pod 'OneSignalXCFramework', '5.2.0' end target 'RNOneSignalTS-tvOS' do diff --git a/examples/RNOneSignalTS/ios/Podfile.lock b/examples/RNOneSignalTS/ios/Podfile.lock index c28162b5..d745368b 100644 --- a/examples/RNOneSignalTS/ios/Podfile.lock +++ b/examples/RNOneSignalTS/ios/Podfile.lock @@ -10,9 +10,9 @@ PODS: - React-jsi (= 0.64.4) - ReactCommon/turbomodule/core (= 0.64.4) - glog (0.3.5) - - OneSignalXCFramework (5.1.5): - - OneSignalXCFramework/OneSignalComplete (= 5.1.5) - - OneSignalXCFramework/OneSignal (5.1.5): + - OneSignalXCFramework (5.2.0): + - OneSignalXCFramework/OneSignalComplete (= 5.2.0) + - OneSignalXCFramework/OneSignal (5.2.0): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalExtension - OneSignalXCFramework/OneSignalLiveActivities @@ -20,38 +20,38 @@ PODS: - OneSignalXCFramework/OneSignalOSCore - OneSignalXCFramework/OneSignalOutcomes - OneSignalXCFramework/OneSignalUser - - OneSignalXCFramework/OneSignalComplete (5.1.5): + - OneSignalXCFramework/OneSignalComplete (5.2.0): - OneSignalXCFramework/OneSignal - OneSignalXCFramework/OneSignalInAppMessages - OneSignalXCFramework/OneSignalLocation - - OneSignalXCFramework/OneSignalCore (5.1.5) - - OneSignalXCFramework/OneSignalExtension (5.1.5): + - OneSignalXCFramework/OneSignalCore (5.2.0) + - OneSignalXCFramework/OneSignalExtension (5.2.0): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalOutcomes - - OneSignalXCFramework/OneSignalInAppMessages (5.1.5): + - OneSignalXCFramework/OneSignalInAppMessages (5.2.0): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalNotifications - OneSignalXCFramework/OneSignalOSCore - OneSignalXCFramework/OneSignalOutcomes - OneSignalXCFramework/OneSignalUser - - OneSignalXCFramework/OneSignalLiveActivities (5.1.5): + - OneSignalXCFramework/OneSignalLiveActivities (5.2.0): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalOSCore - OneSignalXCFramework/OneSignalUser - - OneSignalXCFramework/OneSignalLocation (5.1.5): + - OneSignalXCFramework/OneSignalLocation (5.2.0): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalNotifications - OneSignalXCFramework/OneSignalOSCore - OneSignalXCFramework/OneSignalUser - - OneSignalXCFramework/OneSignalNotifications (5.1.5): + - OneSignalXCFramework/OneSignalNotifications (5.2.0): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalExtension - OneSignalXCFramework/OneSignalOutcomes - - OneSignalXCFramework/OneSignalOSCore (5.1.5): + - OneSignalXCFramework/OneSignalOSCore (5.2.0): - OneSignalXCFramework/OneSignalCore - - OneSignalXCFramework/OneSignalOutcomes (5.1.5): + - OneSignalXCFramework/OneSignalOutcomes (5.2.0): - OneSignalXCFramework/OneSignalCore - - OneSignalXCFramework/OneSignalUser (5.1.5): + - OneSignalXCFramework/OneSignalUser (5.2.0): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalNotifications - OneSignalXCFramework/OneSignalOSCore @@ -250,7 +250,7 @@ PODS: - React-perflogger (= 0.64.4) - React-jsinspector (0.64.4) - react-native-onesignal (5.1.2): - - OneSignalXCFramework (= 5.1.5) + - OneSignalXCFramework (= 5.2.0) - React (< 1.0.0, >= 0.13.0) - React-perflogger (0.64.4) - React-RCTActionSheet (0.64.4): @@ -323,7 +323,7 @@ DEPENDENCIES: - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - OneSignalXCFramework (from `~/Development/OneSignal/onesignal-ios-sdk`) + - OneSignalXCFramework (= 5.2.0) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) @@ -355,6 +355,7 @@ DEPENDENCIES: SPEC REPOS: trunk: - boost-for-react-native + - OneSignalXCFramework EXTERNAL SOURCES: DoubleConversion: @@ -365,8 +366,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/FBReactNativeSpec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" - OneSignalXCFramework: - :path: "~/Development/OneSignal/onesignal-ios-sdk" RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTRequired: @@ -424,7 +423,7 @@ SPEC CHECKSUMS: FBLazyVector: fa8275d5086566e22a26ddc385ab5772e7f9b1bd FBReactNativeSpec: 342841ad3cdf88a10071a3507d3708b236cee677 glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62 - OneSignalXCFramework: f30c480b2de63da9c2c0195415cda40635552f13 + OneSignalXCFramework: bdf74fdc06888f9466dc21e826fe1549ed143095 RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c RCTRequired: f85fa00af016059cf88b90b8f8ff9a6af9e4b6c3 RCTTypeSafety: 5279aaf0fb1ad715cbbbbee32d5c98c72598bc9c @@ -436,7 +435,7 @@ SPEC CHECKSUMS: React-jsi: 64f80675a66899bf0f4a58b8e3908966fa516234 React-jsiexecutor: 8c077bef1c64430b6034f27df1000d194551e2eb React-jsinspector: d4f6973dd474357dbaaf6f52f31ffc713bf3e766 - react-native-onesignal: 788854579298ce9c147ce21412efd03939f3a4a5 + react-native-onesignal: be215738778e57af4c6da177d548e7983052d3fd React-perflogger: 5a890ca0911669421b7611661e9b58f91c805f5c React-RCTActionSheet: bd180e0879f8424a73650c5c28fbef4f3b5b27fb React-RCTAnimation: 1004d2b4be1f2cedfdc4cb2326adc95b989e6c6b @@ -451,6 +450,6 @@ SPEC CHECKSUMS: ReactCommon: b4a65d2d6e9eeffd4b32dde1245962b3f43907d0 Yoga: d1fc3575b8b68891ff5ef3c276daa855e841eb32 -PODFILE CHECKSUM: ed9d9960aa1a99be2f8a4eca21e1d34a6d2db081 +PODFILE CHECKSUM: 74dbbba09d2d611b469faf8787a048dd71c49137 COCOAPODS: 1.15.2 diff --git a/react-native-onesignal.podspec b/react-native-onesignal.podspec index fdb46f98..b14ce53b 100644 --- a/react-native-onesignal.podspec +++ b/react-native-onesignal.podspec @@ -22,5 +22,5 @@ Pod::Spec.new do |s| # pod 'React', :path => '../node_modules/react-native/' # The Native OneSignal-iOS-SDK XCFramework from cocoapods. - s.dependency 'OneSignalXCFramework', '5.1.5' + s.dependency 'OneSignalXCFramework', '5.2.0' end From 8299d41d98690f9a539eb4c00bd1de53c7c81c5b Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Mon, 13 May 2024 13:18:29 -0400 Subject: [PATCH 3/4] Fix example app podfile dependency version --- examples/RNOneSignalTS/ios/Podfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/RNOneSignalTS/ios/Podfile b/examples/RNOneSignalTS/ios/Podfile index f8f2eb4f..cd6453ac 100644 --- a/examples/RNOneSignalTS/ios/Podfile +++ b/examples/RNOneSignalTS/ios/Podfile @@ -24,8 +24,7 @@ target 'RNOneSignalTS' do end target 'RNOneSignalWidgetExtension' do - # Note that this should match the version used by react-native-onesignal.podspec - pod 'OneSignalXCFramework', '5.2.0' + pod 'OneSignalXCFramework', '>= 5.0.2', '< 6.0.0' end target 'RNOneSignalTS-tvOS' do From 5e8928c96969ef91a004ff59278196dbd74237a6 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 14 May 2024 11:48:13 -0400 Subject: [PATCH 4/4] Add iOS version checks consistently Remove autoreleasepool Minor example app updates --- examples/RNOneSignalTS/ios/Podfile.lock | 4 ++-- examples/RNOneSignalTS/src/OSButtons.tsx | 4 ++-- ios/RCTOneSignal/RCTOneSignalEventEmitter.m | 26 ++++++++++++++++----- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/examples/RNOneSignalTS/ios/Podfile.lock b/examples/RNOneSignalTS/ios/Podfile.lock index d745368b..a828f3da 100644 --- a/examples/RNOneSignalTS/ios/Podfile.lock +++ b/examples/RNOneSignalTS/ios/Podfile.lock @@ -323,7 +323,7 @@ DEPENDENCIES: - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - OneSignalXCFramework (= 5.2.0) + - OneSignalXCFramework (< 6.0.0, >= 5.0.2) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) @@ -450,6 +450,6 @@ SPEC CHECKSUMS: ReactCommon: b4a65d2d6e9eeffd4b32dde1245962b3f43907d0 Yoga: d1fc3575b8b68891ff5ef3c276daa855e841eb32 -PODFILE CHECKSUM: 74dbbba09d2d611b469faf8787a048dd71c49137 +PODFILE CHECKSUM: f48dbc25fab0526ba40a2fa6aadce3376f5c6602 COCOAPODS: 1.15.2 diff --git a/examples/RNOneSignalTS/src/OSButtons.tsx b/examples/RNOneSignalTS/src/OSButtons.tsx index 73d4dc96..da16d5bb 100644 --- a/examples/RNOneSignalTS/src/OSButtons.tsx +++ b/examples/RNOneSignalTS/src/OSButtons.tsx @@ -227,7 +227,7 @@ class OSButtons extends React.Component { const setPushToStartLiveActivity = renderButtonView( 'Set Push-To-Start Live Activity', async () => { - loggingFunction('Exiting live activity'); + loggingFunction('Set pushToStart token'); await OneSignal.LiveActivities.setPushToStartToken( this.props.inputFieldValue, 'FAKE_TOKEN', @@ -238,7 +238,7 @@ class OSButtons extends React.Component { const removePushToStartLiveActivity = renderButtonView( 'Remove Push-To-Start Live Activity', async () => { - loggingFunction('Exiting live activity'); + loggingFunction('Remove pushToStart token'); await OneSignal.LiveActivities.removePushToStartToken( this.props.inputFieldValue, ); diff --git a/ios/RCTOneSignal/RCTOneSignalEventEmitter.m b/ios/RCTOneSignal/RCTOneSignalEventEmitter.m index 0e27b8e5..4221cea4 100644 --- a/ios/RCTOneSignal/RCTOneSignalEventEmitter.m +++ b/ios/RCTOneSignal/RCTOneSignalEventEmitter.m @@ -133,22 +133,28 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body { RCT_EXPORT_METHOD(setPushToStartToken:(NSString *)activityType withToken:(NSString *)token) { - @autoreleasepool { - NSError* err=nil; + NSError* err=nil; + + if (@available(iOS 17.2, *)) { [OneSignalLiveActivitiesManagerImpl setPushToStartToken:activityType withToken:token error:&err]; if (err) { [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"activityType must be the name of your ActivityAttributes struct"]]; } + } else { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"cannot setPushToStartToken on iOS < 17.2"]]; } } RCT_EXPORT_METHOD(removePushToStartToken:(NSString *)activityType) { - @autoreleasepool { - NSError* err=nil; + NSError* err=nil; + + if (@available(iOS 17.2, *)) { [OneSignalLiveActivitiesManagerImpl removePushToStartToken:activityType error:&err]; if (err) { [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"activityType must be the name of your ActivityAttributes struct"]]; } + } else { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"cannot removePushToStartToken on iOS < 17.2"]]; } } @@ -161,14 +167,22 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body { [laOptions setEnablePushToUpdate:[options[@"enablePushToUpdate"] boolValue]]; } - [OneSignalLiveActivitiesManagerImpl setupDefaultWithOptions:laOptions]; + if (@available(iOS 16.1, *)) { + [OneSignalLiveActivitiesManagerImpl setupDefaultWithOptions:laOptions]; + } else { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"cannot setupDefault on iOS < 16.1"]]; + } } RCT_EXPORT_METHOD(startDefaultLiveActivity:(NSString *)activityId withAttributes:(NSDictionary * _Nonnull)attributes withContent:(NSDictionary * _Nonnull)content) { - [OneSignalLiveActivitiesManagerImpl startDefault:activityId attributes:attributes content:content]; + if (@available(iOS 16.1, *)) { + [OneSignalLiveActivitiesManagerImpl startDefault:activityId attributes:attributes content:content]; + } else { + [OneSignalLog onesignalLog:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"cannot startDefault on iOS < 16.1"]]; + } } RCT_EXPORT_METHOD(setPrivacyConsentGiven:(BOOL)granted) {