Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 47d63ad

Browse files
committed
feat: Create Dynamic Links Sample in Kotlin
- Add Kotlin Support to build.gradle - Create interface to keep both java and kotlin Activities in sync - Update Java Activity to implement the interface and override their methods - Create Kotlin Activity - Add Kotlin Activity to AndroidManifest - Correct minor typo on shortenLongLink() from Java Activity
1 parent 62ac080 commit 47d63ad

File tree

5 files changed

+126
-2
lines changed

5 files changed

+126
-2
lines changed

dynamic-links/app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
apply plugin: 'com.android.application'
2+
apply plugin: 'kotlin-android'
23

34
android {
45
compileSdkVersion 27
@@ -23,4 +24,5 @@ dependencies {
2324
implementation "com.android.support:support-v4:27.1.1"
2425
implementation "com.android.support:appcompat-v7:27.1.1"
2526
implementation "com.google.firebase:firebase-invites:16.0.1"
27+
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
2628
}

dynamic-links/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<category android:name="android.intent.category.LAUNCHER" />
1616
</intent-filter>
1717
</activity>
18+
<activity android:name=".KotlinMainActivity"/>
1819
</application>
1920

2021
</manifest>
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package com.google.firebase.quickstart.dynamiclinks
2+
3+
import android.net.Uri
4+
import android.os.Bundle
5+
import android.support.v7.app.AppCompatActivity
6+
import com.google.firebase.dynamiclinks.DynamicLink
7+
import com.google.firebase.dynamiclinks.FirebaseDynamicLinks
8+
import com.google.firebase.quickstart.dynamiclinks.interfaces.MainActivityInterface
9+
10+
class KotlinMainActivity : AppCompatActivity(), MainActivityInterface {
11+
12+
override fun onCreate(savedInstanceState: Bundle?) {
13+
super.onCreate(savedInstanceState)
14+
setContentView(R.layout.activity_main)
15+
}
16+
17+
override fun createDynamicLink_Basic() {
18+
// [START create_link_basic]
19+
val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
20+
.setLink(Uri.parse("https://www.example.com/"))
21+
.setDynamicLinkDomain("example.page.link")
22+
// Open links with this app on Android
23+
.setAndroidParameters(DynamicLink.AndroidParameters.Builder().build())
24+
// Open links with com.example.ios on iOS
25+
.setIosParameters(DynamicLink.IosParameters.Builder("com.example.ios").build())
26+
.buildDynamicLink()
27+
28+
val dynamicLinkUri = dynamicLink.uri
29+
// [END create_link_basic]
30+
}
31+
32+
override fun createDynamicLink_Advanced() {
33+
// [START create_link_advanced]
34+
val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
35+
.setLink(Uri.parse("https://www.example.com/"))
36+
.setDynamicLinkDomain("example.page.link")
37+
.setAndroidParameters(
38+
DynamicLink.AndroidParameters.Builder("com.example.android")
39+
.setMinimumVersion(125)
40+
.build())
41+
.setIosParameters(
42+
DynamicLink.IosParameters.Builder("com.example.ios")
43+
.setAppStoreId("123456789")
44+
.setMinimumVersion("1.0.1")
45+
.build())
46+
.setGoogleAnalyticsParameters(
47+
DynamicLink.GoogleAnalyticsParameters.Builder()
48+
.setSource("orkut")
49+
.setMedium("social")
50+
.setCampaign("example-promo")
51+
.build())
52+
.setItunesConnectAnalyticsParameters(
53+
DynamicLink.ItunesConnectAnalyticsParameters.Builder()
54+
.setProviderToken("123456")
55+
.setCampaignToken("example-promo")
56+
.build())
57+
.setSocialMetaTagParameters(
58+
DynamicLink.SocialMetaTagParameters.Builder()
59+
.setTitle("Example of a Dynamic Link")
60+
.setDescription("This link works whether the app is installed or not!")
61+
.build())
62+
.buildDynamicLink() // Or buildShortDynamicLink()
63+
// [END create_link_advanced]
64+
}
65+
66+
override fun createShortLink() {
67+
// [START create_short_link]
68+
val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
69+
.setLink(Uri.parse("https://www.example.com/"))
70+
.setDynamicLinkDomain("example.page.link")
71+
// Set parameters
72+
// ...
73+
.buildShortDynamicLink()
74+
.addOnCompleteListener { task ->
75+
if (task.isSuccessful) {
76+
// Short link created
77+
val shortLink = task.result.shortLink
78+
val flowchartLink = task.result.previewLink
79+
} else {
80+
// Error
81+
// ...
82+
}
83+
}
84+
// [END create_short_link]
85+
}
86+
87+
override fun shortenLongLink() {
88+
// [START shorten_long_link]
89+
val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
90+
.setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
91+
.buildShortDynamicLink()
92+
.addOnCompleteListener { task ->
93+
if (task.isSuccessful) {
94+
// Short link created
95+
val shortLink = task.result.shortLink
96+
val flowchartLink = task.result.previewLink
97+
} else {
98+
// Error
99+
// ...
100+
}
101+
}
102+
// [END shorten_long_link]
103+
}
104+
}

dynamic-links/app/src/main/java/com/google/firebase/quickstart/dynamiclinks/MainActivity.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,17 @@
2525
import com.google.firebase.dynamiclinks.DynamicLink;
2626
import com.google.firebase.dynamiclinks.FirebaseDynamicLinks;
2727
import com.google.firebase.dynamiclinks.ShortDynamicLink;
28+
import com.google.firebase.quickstart.dynamiclinks.interfaces.MainActivityInterface;
2829

29-
public class MainActivity extends AppCompatActivity {
30+
public class MainActivity extends AppCompatActivity implements MainActivityInterface {
3031

3132
@Override
3233
protected void onCreate(Bundle savedInstanceState) {
3334
super.onCreate(savedInstanceState);
3435
setContentView(R.layout.activity_main);
3536
}
3637

38+
@Override
3739
public void createDynamicLink_Basic() {
3840
// [START create_link_basic]
3941
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
@@ -49,6 +51,7 @@ public void createDynamicLink_Basic() {
4951
// [END create_link_basic]
5052
}
5153

54+
@Override
5255
public void createDynamicLink_Advanced() {
5356
// [START create_link_advanced]
5457
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
@@ -83,6 +86,7 @@ public void createDynamicLink_Advanced() {
8386
// [END create_link_advanced]
8487
}
8588

89+
@Override
8690
public void createShortLink() {
8791
// [START create_short_link]
8892
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
@@ -107,7 +111,8 @@ public void onComplete(@NonNull Task<ShortDynamicLink> task) {
107111
// [END create_short_link]
108112
}
109113

110-
public void shotenLongLink() {
114+
@Override
115+
public void shortenLongLink() {
111116
// [START shorten_long_link]
112117
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
113118
.setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.google.firebase.quickstart.dynamiclinks.interfaces;
2+
3+
public interface MainActivityInterface {
4+
5+
void createDynamicLink_Basic();
6+
7+
void createDynamicLink_Advanced();
8+
9+
void createShortLink();
10+
11+
void shortenLongLink();
12+
}

0 commit comments

Comments
 (0)