Skip to content

Commit 0f90b3e

Browse files
committed
fix: added multiple link domain support
1 parent 7759f6e commit 0f90b3e

File tree

5 files changed

+53
-30
lines changed

5 files changed

+53
-30
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,9 @@
587587
<branch-config>
588588
<branch-key value="key_live_ndqptlgXNE4LHqIahH1WIpbiyFlb62J3" />
589589
<uri-scheme value="branchcordova" />
590-
<link-domain value="cordova.app.link" />
590+
<link-domain value="yourcustomdomain.com" />
591+
<link-domain value="cordova.app.link" /> <!-- optional previous link domain -->
592+
<link-domain value="bnc.lt" /> <!-- optional previous link domain -->
591593
<ios-team-release value="PW4Q8885U7" />
592594
<ios-team-debug value="FG35JLLMXX" /> <!-- optional -->
593595
<android-prefix value="/WSuf" /> <!-- optional (for bnc.lt) -->

src/scripts/android/updateAndroidManifest.js

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -182,25 +182,29 @@
182182
// determine the Branch link domain <data> to append to the App Link intent filter
183183
function getAppLinkIntentFilterData (preferences) {
184184
var intentFilterData = []
185-
186-
if (preferences.linkDomain.indexOf('app.link') !== -1) {
187-
// app.link needs an additional -alternate link domain
188-
var first = preferences.linkDomain.split('.')[0]
189-
var rest = preferences.linkDomain.split('.').slice(2).join('.')
190-
var alternate = first + '-alternate' + '.' + rest
191-
192-
intentFilterData.push(getAppLinkIntentFilterDictionary(preferences.linkDomain))
193-
intentFilterData.push(getAppLinkIntentFilterDictionary(alternate))
194-
} else if (preferences.linkDomain.indexOf('bnc.lt') !== -1) {
195-
// bnc.lt
196-
if (preferences.androidPrefix == null) {
197-
throw new Error('BRANCH SDK: Missing "android-prefix" in <branch-config> in your config.xml. Docs https://goo.gl/GijGKP')
185+
var linkDomains = preferences.linkDomain
186+
187+
for (var i = 0; i < linkDomains.length; i++) {
188+
var linkDomain = linkDomains[i]
189+
190+
// app.link link domains need -alternate associated domains as well (for Deep Views)
191+
if (linkDomain.indexOf('app.link') !== -1) {
192+
var first = linkDomain.split('.')[0]
193+
var rest = linkDomain.split('.').slice(2).join('.')
194+
var alternate = first + '-alternate' + '.' + rest
195+
196+
intentFilterData.push(getAppLinkIntentFilterDictionary(linkDomain))
197+
intentFilterData.push(getAppLinkIntentFilterDictionary(alternate))
198+
} else if (linkDomain.indexOf('bnc.lt') !== -1) {
199+
// bnc.lt
200+
if (preferences.androidPrefix == null) {
201+
throw new Error('BRANCH SDK: Missing "android-prefix" in <branch-config> in your config.xml. Docs https://goo.gl/GijGKP')
202+
}
203+
intentFilterData.push(getAppLinkIntentFilterDictionary(linkDomain, preferences.androidPrefix))
204+
} else {
205+
// custom
206+
intentFilterData.push(getAppLinkIntentFilterDictionary(linkDomain))
198207
}
199-
200-
intentFilterData.push(getAppLinkIntentFilterDictionary(preferences.linkDomain, preferences.androidPrefix))
201-
} else {
202-
// custom
203-
intentFilterData.push(getAppLinkIntentFilterDictionary(preferences.linkDomain))
204208
}
205209

206210
return intentFilterData

src/scripts/ios/updateAssociatedDomains.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,18 +99,23 @@
9999
function updateAssociatedDomains (preferences) {
100100
var domainList = []
101101
var prefix = 'applinks:'
102+
var linkDomains = preferences.linkDomain
102103

103-
// add link domain to associated domain
104-
domainList.push(prefix + preferences.linkDomain)
104+
for (var i = 0; i < linkDomains.length; i++) {
105+
var linkDomain = linkDomains[i]
105106

106-
// app.link link domains need -alternate associated domains as well (for Deep Views)
107-
if (preferences.linkDomain.indexOf('app.link') !== -1) {
108-
var first = preferences.linkDomain.split('.')[0]
109-
var second = preferences.linkDomain.split('.')[1]
110-
var rest = preferences.linkDomain.split('.').slice(2).join('.')
111-
var alternate = first + '-alternate'
107+
// add link domain to associated domain
108+
domainList.push(prefix + linkDomain)
112109

113-
domainList.push(prefix + alternate + '.' + second + '.' + rest)
110+
// app.link link domains need -alternate associated domains as well (for Deep Views)
111+
if (linkDomain.indexOf('app.link') !== -1) {
112+
var first = linkDomain.split('.')[0]
113+
var second = linkDomain.split('.')[1]
114+
var rest = linkDomain.split('.').slice(2).join('.')
115+
var alternate = first + '-alternate'
116+
117+
domainList.push(prefix + alternate + '.' + second + '.' + rest)
118+
}
114119
}
115120

116121
return domainList

src/scripts/ios/updatePlist.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484

8585
// override
8686
obj.branch_key = preferences.branchKey
87-
obj.branch_app_domain = preferences.linkDomain
87+
obj.branch_app_domain = preferences.linkDomain[0]
8888

8989
return obj
9090
}

src/scripts/npm/processConfigXml.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
'projectRoot': getProjectRoot(context),
5151
'projectName': getProjectName(configXml),
5252
'branchKey': getBranchValue(branchXml, 'branch-key'),
53-
'linkDomain': getBranchValue(branchXml, 'link-domain'),
53+
'linkDomain': getBranchLinkDomains(branchXml, 'link-domain'),
5454
'uriScheme': getBranchValue(branchXml, 'uri-scheme'),
5555
'iosBundleId': getBundleId(configXml, 'ios'),
5656
'iosProjectModule': getProjectModule(context),
@@ -77,6 +77,18 @@
7777
return (branchXml.hasOwnProperty(key)) ? branchXml[key][0]['$']['value'] : null
7878
}
7979

80+
// read branch value from <branch-config> for multiple <link-domain>
81+
function getBranchLinkDomains (branchXml, key) {
82+
var output = []
83+
if (branchXml.hasOwnProperty(key)) {
84+
for (var i = 0; i < branchXml[key].length; i++) {
85+
var item = branchXml[key][i]
86+
output.push(item['$']['value'])
87+
}
88+
}
89+
return output
90+
}
91+
8092
// read bundle id from config.xml (optional values override widget-id)
8193
function getBundleId (configXml, platform) {
8294
var output = null

0 commit comments

Comments
 (0)