From 7b2d3ab16d17db8754e9bf1dbfb9634a7e7cbf92 Mon Sep 17 00:00:00 2001 From: isra el Date: Sat, 26 Mar 2022 23:54:25 +0300 Subject: [PATCH] register device on server with key and fcm token --- app/build.gradle | 2 + .../java/com/vernu/sms/GatewayApiService.java | 14 ++++++ .../vernu/sms/activities/MainActivity.java | 43 ++++++++++++++++++- .../sms/dtos/UpdateFCMTokenInputDTO.java | 9 ++++ .../sms/dtos/UpdateFCMTokenResponseDTO.java | 7 +++ .../sms/helpers/SharedPreferenceHelper.java | 12 +++--- app/src/main/res/layout/activity_main.xml | 2 + 7 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/com/vernu/sms/GatewayApiService.java create mode 100644 app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenInputDTO.java create mode 100644 app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenResponseDTO.java diff --git a/app/build.gradle b/app/build.gradle index e6eaadf..2ba692a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,4 +43,6 @@ dependencies { implementation 'com.google.firebase:firebase-messaging-directboot' implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' } \ No newline at end of file diff --git a/app/src/main/java/com/vernu/sms/GatewayApiService.java b/app/src/main/java/com/vernu/sms/GatewayApiService.java new file mode 100644 index 0000000..e4ce442 --- /dev/null +++ b/app/src/main/java/com/vernu/sms/GatewayApiService.java @@ -0,0 +1,14 @@ +package com.vernu.sms; + +import com.vernu.sms.dtos.UpdateFCMTokenInputDTO; +import com.vernu.sms.dtos.UpdateFCMTokenResponseDTO; + +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.POST; +import retrofit2.http.Path; + +public interface GatewayApiService { + @POST("gateway/devices/{deviceId}/updateFCMToken") + Call updateFCMToken(@Path("deviceId") String deviceId, @Body() UpdateFCMTokenInputDTO body); +} \ No newline at end of file diff --git a/app/src/main/java/com/vernu/sms/activities/MainActivity.java b/app/src/main/java/com/vernu/sms/activities/MainActivity.java index 885e716..70fab17 100644 --- a/app/src/main/java/com/vernu/sms/activities/MainActivity.java +++ b/app/src/main/java/com/vernu/sms/activities/MainActivity.java @@ -9,6 +9,7 @@ import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; @@ -19,9 +20,18 @@ import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.android.material.snackbar.Snackbar; import com.google.firebase.messaging.FirebaseMessaging; +import com.vernu.sms.GatewayApiService; import com.vernu.sms.R; +import com.vernu.sms.dtos.UpdateFCMTokenInputDTO; +import com.vernu.sms.dtos.UpdateFCMTokenResponseDTO; import com.vernu.sms.helpers.SharedPreferenceHelper; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + public class MainActivity extends AppCompatActivity { private Context mContext; @@ -63,20 +73,49 @@ public class MainActivity extends AppCompatActivity { @Override public void onClick(View view) { String newKey = gatewayKeyEditText.getText().toString(); - SharedPreferenceHelper.setSharedPreferenceString(mContext, "GATEWAY_KEY", newKey); FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { if (!task.isSuccessful()) { + Snackbar.make(view, "Failed to obtain FCM Token :(", Snackbar.LENGTH_LONG).show(); return; } String token = task.getResult(); - Toast.makeText(MainActivity.this, token, Toast.LENGTH_SHORT).show(); fcmTokenEditText.setText(token); + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("https://vernu-sms.herokuapp.com/api/v1/") + .addConverterFactory(GsonConverterFactory.create()) + .build(); + + GatewayApiService service = retrofit.create(GatewayApiService.class); + Call apiCall = service.updateFCMToken(newKey, new UpdateFCMTokenInputDTO(token)); + apiCall.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + + if (response.isSuccessful()) { + SharedPreferenceHelper.setSharedPreferenceString(mContext, "GATEWAY_KEY", newKey); + Log.e("API_RESP", response.toString()); + Snackbar.make(view, "DONE :)", Snackbar.LENGTH_LONG).show(); + + } else { + Snackbar.make(view, response.message(), Snackbar.LENGTH_LONG).show(); + + } + } + + @Override + public void onFailure(Call call, Throwable t) { + Snackbar.make(view, "An error occured :(", Snackbar.LENGTH_LONG).show(); + + } + }); } }); + + } }); diff --git a/app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenInputDTO.java b/app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenInputDTO.java new file mode 100644 index 0000000..acceb89 --- /dev/null +++ b/app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenInputDTO.java @@ -0,0 +1,9 @@ +package com.vernu.sms.dtos; + +public class UpdateFCMTokenInputDTO { + public String fcmToken; + + public UpdateFCMTokenInputDTO(String fcmToken) { + this.fcmToken = fcmToken; + } +} diff --git a/app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenResponseDTO.java b/app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenResponseDTO.java new file mode 100644 index 0000000..cc99c05 --- /dev/null +++ b/app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenResponseDTO.java @@ -0,0 +1,7 @@ +package com.vernu.sms.dtos; + +public class UpdateFCMTokenResponseDTO { + public boolean success; + public Object data; + public String error; +} diff --git a/app/src/main/java/com/vernu/sms/helpers/SharedPreferenceHelper.java b/app/src/main/java/com/vernu/sms/helpers/SharedPreferenceHelper.java index 7a606a8..9e5b2d0 100644 --- a/app/src/main/java/com/vernu/sms/helpers/SharedPreferenceHelper.java +++ b/app/src/main/java/com/vernu/sms/helpers/SharedPreferenceHelper.java @@ -7,40 +7,40 @@ public class SharedPreferenceHelper { private final static String PREF_FILE = "PREF"; - public static void setSharedPreferenceString(Context context, String key, String value){ + public static void setSharedPreferenceString(Context context, String key, String value) { SharedPreferences settings = context.getSharedPreferences(PREF_FILE, 0); SharedPreferences.Editor editor = settings.edit(); editor.putString(key, value); editor.apply(); } - public static void setSharedPreferenceInt(Context context, String key, int value){ + public static void setSharedPreferenceInt(Context context, String key, int value) { SharedPreferences settings = context.getSharedPreferences(PREF_FILE, 0); SharedPreferences.Editor editor = settings.edit(); editor.putInt(key, value); editor.apply(); } - public static void setSharedPreferenceBoolean(Context context, String key, boolean value){ + public static void setSharedPreferenceBoolean(Context context, String key, boolean value) { SharedPreferences settings = context.getSharedPreferences(PREF_FILE, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean(key, value); editor.apply(); } - public static String getSharedPreferenceString(Context context, String key, String defValue){ + public static String getSharedPreferenceString(Context context, String key, String defValue) { SharedPreferences settings = context.getSharedPreferences(PREF_FILE, 0); return settings.getString(key, defValue); } - static int getSharedPreferenceInt(Context context, String key, int defValue){ + static int getSharedPreferenceInt(Context context, String key, int defValue) { SharedPreferences settings = context.getSharedPreferences(PREF_FILE, 0); return settings.getInt(key, defValue); } - static boolean getSharedPreferenceBoolean(Context context, String key, boolean defValue){ + static boolean getSharedPreferenceBoolean(Context context, String key, boolean defValue) { SharedPreferences settings = context.getSharedPreferences(PREF_FILE, 0); return settings.getBoolean(key, defValue); } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e8f4f01..e3f5992 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -51,6 +51,8 @@ android:ems="10" android:gravity="start|top" android:inputType="textMultiLine" + android:enabled="false" + android:hint="FCM Token" app:layout_constraintEnd_toEndOf="@+id/gatewayKeyEditText" app:layout_constraintStart_toStartOf="@+id/gatewayKeyEditText" app:layout_constraintTop_toBottomOf="@+id/gatewayKeyEditText" />