Skip to content

Commit 4ffcfff

Browse files
refactor: migrate SceneDelegateHandler to objc (#539)
* refactor: migrate SceneDelegateHandler to objc * move header file to include folder address @jamesnrokt comment
1 parent b1eaaf7 commit 4ffcfff

File tree

7 files changed

+97
-70
lines changed

7 files changed

+97
-70
lines changed

UnitTests/MParticle+PrivateMethods.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#import "MPDataPlanFilter.h"
44
#import "AppEnvironmentProvider.h"
55
#import "MPAppNotificationHandler.h"
6+
#import "SceneDelegateHandler.h"
67

78
@interface MParticle (Tests)
89
- (void)setOptOutCompletion:(MPExecStatus)execStatus optOut:(BOOL)optOut;

UnitTests/Mocks/SceneDelegateHandlerMock.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import XCTest
22
import mParticle_Apple_SDK_NoLocation
33

4-
class OpenURLHandlerProtocolMock: OpenURLHandlerProtocol {
4+
class OpenURLHandlerProtocolMock: NSObject, OpenURLHandlerProtocol {
55

66
var openURLWithOptionsCalled = false
77
var openURLWithOptionsURLParam: URL?
@@ -18,7 +18,7 @@ class OpenURLHandlerProtocolMock: OpenURLHandlerProtocol {
1818
var continueUserActivityRestorationHandlerParam: (([UIUserActivityRestoring]?) -> Void)?
1919
var continueUserActivityReturnValue: Bool = false
2020

21-
func continueUserActivity(
21+
func `continue`(
2222
_ userActivity: NSUserActivity,
2323
restorationHandler: @escaping ([any UIUserActivityRestoring]?) -> Void
2424
) -> Bool {

mParticle-Apple-SDK.xcodeproj/project.pbxproj

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
351308432E6B28F5002A3AD6 /* Executor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3513083F2E6B28F5002A3AD6 /* Executor.h */; };
1313
351308442E6B28F5002A3AD6 /* Executor.m in Sources */ = {isa = PBXBuildFile; fileRef = 351308402E6B28F5002A3AD6 /* Executor.m */; };
1414
351779502E706BF8004BF05E /* ExecutorMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3517794C2E706BE4004BF05E /* ExecutorMock.swift */; };
15-
351F6FC82EDF7B2A00E527A7 /* SceneDelegateHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351F6FC62EDF7B2100E527A7 /* SceneDelegateHandler.swift */; };
1615
35329FE92E54C38C009AC4FD /* MPNetworkOptions+MParticlePrivate.m in Sources */ = {isa = PBXBuildFile; fileRef = 35329FE82E54C38C009AC4FD /* MPNetworkOptions+MParticlePrivate.m */; };
1716
35329FEC2E54C483009AC4FD /* MPNetworkOptions+MParticlePrivateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35329FEB2E54C480009AC4FD /* MPNetworkOptions+MParticlePrivateTests.swift */; };
1817
35329FF02E54CA49009AC4FD /* MParticleOptions+MParticlePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 35329FEE2E54CA49009AC4FD /* MParticleOptions+MParticlePrivate.h */; };
@@ -237,6 +236,9 @@
237236
53A79DBA29CE23F700E7489F /* MPUploadBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 53A79B1229CDFB1F00E7489F /* MPUploadBuilder.m */; };
238237
53A79DBC29CE23F700E7489F /* MPBaseProjection.m in Sources */ = {isa = PBXBuildFile; fileRef = 53A79B5329CDFB1F00E7489F /* MPBaseProjection.m */; };
239238
53A79DBF29CE23F700E7489F /* MPIdentityApiManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 53A79AA229CDFB1E00E7489F /* MPIdentityApiManager.m */; };
239+
7213DE7F2F2D85980007A619 /* SceneDelegateHandlerMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7213DE7E2F2D85980007A619 /* SceneDelegateHandlerMock.swift */; };
240+
7213DE812F30F0DF0007A619 /* SceneDelegateHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 7213DE802F30F0DF0007A619 /* SceneDelegateHandler.h */; };
241+
7213DE832F30F0EC0007A619 /* SceneDelegateHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 7213DE822F30F0EC0007A619 /* SceneDelegateHandler.m */; };
240242
7231B80E2EB3C4AC001565E5 /* MPKitMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7231B80C2EB3C4AC001565E5 /* MPKitMock.swift */; };
241243
7231B81A2EB94DCD001565E5 /* MParticleTestBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7231B8192EB94DCD001565E5 /* MParticleTestBase.swift */; };
242244
7231B81D2EB94EAA001565E5 /* MParticleConfigurationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7231B81C2EB94EAA001565E5 /* MParticleConfigurationTests.swift */; };
@@ -269,7 +271,6 @@
269271
7E0387822DB913D2003B7D5E /* MPRokt.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E0387802DB913D2003B7D5E /* MPRokt.m */; };
270272
7E15B2062D94617900C1FF3E /* MPRoktTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E15B2052D94617900C1FF3E /* MPRoktTests.m */; };
271273
7E573D2A2ECB65D90087185D /* MParticleSceneDelegateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E573D292ECB65D90087185D /* MParticleSceneDelegateTests.swift */; };
272-
7E87E0C22EE093E100A18E3A /* SceneDelegateHandlerMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E87E0BE2EE093E100A18E3A /* SceneDelegateHandlerMock.swift */; };
273274
B3D778622E02F55F00D887A4 /* MPRoktEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = B31360F72E012760000DFBC9 /* MPRoktEvent.swift */; };
274275
D33C8B342B8510C20012EDFD /* MPAudience.h in Headers */ = {isa = PBXBuildFile; fileRef = D33C8B312B8510C20012EDFD /* MPAudience.h */; settings = {ATTRIBUTES = (Public, ); }; };
275276
D33C8B362B8510C20012EDFD /* MPAudience.m in Sources */ = {isa = PBXBuildFile; fileRef = D33C8B322B8510C20012EDFD /* MPAudience.m */; };
@@ -325,7 +326,6 @@
325326
3513083F2E6B28F5002A3AD6 /* Executor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Executor.h; sourceTree = "<group>"; };
326327
351308402E6B28F5002A3AD6 /* Executor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Executor.m; sourceTree = "<group>"; };
327328
3517794C2E706BE4004BF05E /* ExecutorMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExecutorMock.swift; sourceTree = "<group>"; };
328-
351F6FC62EDF7B2100E527A7 /* SceneDelegateHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegateHandler.swift; sourceTree = "<group>"; };
329329
35329FE82E54C38C009AC4FD /* MPNetworkOptions+MParticlePrivate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "MPNetworkOptions+MParticlePrivate.m"; sourceTree = "<group>"; };
330330
35329FEB2E54C480009AC4FD /* MPNetworkOptions+MParticlePrivateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MPNetworkOptions+MParticlePrivateTests.swift"; sourceTree = "<group>"; };
331331
35329FEE2E54CA49009AC4FD /* MParticleOptions+MParticlePrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MParticleOptions+MParticlePrivate.h"; sourceTree = "<group>"; };
@@ -498,7 +498,6 @@
498498
53A79C4329CDFB4800E7489F /* MPProduct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPProduct.h; sourceTree = "<group>"; };
499499
53A79C4429CDFB4800E7489F /* MPTransactionAttributes+Dictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MPTransactionAttributes+Dictionary.h"; sourceTree = "<group>"; };
500500
53A79C6829CE019E00E7489F /* MPPersistenceControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPersistenceControllerTests.m; sourceTree = "<group>"; };
501-
53A79C6929CE019E00E7489F /* MParticleWebViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MParticleWebViewTests.m; sourceTree = "<group>"; };
502501
53A79C6A29CE019E00E7489F /* MPKitAppsFlyerTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPKitAppsFlyerTest.h; sourceTree = "<group>"; };
503502
53A79C6B29CE019E00E7489F /* MPKitTestClassSideloaded.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPKitTestClassSideloaded.m; sourceTree = "<group>"; };
504503
53A79C6C29CE019E00E7489F /* MPCommerceEventTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCommerceEventTests.m; sourceTree = "<group>"; };
@@ -564,6 +563,9 @@
564563
53A79CFE29CE12AB00E7489F /* mParticle-Apple-SDK.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; name = "mParticle-Apple-SDK.modulemap"; path = "Framework/mParticle-Apple-SDK.modulemap"; sourceTree = "<group>"; };
565564
53A79CFF29CE23D600E7489F /* mParticle-Apple-SDK-NoLocation.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; name = "mParticle-Apple-SDK-NoLocation.modulemap"; path = "Framework/mParticle-Apple-SDK-NoLocation.modulemap"; sourceTree = "<group>"; };
566565
53A79DC629CE23F700E7489F /* mParticle_Apple_SDK_NoLocation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = mParticle_Apple_SDK_NoLocation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
566+
7213DE7E2F2D85980007A619 /* SceneDelegateHandlerMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegateHandlerMock.swift; sourceTree = "<group>"; };
567+
7213DE802F30F0DF0007A619 /* SceneDelegateHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegateHandler.h; sourceTree = "<group>"; };
568+
7213DE822F30F0EC0007A619 /* SceneDelegateHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegateHandler.m; sourceTree = "<group>"; };
567569
7231B80C2EB3C4AC001565E5 /* MPKitMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPKitMock.swift; sourceTree = "<group>"; };
568570
7231B8192EB94DCD001565E5 /* MParticleTestBase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MParticleTestBase.swift; sourceTree = "<group>"; };
569571
7231B81C2EB94EAA001565E5 /* MParticleConfigurationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MParticleConfigurationTests.swift; sourceTree = "<group>"; };
@@ -596,7 +598,6 @@
596598
7E0387802DB913D2003B7D5E /* MPRokt.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPRokt.m; sourceTree = "<group>"; };
597599
7E15B2052D94617900C1FF3E /* MPRoktTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPRoktTests.m; sourceTree = "<group>"; };
598600
7E573D292ECB65D90087185D /* MParticleSceneDelegateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MParticleSceneDelegateTests.swift; sourceTree = "<group>"; };
599-
7E87E0BE2EE093E100A18E3A /* SceneDelegateHandlerMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SceneDelegateHandlerMock.swift; path = UnitTests/Mocks/SceneDelegateHandlerMock.swift; sourceTree = "<group>"; };
600601
B31360F72E012760000DFBC9 /* MPRoktEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPRoktEvent.swift; sourceTree = "<group>"; };
601602
D33C8B312B8510C20012EDFD /* MPAudience.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAudience.h; sourceTree = "<group>"; };
602603
D33C8B322B8510C20012EDFD /* MPAudience.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAudience.m; sourceTree = "<group>"; };
@@ -701,6 +702,7 @@
701702
356D4A582E58B09D00CB69FE /* SettingsProviderMock.swift */,
702703
727801DD2EB0FE8400BDAD98 /* MPNotificationControllerMock.swift */,
703704
727801E02EB0FECA00BDAD98 /* AppEnvironmentProviderMock.swift */,
705+
7213DE7E2F2D85980007A619 /* SceneDelegateHandlerMock.swift */,
704706
727801E32EB1131B00BDAD98 /* MPAppNotificationHandlerMock.swift */,
705707
7231B80C2EB3C4AC001565E5 /* MPKitMock.swift */,
706708
);
@@ -710,7 +712,6 @@
710712
53A79A6F29CCCD6400E7489F = {
711713
isa = PBXGroup;
712714
children = (
713-
7E87E0BE2EE093E100A18E3A /* SceneDelegateHandlerMock.swift */,
714715
D3BA75152B614E3D008C3C65 /* PrivacyInfo.xcprivacy */,
715716
53A79CFE29CE12AB00E7489F /* mParticle-Apple-SDK.modulemap */,
716717
53A79CFF29CE23D600E7489F /* mParticle-Apple-SDK-NoLocation.modulemap */,
@@ -736,7 +737,7 @@
736737
53A79A7B29CCCD6400E7489F /* mParticle-Apple-SDK */ = {
737738
isa = PBXGroup;
738739
children = (
739-
351F6FC62EDF7B2100E527A7 /* SceneDelegateHandler.swift */,
740+
7213DE822F30F0EC0007A619 /* SceneDelegateHandler.m */,
740741
3513083F2E6B28F5002A3AD6 /* Executor.h */,
741742
729721752EAC2AD60045E55C /* AppEnvironmentProvider.h */,
742743
729721782EAC2B750045E55C /* AppEnvironmentProvider.m */,
@@ -1039,6 +1040,7 @@
10391040
53A79ABB29CDFB1E00E7489F /* MPPersistenceController.h */,
10401041
7E03877F2DB913D2003B7D5E /* MPRokt.h */,
10411042
35C3DE6E2F2919B40077C0FD /* MPCCPAConsent.h */,
1043+
7213DE802F30F0DF0007A619 /* SceneDelegateHandler.h */,
10421044
);
10431045
path = Include;
10441046
sourceTree = "<group>";
@@ -1237,6 +1239,7 @@
12371239
53A79D2829CE23F700E7489F /* MPCustomModulePreference.h in Headers */,
12381240
53A79D2929CE23F700E7489F /* MPDataModelProtocol.h in Headers */,
12391241
53A79D2C29CE23F700E7489F /* MPIConstants.h in Headers */,
1242+
7213DE812F30F0DF0007A619 /* SceneDelegateHandler.h in Headers */,
12401243
359BAFF92E56330200A8A704 /* SettingsProvider.h in Headers */,
12411244
53A79D2E29CE23F700E7489F /* MPBackendController.h in Headers */,
12421245
7E0387812DB913D2003B7D5E /* MPRokt.h in Headers */,
@@ -1504,7 +1507,6 @@
15041507
534CD27829CE2CE1008452B3 /* MPPersistenceControllerTests.m in Sources */,
15051508
534CD27929CE2CE1008452B3 /* MPMessageTests.m in Sources */,
15061509
534CD27A29CE2CE1008452B3 /* MPDataPlanFilterTests.m in Sources */,
1507-
7E87E0C22EE093E100A18E3A /* SceneDelegateHandlerMock.swift in Sources */,
15081510
534CD27C29CE2CE1008452B3 /* MPIntegrationAttributesTest.m in Sources */,
15091511
356752932E60928B00DEEE23 /* MPStateMachineMock.swift in Sources */,
15101512
534CD27D29CE2CE1008452B3 /* MPDataModelTests.m in Sources */,
@@ -1521,6 +1523,7 @@
15211523
727801E42EB1131B00BDAD98 /* MPAppNotificationHandlerMock.swift in Sources */,
15221524
7231B83A2EB960C8001565E5 /* MParticleTimedEventTests.swift in Sources */,
15231525
7231B85E2EB96D88001565E5 /* MParticleBackendControllerDelegateTests.swift in Sources */,
1526+
7213DE7F2F2D85980007A619 /* SceneDelegateHandlerMock.swift in Sources */,
15241527
534CD28629CE2CE1008452B3 /* MPKitActivityTests.m in Sources */,
15251528
7231B83F2EB9627D001565E5 /* MParticleErrorTests.swift in Sources */,
15261529
534CD28729CE2CE1008452B3 /* MPKitTestClassSideloaded.m in Sources */,
@@ -1578,7 +1581,6 @@
15781581
53A79D6F29CE23F700E7489F /* mParticle.m in Sources */,
15791582
53A79D7029CE23F700E7489F /* MPProduct.m in Sources */,
15801583
35329FF32E54CA78009AC4FD /* MParticleOptions+MParticlePrivate.m in Sources */,
1581-
530D247F2CFF70B0000FE7E3 /* MPUserIdentityInstance.swift in Sources */,
15821584
53A79D7129CE23F700E7489F /* MPPersistenceController.m in Sources */,
15831585
351308442E6B28F5002A3AD6 /* Executor.m in Sources */,
15841586
53A79D7329CE23F700E7489F /* FilteredMParticleUser.m in Sources */,
@@ -1615,6 +1617,7 @@
16151617
53A79D9429CE23F700E7489F /* MPConnector.m in Sources */,
16161618
53A79D9529CE23F700E7489F /* MPBreadcrumb.m in Sources */,
16171619
53A79D9629CE23F700E7489F /* MPEnums.m in Sources */,
1620+
7213DE832F30F0EC0007A619 /* SceneDelegateHandler.m in Sources */,
16181621
53A79D9729CE23F700E7489F /* MPNetworkPerformance.m in Sources */,
16191622
53A79D9929CE23F700E7489F /* MPDataPlanFilter.m in Sources */,
16201623
53A79D9A29CE23F700E7489F /* MPSession.m in Sources */,
@@ -1646,7 +1649,6 @@
16461649
53A79DB129CE23F700E7489F /* MPTransactionAttributes.m in Sources */,
16471650
53A79DB329CE23F700E7489F /* MPCommerceEventInstruction.m in Sources */,
16481651
53A79DB429CE23F700E7489F /* MPDataModelAbstract.m in Sources */,
1649-
351F6FC82EDF7B2A00E527A7 /* SceneDelegateHandler.swift in Sources */,
16501652
53A79DB529CE23F700E7489F /* MPBackendController.m in Sources */,
16511653
53A79DB629CE23F700E7489F /* MPForwardQueueItem.m in Sources */,
16521654
53A79DB729CE23F700E7489F /* MPEventProjection.m in Sources */,
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#import <Foundation/Foundation.h>
2+
#import <UIKit/UIKit.h>
3+
4+
5+
NS_ASSUME_NONNULL_BEGIN
6+
7+
@protocol OpenURLHandlerProtocol <NSObject>
8+
- (void)open:(NSURL *)url options:(nullable NSDictionary<NSString *, id> *)options;
9+
- (BOOL)continueUserActivity:(NSUserActivity *)userActivity
10+
restorationHandler:(void (^_Nonnull)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler;
11+
@end
12+
13+
@interface SceneDelegateHandler : NSObject
14+
15+
- (instancetype)initWithAppNotificationHandler:(id<OpenURLHandlerProtocol>)appNotificationHandler;
16+
- (void)handleUserActivity:(NSUserActivity *)userActivity;
17+
18+
#if TARGET_OS_IOS == 1
19+
- (void)handleWithUrlContext:(UIOpenURLContext *)urlContext API_AVAILABLE(ios(13.0));
20+
#endif
21+
22+
@end
23+
24+
NS_ASSUME_NONNULL_END
25+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#import "SceneDelegateHandler.h"
2+
#import "MPILogger.h"
3+
#import "mParticle.h"
4+
5+
@interface SceneDelegateHandler ()
6+
@property (nonatomic, strong) id<OpenURLHandlerProtocol> appNotificationHandler;
7+
@end
8+
9+
@implementation SceneDelegateHandler
10+
11+
- (instancetype)initWithAppNotificationHandler:(id<OpenURLHandlerProtocol>)appNotificationHandler {
12+
self = [super init];
13+
if (self) {
14+
_appNotificationHandler = appNotificationHandler;
15+
}
16+
return self;
17+
}
18+
19+
#if TARGET_OS_IOS
20+
- (void)handleWithUrlContext:(UIOpenURLContext *)urlContext API_AVAILABLE(ios(13.0)) {
21+
22+
MPILogDebug(@"Opening URLContext URL: %@", urlContext.URL);
23+
MPILogDebug(@"Source: %@", urlContext.options.sourceApplication ?: @"unknown");
24+
MPILogDebug(@"Annotation: %@", urlContext.options.annotation);
25+
26+
if (@available(iOS 14.5, *)) {
27+
MPILogDebug(@"Event Attribution: %@", urlContext.options.eventAttribution);
28+
}
29+
30+
MPILogDebug(@"Open in place: %@", urlContext.options.openInPlace ? @"True" : @"False");
31+
32+
NSMutableDictionary *options = [NSMutableDictionary dictionary];
33+
if (urlContext.options.sourceApplication) {
34+
options[@"UIApplicationOpenURLOptionsSourceApplicationKey"] = urlContext.options.sourceApplication;
35+
}
36+
37+
[self.appNotificationHandler open:urlContext.URL options:options];
38+
}
39+
#endif
40+
41+
- (void)handleUserActivity:(NSUserActivity *)userActivity {
42+
MPILogDebug(@"User Activity Received");
43+
MPILogDebug(@"User Activity Type: %@", userActivity.activityType);
44+
MPILogDebug(@"User Activity Title: %@", userActivity.title ?: @"");
45+
MPILogDebug(@"User Activity User Info: %@", userActivity.userInfo ?: @{});
46+
47+
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
48+
MPILogDebug(@"Opening UserActivity URL: %@", userActivity.webpageURL.absoluteString ?: @"");
49+
}
50+
51+
(void)[self.appNotificationHandler continueUserActivity:userActivity
52+
restorationHandler:^(__unused NSArray<id<UIUserActivityRestoring>> * _Nullable restorableObjects) {
53+
}];
54+
}
55+
56+
@end

0 commit comments

Comments
 (0)