Skip to content

Commit

Permalink
supporting scene based apps
Browse files Browse the repository at this point in the history
  • Loading branch information
emawby committed Aug 4, 2020
1 parent 09d6497 commit d592a10
Show file tree
Hide file tree
Showing 6 changed files with 134 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -453,7 +453,7 @@
"$(PROJECT_DIR)",
);
INFOPLIST_FILE = OneSignalDevApp/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example;
Expand All @@ -474,7 +474,7 @@
"$(PROJECT_DIR)",
);
INFOPLIST_FILE = OneSignalDevApp/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example;
Expand All @@ -494,6 +494,7 @@
"$(PROJECT_DIR)",
);
INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalNotificationServiceExtensionA;
Expand All @@ -515,6 +516,7 @@
);
GCC_OPTIMIZATION_LEVEL = 0;
INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalNotificationServiceExtensionA;
Expand Down
10 changes: 10 additions & 0 deletions iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,9 @@
CAE2E5A9215D80070036FD32 /* OSNotificationPayload.m in Sources */ = {isa = PBXBuildFile; fileRef = 454F94F41FAD2E5A00D74CCF /* OSNotificationPayload.m */; };
CAE2E5AA215D80380036FD32 /* OneSignalNotificationServiceExtensionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 454F94F11FAD218000D74CCF /* OneSignalNotificationServiceExtensionHandler.m */; };
CAEA1C66202BB3C600FBFE9E /* OSEmailSubscription.h in Headers */ = {isa = PBXBuildFile; fileRef = CA810FCF202BA97300A60FED /* OSEmailSubscription.h */; };
DE16C14424D3724700670EFA /* OneSignalLifecycleObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = DE16C14324D3724700670EFA /* OneSignalLifecycleObserver.m */; };
DE16C14524D3724700670EFA /* OneSignalLifecycleObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = DE16C14324D3724700670EFA /* OneSignalLifecycleObserver.m */; };
DE16C14724D3727200670EFA /* OneSignalLifecycleObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = DE16C14624D3727200670EFA /* OneSignalLifecycleObserver.h */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
Expand Down Expand Up @@ -682,6 +685,8 @@
CACBAAA7218A6280000ACAA5 /* OSJSONHandling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSJSONHandling.h; sourceTree = "<group>"; };
CACBAAA9218A65AE000ACAA5 /* InAppMessagingTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InAppMessagingTests.m; sourceTree = "<group>"; };
CACBAAAB218A662B000ACAA5 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
DE16C14324D3724700670EFA /* OneSignalLifecycleObserver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OneSignalLifecycleObserver.m; sourceTree = "<group>"; };
DE16C14624D3727200670EFA /* OneSignalLifecycleObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OneSignalLifecycleObserver.h; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -1016,6 +1021,8 @@
91C7725D1E7CCE1000D612D0 /* OneSignalInternal.h */,
912411F01E73342200E41FD7 /* OneSignal.h */,
912411F11E73342200E41FD7 /* OneSignal.m */,
DE16C14624D3727200670EFA /* OneSignalLifecycleObserver.h */,
DE16C14324D3724700670EFA /* OneSignalLifecycleObserver.m */,
CAB4112720852E48005A70D1 /* DelayedInitializationParameters.h */,
CAB4112820852E48005A70D1 /* DelayedInitializationParameters.m */,
CA70E3332023D51000019273 /* OneSignalSetEmailParameters.h */,
Expand Down Expand Up @@ -1256,6 +1263,7 @@
91F58D7A1E7C7D3F0017D24D /* OneSignalNotificationSettings.h in Headers */,
CA4742E4218B8FF30020DC8C /* OSTriggerController.h in Headers */,
7A1232AA235E17B4002B6CE3 /* OSSessionManager.h in Headers */,
DE16C14724D3727200670EFA /* OneSignalLifecycleObserver.h in Headers */,
9D1BD9642379F42700A064F7 /* OSInfluenceDataDefines.h in Headers */,
7A674F192360D813001F9ACD /* OSBaseFocusTimeProcessor.h in Headers */,
CA8E19052193C76D009DA223 /* OSInAppMessagingHelpers.h in Headers */,
Expand Down Expand Up @@ -1512,6 +1520,7 @@
912412121E73342200E41FD7 /* OneSignalAlertViewDelegate.m in Sources */,
CA36A42D208FDEFB003EFA9A /* NSURL+OneSignal.m in Sources */,
912412421E73342200E41FD7 /* UNUserNotificationCenter+OneSignal.m in Sources */,
DE16C14424D3724700670EFA /* OneSignalLifecycleObserver.m in Sources */,
7A880F2B23FB45FB0081F5E8 /* OSInAppMessageOutcome.m in Sources */,
9124123A1E73342200E41FD7 /* OneSignalWebView.m in Sources */,
9D3300F523145AF3000F0A83 /* OneSignalViewHelper.m in Sources */,
Expand Down Expand Up @@ -1601,6 +1610,7 @@
0338566B1FBBD2270002F7C1 /* OSNotificationPayload.m in Sources */,
9DDFEEF323189C0E00EAE0BB /* OneSignalViewHelper.m in Sources */,
7A880F2C23FB45FB0081F5E8 /* OSInAppMessageOutcome.m in Sources */,
DE16C14524D3724700670EFA /* OneSignalLifecycleObserver.m in Sources */,
912412431E73342200E41FD7 /* UNUserNotificationCenter+OneSignal.m in Sources */,
CA47439F2190FEA80020DC8C /* OSTrigger.m in Sources */,
9124123B1E73342200E41FD7 /* OneSignalWebView.m in Sources */,
Expand Down
4 changes: 4 additions & 0 deletions iOS_SDK/OneSignalSDK/Source/OneSignal.m
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@
#import "OSInAppMessageAction.h"
#import "OSInAppMessage.h"

#import "OneSignalLifecycleObserver.h"

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"

Expand Down Expand Up @@ -623,6 +625,8 @@ + (id)initWithLaunchOptions:(NSDictionary*)launchOptions
if ([OneSignalTrackFirebaseAnalytics libraryExists])
[OneSignalTrackFirebaseAnalytics init];

[OneSignalLifecycleObserver registerLifecycleObserver];

return self;
}

Expand Down
14 changes: 14 additions & 0 deletions iOS_SDK/OneSignalSDK/Source/OneSignalLifecycleObserver.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//
// OneSignalLifecycleObserver.h
// OneSignal
//
// Created by Elliot Mawby on 7/30/20.
// Copyright © 2020 Hiptic. All rights reserved.
//

@interface OneSignalLifecycleObserver: NSObject

+ (OneSignalLifecycleObserver*) sharedInstance;
+ (void)registerLifecycleObserver;
+ (void)removeObserver;
@end
102 changes: 102 additions & 0 deletions iOS_SDK/OneSignalSDK/Source/OneSignalLifecycleObserver.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
//
// OneSignalLifecycleObserver.m
// OneSignal
//
// Created by Elliot Mawby on 7/30/20.
// Copyright © 2020 Hiptic. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "OneSignalLifecycleObserver.h"
#import "OneSignal.h"
#import "OneSignalCommonDefines.h"
#import "OneSignalTracker.h"
#import "OneSignalLocation.h"
#import "OSMessagingController.h"

@implementation OneSignalLifecycleObserver

static OneSignalLifecycleObserver* _instance = nil;

+(OneSignalLifecycleObserver*) sharedInstance {
@synchronized( _instance ) {
if( !_instance ) {
_instance = [[OneSignalLifecycleObserver alloc] init];
}
}

return _instance;
}

+ (void)registerLifecycleObserver {
// Replace swizzled lifecycle selectors with notification center observers for scene based Apps
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(applicationDidBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(applicationWillResignActive) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(applicationDidEnterBackground) name:UIApplicationDidEnterBackgroundNotification object:nil];


if (@available(iOS 13.0, *)) {
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(sceneDidEnterBackground) name:UISceneDidEnterBackgroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(sceneDidBecomeActive) name:UISceneDidActivateNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:[OneSignalLifecycleObserver sharedInstance] selector:@selector(sceneWillResignActive) name:UISceneWillDeactivateNotification object:nil];
}
}

+ (void)removeObserver {
[[NSNotificationCenter defaultCenter] removeObserver:[OneSignalLifecycleObserver sharedInstance]];
}

- (void)sceneDidBecomeActive {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm sceneDidBecomeActive"];

if ([OneSignal app_id]) {
[OneSignalTracker onFocus:NO];
[OneSignalLocation onFocus:YES];
[[OSMessagingController sharedInstance] onApplicationDidBecomeActive];
}
}

- (void)applicationDidBecomeActive {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm applicationDidBecomeActive"];

if ([OneSignal app_id]) {
[OneSignalTracker onFocus:NO];
[OneSignalLocation onFocus:YES];
[[OSMessagingController sharedInstance] onApplicationDidBecomeActive];
}
}

- (void)sceneWillResignActive {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm sceneWillResignActive"];

if ([OneSignal app_id])
[OneSignalTracker onFocus:YES];
}

- (void)applicationWillResignActive {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm applicationWillResignActive"];

if ([OneSignal app_id])
[OneSignalTracker onFocus:YES];
}

- (void)sceneDidEnterBackground {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm sceneDidEnterBackground"];

if ([OneSignal app_id])
[OneSignalLocation onFocus:NO];
}

- (void)applicationDidEnterBackground {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"ecm applicationDidEnterBackground"];

if ([OneSignal app_id])
[OneSignalLocation onFocus:NO];
}

- (void)dealloc {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"lifecycle observer deallocated"];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

@end
43 changes: 0 additions & 43 deletions iOS_SDK/OneSignalSDK/Source/UIApplicationDelegate+OneSignal.m
Original file line number Diff line number Diff line change
Expand Up @@ -101,16 +101,6 @@ - (void) setOneSignalDelegate:(id<UIApplicationDelegate>)delegate {

[OneSignalAppDelegate sizzlePreiOS10MethodsPhase2];

injectToProperClass(@selector(oneSignalApplicationWillResignActive:),
@selector(applicationWillResignActive:), delegateSubclasses, newClass, delegateClass);

// Required for background location
injectToProperClass(@selector(oneSignalApplicationDidEnterBackground:),
@selector(applicationDidEnterBackground:), delegateSubclasses, newClass, delegateClass);

injectToProperClass(@selector(oneSignalApplicationDidBecomeActive:),
@selector(applicationDidBecomeActive:), delegateSubclasses, newClass, delegateClass);

// Used to track how long the app has been closed
injectToProperClass(@selector(oneSignalApplicationWillTerminate:),
@selector(applicationWillTerminate:), delegateSubclasses, newClass, delegateClass);
Expand Down Expand Up @@ -242,39 +232,6 @@ - (void)oneSignalLocalNotificationOpened:(UIApplication*)application notificatio
[self oneSignalLocalNotificationOpened:application notification:notification];
}

- (void)oneSignalApplicationWillResignActive:(UIApplication*)application {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"oneSignalApplicationWillResignActive"];

if ([OneSignal app_id])
[OneSignalTracker onFocus:YES];

if ([self respondsToSelector:@selector(oneSignalApplicationWillResignActive:)])
[self oneSignalApplicationWillResignActive:application];
}

- (void) oneSignalApplicationDidEnterBackground:(UIApplication*)application {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"oneSignalApplicationDidEnterBackground"];

if ([OneSignal app_id])
[OneSignalLocation onFocus:NO];

if ([self respondsToSelector:@selector(oneSignalApplicationDidEnterBackground:)])
[self oneSignalApplicationDidEnterBackground:application];
}

- (void)oneSignalApplicationDidBecomeActive:(UIApplication*)application {
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"oneSignalApplicationDidBecomeActive"];

if ([OneSignal app_id]) {
[OneSignalTracker onFocus:NO];
[OneSignalLocation onFocus:YES];
[[OSMessagingController sharedInstance] onApplicationDidBecomeActive];
}

if ([self respondsToSelector:@selector(oneSignalApplicationDidBecomeActive:)])
[self oneSignalApplicationDidBecomeActive:application];
}

-(void)oneSignalApplicationWillTerminate:(UIApplication *)application {

if ([OneSignal app_id])
Expand Down

0 comments on commit d592a10

Please sign in to comment.