register device on server with key and fcm token

This commit is contained in:
isra el
2022-03-26 23:54:25 +03:00
parent 7c5b94dfa5
commit 7b2d3ab16d
7 changed files with 81 additions and 8 deletions

View File

@@ -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'
}

View File

@@ -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<UpdateFCMTokenResponseDTO> updateFCMToken(@Path("deviceId") String deviceId, @Body() UpdateFCMTokenInputDTO body);
}

View File

@@ -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<String>() {
@Override
public void onComplete(@NonNull Task<String> 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<UpdateFCMTokenResponseDTO> apiCall = service.updateFCMToken(newKey, new UpdateFCMTokenInputDTO(token));
apiCall.enqueue(new Callback<UpdateFCMTokenResponseDTO>() {
@Override
public void onResponse(Call<UpdateFCMTokenResponseDTO> call, Response<UpdateFCMTokenResponseDTO> 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<UpdateFCMTokenResponseDTO> call, Throwable t) {
Snackbar.make(view, "An error occured :(", Snackbar.LENGTH_LONG).show();
}
});
}
});
}
});

View File

@@ -0,0 +1,9 @@
package com.vernu.sms.dtos;
public class UpdateFCMTokenInputDTO {
public String fcmToken;
public UpdateFCMTokenInputDTO(String fcmToken) {
this.fcmToken = fcmToken;
}
}

View File

@@ -0,0 +1,7 @@
package com.vernu.sms.dtos;
public class UpdateFCMTokenResponseDTO {
public boolean success;
public Object data;
public String error;
}

View File

@@ -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);
}

View File

@@ -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" />