Skip to content

Commit 2217376

Browse files
Merge pull request #520 from Iterable/tapash/mob-3725-opening-links
[MOB-3725] - Allow opening of url from universal links also.
2 parents f4cfbd0 + 4c60afd commit 2217376

File tree

3 files changed

+35
-30
lines changed

3 files changed

+35
-30
lines changed

swift-sdk/Internal/InternalIterableAPI.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ final class InternalIterableAPI: NSObject, PushTrackerProtocol, AuthProvider {
7777
@discardableResult func handleUniversalLink(_ url: URL) -> Bool {
7878
let (result, future) = deepLinkManager.handleUniversalLink(url,
7979
urlDelegate: config.urlDelegate,
80-
urlOpener: AppUrlOpener(),
80+
urlOpener: urlOpener,
8181
allowedProtocols: config.allowedProtocols)
8282
future.onSuccess { attributionInfo in
8383
if let attributionInfo = attributionInfo {

swift-sdk/Internal/IterableActionRunner.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ struct IterableActionRunner {
7777
private static func shouldOpenUrl(url: URL,
7878
from source: IterableActionSource,
7979
withAllowedProtocols allowedProtocols: [String]) -> Bool {
80-
if source == .push || source == .inApp,
81-
let scheme = url.scheme,
80+
if let scheme = url.scheme,
8281
scheme == "https" || allowedProtocols.contains(scheme) {
8382
return true
8483
} else {

tests/unit-tests/IterableActionRunnerTests.swift

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,11 @@ let testExpectationTimeoutForInverted = 1.0 // How long to wait when we expect t
1111

1212
class IterableActionRunnerTests: XCTestCase {
1313
func testUrlOpenAction() {
14-
let urlString = "https://example.com"
15-
let action = IterableAction.action(fromDictionary: ["type": "openUrl", "data": urlString])!
16-
let context = IterableActionContext(action: action, source: .push)
17-
let urlOpener = MockUrlOpener()
18-
let expectation = XCTestExpectation(description: "call UrlHandler")
19-
let urlHandler: UrlHandler = { url in
20-
XCTAssertEqual(url.absoluteString, urlString)
21-
expectation.fulfill()
22-
return false
23-
}
24-
25-
let handled = IterableActionRunner.execute(action: action,
26-
context: context,
27-
urlHandler: urlHandler,
28-
urlOpener: urlOpener)
29-
30-
wait(for: [expectation], timeout: testExpectationTimeout)
31-
XCTAssertTrue(handled)
32-
33-
if #available(iOS 10.0, *) {
34-
XCTAssertEqual(urlOpener.ios10OpenedUrl?.absoluteString, urlString)
35-
XCTAssertNil(urlOpener.preIos10openedUrl)
36-
} else {
37-
XCTAssertEqual(urlOpener.preIos10openedUrl?.absoluteString, urlString)
38-
XCTAssertNil(urlOpener.ios10OpenedUrl)
39-
}
14+
validateUrlOpenAction(source: .push)
15+
validateUrlOpenAction(source: .inApp)
16+
validateUrlOpenAction(source: .universalLink)
4017
}
41-
18+
4219
func testUrlHandlingOverride() {
4320
let urlString = "https://example.com"
4421
let action = IterableAction.action(fromDictionary: ["type": "openUrl", "data": urlString])!
@@ -171,4 +148,33 @@ class IterableActionRunnerTests: XCTestCase {
171148

172149
wait(for: [expectation1], timeout: testExpectationTimeout)
173150
}
151+
152+
private func validateUrlOpenAction(source: IterableActionSource) {
153+
let urlString = "https://example.com"
154+
let action = IterableAction.action(fromDictionary: ["type": "openUrl", "data": urlString])!
155+
let context = IterableActionContext(action: action, source: source)
156+
let urlOpener = MockUrlOpener()
157+
let expectation = XCTestExpectation(description: "call UrlHandler")
158+
let urlHandler: UrlHandler = { url in
159+
XCTAssertEqual(url.absoluteString, urlString)
160+
expectation.fulfill()
161+
return false
162+
}
163+
164+
let handled = IterableActionRunner.execute(action: action,
165+
context: context,
166+
urlHandler: urlHandler,
167+
urlOpener: urlOpener)
168+
169+
wait(for: [expectation], timeout: testExpectationTimeout)
170+
XCTAssertTrue(handled)
171+
172+
if #available(iOS 10.0, *) {
173+
XCTAssertEqual(urlOpener.ios10OpenedUrl?.absoluteString, urlString)
174+
XCTAssertNil(urlOpener.preIos10openedUrl)
175+
} else {
176+
XCTAssertEqual(urlOpener.preIos10openedUrl?.absoluteString, urlString)
177+
XCTAssertNil(urlOpener.ios10OpenedUrl)
178+
}
179+
}
174180
}

0 commit comments

Comments
 (0)