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

Skip to content

Commit b6b08e2

Browse files
committed
Move old invites snippets here
Change-Id: Iaf3a20d9a72a1ce5acceca0bc2795f53dba0d97b
1 parent 448ee66 commit b6b08e2

File tree

9 files changed

+457
-19
lines changed

9 files changed

+457
-19
lines changed

invites/app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ android {
2424
dependencies {
2525
implementation "com.android.support:support-v4:28.0.0"
2626
implementation "com.android.support:appcompat-v7:28.0.0"
27+
implementation "com.android.support:design:28.0.0"
2728
implementation "com.google.firebase:firebase-invites:16.0.6"
2829
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.0"
30+
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
2931
}
3032

3133
apply plugin: 'com.google.gms.google-services'

invites/app/src/main/AndroidManifest.xml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,39 @@
88
android:label="@string/app_name"
99
android:supportsRtl="true"
1010
android:theme="@style/AppTheme">
11+
1112
<activity android:name="com.google.firebase.example.invites.MainActivity">
1213
<intent-filter>
1314
<action android:name="android.intent.action.MAIN" />
1415

1516
<category android:name="android.intent.category.LAUNCHER" />
1617
</intent-filter>
1718
</activity>
18-
<activity android:name="com.google.firebase.example.invites.kotlin.MainActivity" />
19+
20+
<activity
21+
android:name="com.google.firebase.example.invites.DeepLinkActivity"
22+
android:label="@string/app_name"
23+
android:theme="@style/AppTheme">
24+
25+
<!-- [START deep_link_filter] -->
26+
<intent-filter>
27+
<action android:name="android.intent.action.VIEW"/>
28+
29+
<category android:name="android.intent.category.DEFAULT"/>
30+
<category android:name="android.intent.category.BROWSABLE"/>
31+
32+
<data android:host="example.com" android:scheme="http"/>
33+
<data android:host="example.com" android:scheme="https"/>
34+
</intent-filter>
35+
<!-- [END deep_link_filter] -->
36+
</activity>
37+
38+
39+
<!-- Kotlin -->
40+
<activity
41+
android:name="com.google.firebase.example.invites.kotlin.MainActivity" />
42+
<activity
43+
android:name="com.google.firebase.example.invites.kotlin.DeepLinkActivity" />
1944
</application>
2045

2146
</manifest>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.google.firebase.example.invites;
2+
3+
import android.net.Uri;
4+
import android.os.Bundle;
5+
import android.support.v7.app.AppCompatActivity;
6+
import android.util.Log;
7+
import android.view.View;
8+
import android.widget.TextView;
9+
10+
import devrel.firebase.google.com.firebaseoptions.R;
11+
12+
/**
13+
* App Invites is deprecated, this file serves only to contain snippets that are still
14+
* referenced in some documentation.
15+
*/
16+
public class DeepLinkActivity extends AppCompatActivity implements
17+
View.OnClickListener {
18+
19+
private static final String TAG = com.google.firebase.example.invites.kotlin.DeepLinkActivity.class.getSimpleName();
20+
21+
@Override
22+
protected void onCreate(Bundle savedInstanceState) {
23+
super.onCreate(savedInstanceState);
24+
setContentView(R.layout.activity_deep_link);
25+
26+
// Button click listener
27+
findViewById(R.id.buttonOk).setOnClickListener(this);
28+
}
29+
30+
@Override
31+
protected void onStart() {
32+
super.onStart();
33+
34+
// Check for link in intent
35+
if (getIntent() != null && getIntent().getData() != null) {
36+
Uri data = getIntent().getData();
37+
38+
Log.d(TAG, "data:" + data);
39+
((TextView) findViewById(R.id.deepLinkText))
40+
.setText(getString(R.string.deep_link_fmt, data.toString()));
41+
}
42+
}
43+
44+
45+
@Override
46+
public void onClick(View v) {
47+
int i = v.getId();
48+
if (i == R.id.buttonOk) {
49+
finish();
50+
}
51+
}
52+
}

invites/app/src/main/java/com/google/firebase/example/invites/MainActivity.java

Lines changed: 124 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,128 @@
11
package com.google.firebase.example.invites;
22

33
import android.content.Intent;
4+
import android.net.Uri;
5+
import android.os.Bundle;
6+
import android.support.annotation.NonNull;
7+
import android.support.design.widget.Snackbar;
48
import android.support.v7.app.AppCompatActivity;
9+
import android.util.Log;
10+
import android.view.View;
11+
import android.view.ViewGroup;
512

613
import com.google.android.gms.appinvite.AppInviteInvitation;
14+
import com.google.android.gms.tasks.OnFailureListener;
15+
import com.google.android.gms.tasks.OnSuccessListener;
16+
import com.google.firebase.appinvite.FirebaseAppInvite;
17+
import com.google.firebase.dynamiclinks.FirebaseDynamicLinks;
18+
import com.google.firebase.dynamiclinks.PendingDynamicLinkData;
719

820
import devrel.firebase.google.com.firebaseoptions.R;
921

10-
public class MainActivity extends AppCompatActivity {
22+
/**
23+
* App Invites is deprecated, this file serves only to contain snippets that are still
24+
* referenced in some documentation.
25+
*/
26+
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
27+
28+
private static final String TAG = "MainActivity";
1129

1230
private static final String IOS_APP_CLIENT_ID = "foo-bar-baz";
1331
private static final int REQUEST_INVITE = 101;
1432

33+
// [START on_create]
34+
@Override
35+
protected void onCreate(Bundle savedInstanceState) {
36+
// [START_EXCLUDE]
37+
super.onCreate(savedInstanceState);
38+
setContentView(R.layout.activity_main);
39+
40+
// Invite button click listener
41+
findViewById(R.id.inviteButton).setOnClickListener(this);
42+
// [END_EXCLUDE]
43+
44+
// Check for App Invite invitations and launch deep-link activity if possible.
45+
// Requires that an Activity is registered in AndroidManifest.xml to handle
46+
// deep-link URLs.
47+
FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent())
48+
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
49+
@Override
50+
public void onSuccess(PendingDynamicLinkData data) {
51+
if (data == null) {
52+
Log.d(TAG, "getInvitation: no data");
53+
return;
54+
}
55+
56+
// Get the deep link
57+
Uri deepLink = data.getLink();
58+
59+
// Extract invite
60+
FirebaseAppInvite invite = FirebaseAppInvite.getInvitation(data);
61+
if (invite != null) {
62+
String invitationId = invite.getInvitationId();
63+
}
64+
65+
// Handle the deep link
66+
// [START_EXCLUDE]
67+
Log.d(TAG, "deepLink:" + deepLink);
68+
if (deepLink != null) {
69+
Intent intent = new Intent(Intent.ACTION_VIEW);
70+
intent.setPackage(getPackageName());
71+
intent.setData(deepLink);
72+
73+
startActivity(intent);
74+
}
75+
// [END_EXCLUDE]
76+
}
77+
})
78+
.addOnFailureListener(this, new OnFailureListener() {
79+
@Override
80+
public void onFailure(@NonNull Exception e) {
81+
Log.w(TAG, "getDynamicLink:onFailure", e);
82+
}
83+
});
84+
}
85+
// [END on_create]
86+
87+
/**
88+
* User has clicked the 'Invite' button, launch the invitation UI with the proper
89+
* title, message, and deep link
90+
*/
91+
// [START on_invite_clicked]
92+
private void onInviteClicked() {
93+
Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))
94+
.setMessage(getString(R.string.invitation_message))
95+
.setDeepLink(Uri.parse(getString(R.string.invitation_deep_link)))
96+
.setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))
97+
.setCallToActionText(getString(R.string.invitation_cta))
98+
.build();
99+
startActivityForResult(intent, REQUEST_INVITE);
100+
}
101+
// [END on_invite_clicked]
102+
103+
// [START on_activity_result]
104+
@Override
105+
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
106+
super.onActivityResult(requestCode, resultCode, data);
107+
Log.d(TAG, "onActivityResult: requestCode=" + requestCode + ", resultCode=" + resultCode);
108+
109+
if (requestCode == REQUEST_INVITE) {
110+
if (resultCode == RESULT_OK) {
111+
// Get the invitation IDs of all sent messages
112+
String[] ids = AppInviteInvitation.getInvitationIds(resultCode, data);
113+
for (String id : ids) {
114+
Log.d(TAG, "onActivityResult: sent invitation " + id);
115+
}
116+
} else {
117+
// Sending failed or it was canceled, show failure message to the user
118+
// [START_EXCLUDE]
119+
showMessage(getString(R.string.send_failed));
120+
// [END_EXCLUDE]
121+
}
122+
}
123+
}
124+
// [END on_activity_result]
125+
15126
public void sendInvitationIOS() {
16127
// [START invites_send_invitation_ios]
17128
Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))
@@ -24,4 +135,16 @@ public void sendInvitationIOS() {
24135
// [END invites_send_invitation_ios]
25136
}
26137

138+
private void showMessage(String msg) {
139+
ViewGroup container = findViewById(R.id.snackbarLayout);
140+
Snackbar.make(container, msg, Snackbar.LENGTH_SHORT).show();
141+
}
142+
143+
@Override
144+
public void onClick(View view) {
145+
int i = view.getId();
146+
if (i == R.id.inviteButton) {
147+
onInviteClicked();
148+
}
149+
}
27150
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.google.firebase.example.invites.kotlin
2+
3+
import android.os.Bundle
4+
import android.support.v7.app.AppCompatActivity
5+
import android.util.Log
6+
import android.view.View
7+
import devrel.firebase.google.com.firebaseoptions.R
8+
import kotlinx.android.synthetic.main.activity_deep_link.buttonOk
9+
import kotlinx.android.synthetic.main.activity_deep_link.deepLinkText
10+
11+
/**
12+
* App Invites is deprecated, this file serves only to contain snippets that are still
13+
* referenced in some documentation.
14+
*/
15+
class DeepLinkActivity : AppCompatActivity(), View.OnClickListener {
16+
17+
override fun onCreate(savedInstanceState: Bundle?) {
18+
super.onCreate(savedInstanceState)
19+
setContentView(R.layout.activity_deep_link)
20+
21+
// Button click listener
22+
buttonOk.setOnClickListener(this)
23+
}
24+
25+
override fun onStart() {
26+
super.onStart()
27+
28+
// Check for link in intent
29+
intent?.let {
30+
val data = it.data
31+
32+
Log.d(TAG, "data:$data")
33+
deepLinkText.text = getString(R.string.deep_link_fmt, data.toString())
34+
}
35+
}
36+
37+
override fun onClick(v: View) {
38+
val i = v.id
39+
if (i == R.id.buttonOk) {
40+
finish()
41+
}
42+
}
43+
44+
companion object {
45+
private val TAG = DeepLinkActivity::class.java.simpleName
46+
}
47+
}

0 commit comments

Comments
 (0)