Browse Source

register device on server with key and fcm token

pull/1/head
isra el 4 years ago
parent
commit
7b2d3ab16d
  1. 2
      app/build.gradle
  2. 14
      app/src/main/java/com/vernu/sms/GatewayApiService.java
  3. 43
      app/src/main/java/com/vernu/sms/activities/MainActivity.java
  4. 9
      app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenInputDTO.java
  5. 7
      app/src/main/java/com/vernu/sms/dtos/UpdateFCMTokenResponseDTO.java
  6. 12
      app/src/main/java/com/vernu/sms/helpers/SharedPreferenceHelper.java
  7. 2
      app/src/main/res/layout/activity_main.xml

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

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

43
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<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();
}
});
}
});
}
});

9
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;
}
}

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

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

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

Loading…
Cancel
Save