Skip to content

Commit a8472ea

Browse files
committed
supporting scene based apps
1 parent 792c661 commit a8472ea

File tree

6 files changed

+134
-45
lines changed

6 files changed

+134
-45
lines changed

iOS_SDK/OneSignalDevApp/OneSignalDevApp.xcodeproj/project.pbxproj

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@
453453
"$(PROJECT_DIR)",
454454
);
455455
INFOPLIST_FILE = OneSignalDevApp/Info.plist;
456-
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
456+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
457457
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
458458
OTHER_LDFLAGS = "-ObjC";
459459
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example;
@@ -474,7 +474,7 @@
474474
"$(PROJECT_DIR)",
475475
);
476476
INFOPLIST_FILE = OneSignalDevApp/Info.plist;
477-
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
477+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
478478
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
479479
OTHER_LDFLAGS = "-ObjC";
480480
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example;
@@ -494,6 +494,7 @@
494494
"$(PROJECT_DIR)",
495495
);
496496
INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist;
497+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
497498
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
498499
OTHER_LDFLAGS = "-ObjC";
499500
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalNotificationServiceExtensionA;
@@ -515,6 +516,7 @@
515516
);
516517
GCC_OPTIMIZATION_LEVEL = 0;
517518
INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist;
519+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
518520
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
519521
OTHER_LDFLAGS = "-ObjC";
520522
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalNotificationServiceExtensionA;

iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,9 @@
421421
CAE2E5A9215D80070036FD32 /* OSNotificationPayload.m in Sources */ = {isa = PBXBuildFile; fileRef = 454F94F41FAD2E5A00D74CCF /* OSNotificationPayload.m */; };
422422
CAE2E5AA215D80380036FD32 /* OneSignalNotificationServiceExtensionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 454F94F11FAD218000D74CCF /* OneSignalNotificationServiceExtensionHandler.m */; };
423423
CAEA1C66202BB3C600FBFE9E /* OSEmailSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = CA810FCF202BA97300A60FED /* OSEmailSubscription.h */; };
424+
DE16C14424D3724700670EFA /* OneSignalLifecycleObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = DE16C14324D3724700670EFA /* OneSignalLifecycleObserver.m */; };
425+
DE16C14524D3724700670EFA /* OneSignalLifecycleObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = DE16C14324D3724700670EFA /* OneSignalLifecycleObserver.m */; };
426+
DE16C14724D3727200670EFA /* OneSignalLifecycleObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = DE16C14624D3727200670EFA /* OneSignalLifecycleObserver.h */; };
424427
/* End PBXBuildFile section */
425428

426429
/* Begin PBXCopyFilesBuildPhase section */
@@ -693,6 +696,8 @@
693696
CACBAAA7218A6280000ACAA5 /* OSJSONHandling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSJSONHandling.h; sourceTree = "<group>"; };
694697
CACBAAA9218A65AE000ACAA5 /* InAppMessagingTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InAppMessagingTests.m; sourceTree = "<group>"; };
695698
CACBAAAB218A662B000ACAA5 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
699+
DE16C14324D3724700670EFA /* OneSignalLifecycleObserver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OneSignalLifecycleObserver.m; sourceTree = "<group>"; };
700+
DE16C14624D3727200670EFA /* OneSignalLifecycleObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OneSignalLifecycleObserver.h; sourceTree = "<group>"; };
696701
/* End PBXFileReference section */
697702

698703
/* Begin PBXFrameworksBuildPhase section */
@@ -1027,6 +1032,8 @@
10271032
91C7725D1E7CCE1000D612D0 /* OneSignalInternal.h */,
10281033
912411F01E73342200E41FD7 /* OneSignal.h */,
10291034
912411F11E73342200E41FD7 /* OneSignal.m */,
1035+
DE16C14624D3727200670EFA /* OneSignalLifecycleObserver.h */,
1036+
DE16C14324D3724700670EFA /* OneSignalLifecycleObserver.m */,
10301037
CAB4112720852E48005A70D1 /* DelayedInitializationParameters.h */,
10311038
CAB4112820852E48005A70D1 /* DelayedInitializationParameters.m */,
10321039
CA70E3332023D51000019273 /* OneSignalSetEmailParameters.h */,
@@ -1267,6 +1274,7 @@
12671274
91F58D7A1E7C7D3F0017D24D /* OneSignalNotificationSettings.h in Headers */,
12681275
CA4742E4218B8FF30020DC8C /* OSTriggerController.h in Headers */,
12691276
7A1232AA235E17B4002B6CE3 /* OSSessionManager.h in Headers */,
1277+
DE16C14724D3727200670EFA /* OneSignalLifecycleObserver.h in Headers */,
12701278
9D1BD9642379F42700A064F7 /* OSInfluenceDataDefines.h in Headers */,
12711279
7A674F192360D813001F9ACD /* OSBaseFocusTimeProcessor.h in Headers */,
12721280
CA8E19052193C76D009DA223 /* OSInAppMessagingHelpers.h in Headers */,
@@ -1541,6 +1549,7 @@
15411549
912412121E73342200E41FD7 /* OneSignalAlertViewDelegate.m in Sources */,
15421550
CA36A42D208FDEFB003EFA9A /* NSURL+OneSignal.m in Sources */,
15431551
912412421E73342200E41FD7 /* UNUserNotificationCenter+OneSignal.m in Sources */,
1552+
DE16C14424D3724700670EFA /* OneSignalLifecycleObserver.m in Sources */,
15441553
7A880F2B23FB45FB0081F5E8 /* OSInAppMessageOutcome.m in Sources */,
15451554
9124123A1E73342200E41FD7 /* OneSignalWebView.m in Sources */,
15461555
9D3300F523145AF3000F0A83 /* OneSignalViewHelper.m in Sources */,
@@ -1630,6 +1639,7 @@
16301639
0338566B1FBBD2270002F7C1 /* OSNotificationPayload.m in Sources */,
16311640
9DDFEEF323189C0E00EAE0BB /* OneSignalViewHelper.m in Sources */,
16321641
7A880F2C23FB45FB0081F5E8 /* OSInAppMessageOutcome.m in Sources */,
1642+
DE16C14524D3724700670EFA /* OneSignalLifecycleObserver.m in Sources */,
16331643
912412431E73342200E41FD7 /* UNUserNotificationCenter+OneSignal.m in Sources */,
16341644
CA47439F2190FEA80020DC8C /* OSTrigger.m in Sources */,
16351645
9124123B1E73342200E41FD7 /* OneSignalWebView.m in Sources */,

iOS_SDK/OneSignalSDK/Source/OneSignal.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@
8181
#import "OSInAppMessageAction.h"
8282
#import "OSInAppMessage.h"
8383

84+
#import "OneSignalLifecycleObserver.h"
85+
8486
#pragma clang diagnostic push
8587
#pragma clang diagnostic ignored "-Wundeclared-selector"
8688

@@ -623,6 +625,8 @@ + (id)initWithLaunchOptions:(NSDictionary*)launchOptions
623625
if ([OneSignalTrackFirebaseAnalytics libraryExists])
624626
[OneSignalTrackFirebaseAnalytics init];
625627

628+
[OneSignalLifecycleObserver registerLifecycleObserver];
629+
626630
return self;
627631
}
628632

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// OneSignalLifecycleObserver.h
3+
// OneSignal
4+
//
5+
// Created by Elliot Mawby on 7/30/20.
6+
// Copyright © 2020 Hiptic. All rights reserved.
7+
//
8+
9+
@interface OneSignalLifecycleObserver: NSObject
10+
11+
+ (OneSignalLifecycleObserver*) sharedInstance;
12+
+ (void)registerLifecycleObserver;
13+
+ (void)removeObserver;
14+
@end
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
//
2+
// OneSignalLifecycleObserver.m
3+
// OneSignal
4+
//
5+
// Created by Elliot Mawby on 7/30/20.
6+
// Copyright © 2020 Hiptic. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
#import "OneSignalLifecycleObserver.h"
11+
#import "OneSignal.h"
12+
#import "OneSignalCommonDefines.h"
13+
#import "OneSignalTracker.h"
14+
#import "OneSignalLocation.h"
15+
#import "OSMessagingController.h"
16+
17+
@implementation OneSignalLifecycleObserver
18+
19+
static OneSignalLifecycleObserver* _instance = nil;
20+
21+
+(OneSignalLifecycleObserver*) sharedInstance {
22+
@synchronized( _instance ) {
23+
if( !_instance ) {
24+
_instance = [[OneSignalLifecycleObserver alloc] init];
25+
}
26+
}
27+
28+
return _instance;
29+
}
30+
31+
+ (void)registerLifecycleObserver {
32+
// Replace swizzled lifecycle selectors with notification center observers for scene based Apps
33+
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(applicationDidBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];
34+
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(applicationWillResignActive) name:UIApplicationWillResignActiveNotification object:nil];
35+
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(applicationDidEnterBackground) name:UIApplicationDidEnterBackgroundNotification object:nil];
36+
37+
38+
if (@available(iOS 13.0, *)) {
39+
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(sceneDidEnterBackground) name:UISceneDidEnterBackgroundNotification object:nil];
40+
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(sceneDidBecomeActive) name:UISceneDidActivateNotification object:nil];
41+
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(sceneWillResignActive) name:UISceneWillDeactivateNotification object:nil];
42+
}
43+
}
44+
45+
+ (void)removeObserver {
46+
[[NSNotificationCenter defaultCenter] removeObserver:[OneSignalLifecycleObserver sharedInstance]];
47+
}
48+
49+
- (void)sceneDidBecomeActive {
50+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm sceneDidBecomeActive"];
51+
52+
if ([OneSignal app_id]) {
53+
[OneSignalTracker onFocus:NO];
54+
[OneSignalLocation onFocus:YES];
55+
[[OSMessagingController sharedInstance] onApplicationDidBecomeActive];
56+
}
57+
}
58+
59+
- (void)applicationDidBecomeActive {
60+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm applicationDidBecomeActive"];
61+
62+
if ([OneSignal app_id]) {
63+
[OneSignalTracker onFocus:NO];
64+
[OneSignalLocation onFocus:YES];
65+
[[OSMessagingController sharedInstance] onApplicationDidBecomeActive];
66+
}
67+
}
68+
69+
- (void)sceneWillResignActive {
70+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm sceneWillResignActive"];
71+
72+
if ([OneSignal app_id])
73+
[OneSignalTracker onFocus:YES];
74+
}
75+
76+
- (void)applicationWillResignActive {
77+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm applicationWillResignActive"];
78+
79+
if ([OneSignal app_id])
80+
[OneSignalTracker onFocus:YES];
81+
}
82+
83+
- (void)sceneDidEnterBackground {
84+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm sceneDidEnterBackground"];
85+
86+
if ([OneSignal app_id])
87+
[OneSignalLocation onFocus:NO];
88+
}
89+
90+
- (void)applicationDidEnterBackground {
91+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm applicationDidEnterBackground"];
92+
93+
if ([OneSignal app_id])
94+
[OneSignalLocation onFocus:NO];
95+
}
96+
97+
- (void)dealloc {
98+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"lifecycle observer deallocated"];
99+
[[NSNotificationCenter defaultCenter] removeObserver:self];
100+
}
101+
102+
@end

iOS_SDK/OneSignalSDK/Source/UIApplicationDelegate+OneSignal.m

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,6 @@ - (void) setOneSignalDelegate:(id<UIApplicationDelegate>)delegate {
101101

102102
[OneSignalAppDelegate sizzlePreiOS10MethodsPhase2];
103103

104-
injectToProperClass(@selector(oneSignalApplicationWillResignActive:),
105-
@selector(applicationWillResignActive:), delegateSubclasses, newClass, delegateClass);
106-
107-
// Required for background location
108-
injectToProperClass(@selector(oneSignalApplicationDidEnterBackground:),
109-
@selector(applicationDidEnterBackground:), delegateSubclasses, newClass, delegateClass);
110-
111-
injectToProperClass(@selector(oneSignalApplicationDidBecomeActive:),
112-
@selector(applicationDidBecomeActive:), delegateSubclasses, newClass, delegateClass);
113-
114104
// Used to track how long the app has been closed
115105
injectToProperClass(@selector(oneSignalApplicationWillTerminate:),
116106
@selector(applicationWillTerminate:), delegateSubclasses, newClass, delegateClass);
@@ -242,39 +232,6 @@ - (void)oneSignalLocalNotificationOpened:(UIApplication*)application notificatio
242232
[self oneSignalLocalNotificationOpened:application notification:notification];
243233
}
244234

245-
- (void)oneSignalApplicationWillResignActive:(UIApplication*)application {
246-
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"oneSignalApplicationWillResignActive"];
247-
248-
if ([OneSignal app_id])
249-
[OneSignalTracker onFocus:YES];
250-
251-
if ([self respondsToSelector:@selector(oneSignalApplicationWillResignActive:)])
252-
[self oneSignalApplicationWillResignActive:application];
253-
}
254-
255-
- (void) oneSignalApplicationDidEnterBackground:(UIApplication*)application {
256-
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"oneSignalApplicationDidEnterBackground"];
257-
258-
if ([OneSignal app_id])
259-
[OneSignalLocation onFocus:NO];
260-
261-
if ([self respondsToSelector:@selector(oneSignalApplicationDidEnterBackground:)])
262-
[self oneSignalApplicationDidEnterBackground:application];
263-
}
264-
265-
- (void)oneSignalApplicationDidBecomeActive:(UIApplication*)application {
266-
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"oneSignalApplicationDidBecomeActive"];
267-
268-
if ([OneSignal app_id]) {
269-
[OneSignalTracker onFocus:NO];
270-
[OneSignalLocation onFocus:YES];
271-
[[OSMessagingController sharedInstance] onApplicationDidBecomeActive];
272-
}
273-
274-
if ([self respondsToSelector:@selector(oneSignalApplicationDidBecomeActive:)])
275-
[self oneSignalApplicationDidBecomeActive:application];
276-
}
277-
278235
-(void)oneSignalApplicationWillTerminate:(UIApplication *)application {
279236

280237
if ([OneSignal app_id])

0 commit comments

Comments
 (0)