diff --git a/android/app/src/main/res/drawable-hdpi/ic_stat_onesignal_default.png b/android/app/src/main/res/drawable-hdpi/ic_stat_onesignal_default.png new file mode 100644 index 0000000..8adf58d Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_stat_onesignal_default.png differ diff --git a/android/app/src/main/res/drawable-mdpi/ic_stat_onesignal_default.png b/android/app/src/main/res/drawable-mdpi/ic_stat_onesignal_default.png new file mode 100644 index 0000000..19268ac Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_stat_onesignal_default.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/ic_stat_onesignal_default.png b/android/app/src/main/res/drawable-xhdpi/ic_stat_onesignal_default.png new file mode 100644 index 0000000..b9e7316 Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_stat_onesignal_default.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_stat_onesignal_default.png b/android/app/src/main/res/drawable-xxhdpi/ic_stat_onesignal_default.png new file mode 100644 index 0000000..dac30ad Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_stat_onesignal_default.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_stat_onesignal_default.png b/android/app/src/main/res/drawable-xxxhdpi/ic_stat_onesignal_default.png new file mode 100644 index 0000000..dbb2c82 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/ic_stat_onesignal_default.png differ diff --git a/app.json b/app.json index 906caa6..84b355d 100644 --- a/app.json +++ b/app.json @@ -46,6 +46,15 @@ { "faceIDPermission": "Allow $(PRODUCT_NAME) to access your Face ID biometric data." } + ], + [ + "onesignal-expo-plugin", + { + "mode": "production", + "smallIcons": [ + "./assets/images/ic_stat_onesignal_default.png" + ] + } ] ], "experiments": { diff --git a/assets/images/ic_stat_onesignal_default.png b/assets/images/ic_stat_onesignal_default.png new file mode 100644 index 0000000..3ead2db Binary files /dev/null and b/assets/images/ic_stat_onesignal_default.png differ diff --git a/ios/Kliko.xcodeproj/project.pbxproj b/ios/Kliko.xcodeproj/project.pbxproj index 5774f4f..7d987a3 100644 --- a/ios/Kliko.xcodeproj/project.pbxproj +++ b/ios/Kliko.xcodeproj/project.pbxproj @@ -7,32 +7,63 @@ objects = { /* Begin PBXBuildFile section */ + 11BA08BEF4FFF90D24C6F611 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = E8BA6F96F3BE8899189B78A6 /* PrivacyInfo.xcprivacy */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 2DE8089E4CE11E8BD6ECE4BF /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = D7F02BDE96FF84C115BB1204 /* PrivacyInfo.xcprivacy */; }; 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; + 81CE43F87C754C24A88C5E62 /* NotificationService.m in Sources */ = {isa = PBXBuildFile; fileRef = E8602A0F69F0417F90AD1F90 /* NotificationService.m */; }; + 822BCEAAC39946FBBA362C40 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74907E5D7F2947368D73D307 /* noop-file.swift */; }; 96905EF65AED1B983A6B3ABC /* libPods-Kliko.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-Kliko.a */; }; B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; - FFF4C134B3884EE18974C4FF /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 359D7208F5634567B2ACD586 /* noop-file.swift */; }; + C880742DF0384A348CB3511D /* OneSignalNotificationServiceExtension.appex in Copy Files */ = {isa = PBXBuildFile; fileRef = 390C21A938EC49C499EDE45A /* OneSignalNotificationServiceExtension.appex */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 195D8FBF0BAB47DB9920EDFF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1BE1B47B0FE49DBA94FF2D2; + remoteInfo = OneSignalNotificationServiceExtension; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + E5BDBC73DC3A480FA19FF842 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + C880742DF0384A348CB3511D /* OneSignalNotificationServiceExtension.appex in Copy Files */, + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ - 0178EB0C020F4725AF0638AF /* Kliko-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "Kliko-Bridging-Header.h"; path = "Kliko/Kliko-Bridging-Header.h"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* Kliko.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Kliko.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Kliko/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = Kliko/AppDelegate.mm; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Kliko/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Kliko/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Kliko/main.m; sourceTree = ""; }; - 359D7208F5634567B2ACD586 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "Kliko/noop-file.swift"; sourceTree = ""; }; + 2ABF6CA379A34D79B96BF6ED /* OneSignalNotificationServiceExtension-Info.plist */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.xml; name = "OneSignalNotificationServiceExtension-Info.plist"; path = "OneSignalNotificationServiceExtension-Info.plist"; sourceTree = ""; }; + 390C21A938EC49C499EDE45A /* OneSignalNotificationServiceExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = undefined; name = OneSignalNotificationServiceExtension.appex; path = OneSignalNotificationServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 4972FD0DD6424EE5B111C141 /* OneSignalNotificationServiceExtension.entitlements */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = OneSignalNotificationServiceExtension.entitlements; path = OneSignalNotificationServiceExtension.entitlements; sourceTree = ""; }; + 4DC819D0299A4B2688B168E6 /* Kliko-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "Kliko-Bridging-Header.h"; path = "Kliko/Kliko-Bridging-Header.h"; sourceTree = ""; }; 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-Kliko.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Kliko.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 6C2E3173556A471DD304B334 /* Pods-Kliko.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Kliko.debug.xcconfig"; path = "Target Support Files/Pods-Kliko/Pods-Kliko.debug.xcconfig"; sourceTree = ""; }; + 74907E5D7F2947368D73D307 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "Kliko/noop-file.swift"; sourceTree = ""; }; 7A4D352CD337FB3A3BF06240 /* Pods-Kliko.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Kliko.release.xcconfig"; path = "Target Support Files/Pods-Kliko/Pods-Kliko.release.xcconfig"; sourceTree = ""; }; AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = Kliko/SplashScreen.storyboard; sourceTree = ""; }; BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; - D7F02BDE96FF84C115BB1204 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Kliko/PrivacyInfo.xcprivacy; sourceTree = ""; }; + E7C423693D2349B3A0CE5FD1 /* NotificationService.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = NotificationService.h; path = NotificationService.h; sourceTree = ""; }; + E8602A0F69F0417F90AD1F90 /* NotificationService.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = NotificationService.m; path = NotificationService.m; sourceTree = ""; }; + E8BA6F96F3BE8899189B78A6 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Kliko/PrivacyInfo.xcprivacy; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-Kliko/ExpoModulesProvider.swift"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -46,6 +77,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B1570166C0FB45C19B7F92A3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -59,9 +97,9 @@ 13B07FB61A68108700A75B9A /* Info.plist */, 13B07FB71A68108700A75B9A /* main.m */, AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, - 359D7208F5634567B2ACD586 /* noop-file.swift */, - 0178EB0C020F4725AF0638AF /* Kliko-Bridging-Header.h */, - D7F02BDE96FF84C115BB1204 /* PrivacyInfo.xcprivacy */, + 74907E5D7F2947368D73D307 /* noop-file.swift */, + 4DC819D0299A4B2688B168E6 /* Kliko-Bridging-Header.h */, + E8BA6F96F3BE8899189B78A6 /* PrivacyInfo.xcprivacy */, ); name = Kliko; sourceTree = ""; @@ -75,6 +113,18 @@ name = Frameworks; sourceTree = ""; }; + 819C68B783024998AE3769F1 /* OneSignalNotificationServiceExtension */ = { + isa = PBXGroup; + children = ( + E7C423693D2349B3A0CE5FD1 /* NotificationService.h */, + 4972FD0DD6424EE5B111C141 /* OneSignalNotificationServiceExtension.entitlements */, + 2ABF6CA379A34D79B96BF6ED /* OneSignalNotificationServiceExtension-Info.plist */, + E8602A0F69F0417F90AD1F90 /* NotificationService.m */, + ); + name = OneSignalNotificationServiceExtension; + path = OneSignalNotificationServiceExtension; + sourceTree = ""; + }; 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( @@ -91,6 +141,7 @@ 2D16E6871FA4F8E400B85C8A /* Frameworks */, D65327D7A22EEC0BE12398D9 /* Pods */, D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */, + 819C68B783024998AE3769F1 /* OneSignalNotificationServiceExtension */, ); indentWidth = 2; sourceTree = ""; @@ -101,6 +152,7 @@ isa = PBXGroup; children = ( 13B07F961A680F5B00A75B9A /* Kliko.app */, + 390C21A938EC49C499EDE45A /* OneSignalNotificationServiceExtension.appex */, ); name = Products; sourceTree = ""; @@ -147,23 +199,42 @@ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Kliko" */; buildPhases = ( 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, - F68469FA83396F0C6D57DB0C /* [Expo] Configure project */, + 1601BB34E78E87632E7FDF80 /* [Expo] Configure project */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, - 871FA7B8EA66275AE1BD0AD6 /* [CP] Embed Pods Frameworks */, + E5BDBC73DC3A480FA19FF842 /* Copy Files */, + E8BF83328D9A2B416CFD2AD8 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( + 8F24380ABC06479FBEDDC50E /* PBXTargetDependency */, ); name = Kliko; productName = Kliko; productReference = 13B07F961A680F5B00A75B9A /* Kliko.app */; productType = "com.apple.product-type.application"; }; + F1BE1B47B0FE49DBA94FF2D2 /* OneSignalNotificationServiceExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7777515550CE4FB481B09AD4 /* Build configuration list for PBXNativeTarget "OneSignalNotificationServiceExtension" */; + buildPhases = ( + 70069E98311C4D0EAEFAED17 /* Sources */, + 854B28CBF86A4209987BEA15 /* Resources */, + B1570166C0FB45C19B7F92A3 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = OneSignalNotificationServiceExtension; + productName = OneSignalNotificationServiceExtension; + productReference = 390C21A938EC49C499EDE45A /* OneSignalNotificationServiceExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -173,8 +244,12 @@ LastUpgradeCheck = 1130; TargetAttributes = { 13B07F861A680F5B00A75B9A = { + DevelopmentTeam = undefined; LastSwiftMigration = 1250; }; + F1BE1B47B0FE49DBA94FF2D2 = { + DevelopmentTeam = undefined; + }; }; }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Kliko" */; @@ -191,6 +266,7 @@ projectRoot = ""; targets = ( 13B07F861A680F5B00A75B9A /* Kliko */, + F1BE1B47B0FE49DBA94FF2D2 /* OneSignalNotificationServiceExtension */, ); }; /* End PBXProject section */ @@ -203,7 +279,14 @@ BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, - 2DE8089E4CE11E8BD6ECE4BF /* PrivacyInfo.xcprivacy in Resources */, + 11BA08BEF4FFF90D24C6F611 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 854B28CBF86A4209987BEA15 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( ); runOnlyForDeploymentPostprocessing = 0; }; @@ -247,6 +330,25 @@ 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; }; + 1601BB34E78E87632E7FDF80 /* [Expo] Configure project */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "[Expo] Configure project"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-Kliko/expo-configure-project.sh\"\n"; + }; 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -281,7 +383,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Kliko/Pods-Kliko-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 871FA7B8EA66275AE1BD0AD6 /* [CP] Embed Pods Frameworks */ = { + E8BF83328D9A2B416CFD2AD8 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -329,25 +431,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Kliko/Pods-Kliko-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F68469FA83396F0C6D57DB0C /* [Expo] Configure project */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "[Expo] Configure project"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-Kliko/expo-configure-project.sh\"\n"; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -358,12 +441,28 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, - FFF4C134B3884EE18974C4FF /* noop-file.swift in Sources */, + 822BCEAAC39946FBBA362C40 /* noop-file.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 70069E98311C4D0EAEFAED17 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81CE43F87C754C24A88C5E62 /* NotificationService.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 8F24380ABC06479FBEDDC50E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F1BE1B47B0FE49DBA94FF2D2 /* OneSignalNotificationServiceExtension */; + targetProxy = 195D8FBF0BAB47DB9920EDFF /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; @@ -425,6 +524,23 @@ }; name = Release; }; + 1F4FC9398E94457E8BDA20D2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = undefined; + INFOPLIST_FILE = "OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; + PRODUCT_BUNDLE_IDENTIFIER = nl.maartenvr98.kliko.OneSignalNotificationServiceExtension; + PRODUCT_NAME = OneSignalNotificationServiceExtension; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; 83CBBA201A601CBA00E9B192 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -550,6 +666,27 @@ }; name = Release; }; + F1C3254570E44E0CB5CEC2BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = undefined; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = "OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = nl.maartenvr98.kliko.OneSignalNotificationServiceExtension; + PRODUCT_NAME = OneSignalNotificationServiceExtension; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -562,6 +699,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 7777515550CE4FB481B09AD4 /* Build configuration list for PBXNativeTarget "OneSignalNotificationServiceExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F1C3254570E44E0CB5CEC2BA /* Debug */, + 1F4FC9398E94457E8BDA20D2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Kliko" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/ios/Kliko/Info.plist b/ios/Kliko/Info.plist index c70baa2..95aa6e3 100644 --- a/ios/Kliko/Info.plist +++ b/ios/Kliko/Info.plist @@ -55,6 +55,10 @@ $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route + UIBackgroundModes + + remote-notification + UILaunchStoryboardName SplashScreen UIRequiredDeviceCapabilities diff --git a/ios/Kliko/Kliko.entitlements b/ios/Kliko/Kliko.entitlements index f683276..442fad7 100644 --- a/ios/Kliko/Kliko.entitlements +++ b/ios/Kliko/Kliko.entitlements @@ -1,5 +1,12 @@ - + + aps-environment + production + com.apple.security.application-groups + + group.nl.maartenvr98.kliko.onesignal + + \ No newline at end of file diff --git a/ios/OneSignalNotificationServiceExtension/NotificationService.h b/ios/OneSignalNotificationServiceExtension/NotificationService.h new file mode 100644 index 0000000..4d71f3b --- /dev/null +++ b/ios/OneSignalNotificationServiceExtension/NotificationService.h @@ -0,0 +1,8 @@ +// NotificationService.h +// OneSignalNotificationServiceExtension + +#import + +@interface NotificationService : UNNotificationServiceExtension + +@end diff --git a/ios/OneSignalNotificationServiceExtension/NotificationService.m b/ios/OneSignalNotificationServiceExtension/NotificationService.m new file mode 100644 index 0000000..dc5de87 --- /dev/null +++ b/ios/OneSignalNotificationServiceExtension/NotificationService.m @@ -0,0 +1,29 @@ +#import + +#import "NotificationService.h" + +@interface NotificationService () + +@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver); +@property (nonatomic, strong) UNNotificationRequest *receivedRequest; +@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent; + +@end + +@implementation NotificationService + +- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { + self.receivedRequest = request; + self.contentHandler = contentHandler; + self.bestAttemptContent = [request.content mutableCopy]; + [OneSignal didReceiveNotificationExtensionRequest:self.receivedRequest + withMutableNotificationContent:self.bestAttemptContent + withContentHandler:self.contentHandler]; +} + +- (void)serviceExtensionTimeWillExpire { + [OneSignal serviceExtensionTimeWillExpireRequest:self.receivedRequest withMutableNotificationContent:self.bestAttemptContent]; + self.contentHandler(self.bestAttemptContent); +} + +@end diff --git a/ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension-Info.plist b/ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension-Info.plist new file mode 100644 index 0000000..5be0bfa --- /dev/null +++ b/ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension-Info.plist @@ -0,0 +1,31 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + OneSignalNotificationServiceExtension + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0.0 + CFBundleVersion + 1 + NSExtension + + NSExtensionPointIdentifier + com.apple.usernotifications.service + NSExtensionPrincipalClass + NotificationService + + + \ No newline at end of file diff --git a/ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements b/ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements new file mode 100644 index 0000000..6ccdb6e --- /dev/null +++ b/ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.nl.maartenvr98.kliko.onesignal + + + diff --git a/package.json b/package.json index 63334b3..b481023 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "expo-system-ui": "~3.0.7", "expo-web-browser": "~13.0.3", "install": "^0.13.0", + "onesignal-expo-plugin": "^2.0.3", "react": "18.2.0", "react-dom": "18.2.0", "react-native": "0.74.3", diff --git a/yarn.lock b/yarn.lock index 7210111..5398c4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -997,6 +997,23 @@ dotenv-expand "~11.0.6" getenv "^1.0.0" +"@expo/image-utils@^0.3.22": + version "0.3.23" + resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.23.tgz#f14fd7e1f5ff6f8e4911a41e27dd274470665c3f" + integrity sha512-nhUVvW0TrRE4jtWzHQl8TR4ox7kcmrc2I0itaeJGjxF5A54uk7avgA0wRt7jP1rdvqQo1Ke1lXyLYREdhN9tPw== + dependencies: + "@expo/spawn-async" "1.5.0" + chalk "^4.0.0" + fs-extra "9.0.0" + getenv "^1.0.0" + jimp-compact "0.16.1" + mime "^2.4.4" + node-fetch "^2.6.0" + parse-png "^2.1.0" + resolve-from "^5.0.0" + semver "7.3.2" + tempy "0.3.0" + "@expo/image-utils@^0.5.0": version "0.5.1" resolved "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.5.1.tgz" @@ -1172,6 +1189,13 @@ debug "^4.3.4" source-map-support "~0.5.21" +"@expo/spawn-async@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.5.0.tgz#799827edd8c10ef07eb1a2ff9dcfe081d596a395" + integrity sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew== + dependencies: + cross-spawn "^6.0.5" + "@expo/spawn-async@^1.7.2": version "1.7.2" resolved "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz" @@ -3448,7 +3472,7 @@ cross-fetch@^3.1.5: dependencies: node-fetch "^2.6.12" -cross-spawn@^6.0.0: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -6522,7 +6546,7 @@ mime@1.6.0: resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.1: +mime@^2.4.1, mime@^2.4.4: version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== @@ -6854,6 +6878,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onesignal-expo-plugin@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/onesignal-expo-plugin/-/onesignal-expo-plugin-2.0.3.tgz#bc0d2f5e4769a767fd138e3b273a56f139cd8073" + integrity sha512-1T+AFCZF0l2FTNJBN6YPsnQggu1wvyMN9Ay66DTb6uoa5287S0624AEcVBwLczId1hI1odgn08gHX2X51io1Og== + dependencies: + "@expo/image-utils" "^0.3.22" + onetime@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" @@ -7927,6 +7958,11 @@ selfsigned@^2.4.1: "@types/node-forge" "^1.3.0" node-forge "^1" +semver@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"