3 changed files with 129 additions and 0 deletions
-
2android/app/src/main/java/com/vernu/sms/AppConstants.java
-
16android/app/src/main/java/com/vernu/sms/activities/MainActivity.java
-
111android/app/src/main/java/com/vernu/sms/helpers/VersionTracker.java
@ -0,0 +1,111 @@ |
|||||
|
package com.vernu.sms.helpers; |
||||
|
|
||||
|
import android.content.Context; |
||||
|
import android.util.Log; |
||||
|
|
||||
|
import com.vernu.sms.ApiManager; |
||||
|
import com.vernu.sms.AppConstants; |
||||
|
import com.vernu.sms.BuildConfig; |
||||
|
import com.vernu.sms.dtos.RegisterDeviceInputDTO; |
||||
|
import com.vernu.sms.dtos.RegisterDeviceResponseDTO; |
||||
|
|
||||
|
import retrofit2.Call; |
||||
|
import retrofit2.Callback; |
||||
|
import retrofit2.Response; |
||||
|
|
||||
|
public class VersionTracker { |
||||
|
private static final String TAG = "VersionTracker"; |
||||
|
|
||||
|
/** |
||||
|
* Checks if the app version has changed since the last time it was run |
||||
|
* @param context Application context |
||||
|
* @return true if version has changed, false otherwise |
||||
|
*/ |
||||
|
public static boolean hasVersionChanged(Context context) { |
||||
|
int lastVersionCode = SharedPreferenceHelper.getSharedPreferenceInt( |
||||
|
context, |
||||
|
AppConstants.SHARED_PREFS_LAST_VERSION_CODE_KEY, |
||||
|
-1 |
||||
|
); |
||||
|
|
||||
|
String lastVersionName = SharedPreferenceHelper.getSharedPreferenceString( |
||||
|
context, |
||||
|
AppConstants.SHARED_PREFS_LAST_VERSION_NAME_KEY, |
||||
|
"" |
||||
|
); |
||||
|
|
||||
|
int currentVersionCode = BuildConfig.VERSION_CODE; |
||||
|
String currentVersionName = BuildConfig.VERSION_NAME; |
||||
|
|
||||
|
// First app launch or version changed |
||||
|
return lastVersionCode == -1 || |
||||
|
lastVersionCode != currentVersionCode || |
||||
|
!lastVersionName.equals(currentVersionName); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Updates the stored version information with current version |
||||
|
* @param context Application context |
||||
|
*/ |
||||
|
public static void updateStoredVersion(Context context) { |
||||
|
SharedPreferenceHelper.setSharedPreferenceInt( |
||||
|
context, |
||||
|
AppConstants.SHARED_PREFS_LAST_VERSION_CODE_KEY, |
||||
|
BuildConfig.VERSION_CODE |
||||
|
); |
||||
|
|
||||
|
SharedPreferenceHelper.setSharedPreferenceString( |
||||
|
context, |
||||
|
AppConstants.SHARED_PREFS_LAST_VERSION_NAME_KEY, |
||||
|
BuildConfig.VERSION_NAME |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Reports current app version to the server |
||||
|
* @param context Application context |
||||
|
*/ |
||||
|
public static void reportVersionToServer(Context context) { |
||||
|
String deviceId = SharedPreferenceHelper.getSharedPreferenceString( |
||||
|
context, |
||||
|
AppConstants.SHARED_PREFS_DEVICE_ID_KEY, |
||||
|
"" |
||||
|
); |
||||
|
|
||||
|
String apiKey = SharedPreferenceHelper.getSharedPreferenceString( |
||||
|
context, |
||||
|
AppConstants.SHARED_PREFS_API_KEY_KEY, |
||||
|
"" |
||||
|
); |
||||
|
|
||||
|
// If device is not registered or no API key, can't report version |
||||
|
if (deviceId.isEmpty() || apiKey.isEmpty()) { |
||||
|
Log.d(TAG, "Can't report version: device not registered or no API key"); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
RegisterDeviceInputDTO updateInput = new RegisterDeviceInputDTO(); |
||||
|
updateInput.setAppVersionCode(BuildConfig.VERSION_CODE); |
||||
|
updateInput.setAppVersionName(BuildConfig.VERSION_NAME); |
||||
|
|
||||
|
Call<RegisterDeviceResponseDTO> apiCall = ApiManager.getApiService() |
||||
|
.updateDevice(deviceId, apiKey, updateInput); |
||||
|
|
||||
|
apiCall.enqueue(new Callback<RegisterDeviceResponseDTO>() { |
||||
|
@Override |
||||
|
public void onResponse(Call<RegisterDeviceResponseDTO> call, Response<RegisterDeviceResponseDTO> response) { |
||||
|
if (response.isSuccessful()) { |
||||
|
Log.d(TAG, "Version update reported successfully"); |
||||
|
updateStoredVersion(context); |
||||
|
} else { |
||||
|
Log.e(TAG, "Failed to report version update: " + response.code()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void onFailure(Call<RegisterDeviceResponseDTO> call, Throwable t) { |
||||
|
Log.e(TAG, "Error reporting version update: " + t.getMessage()); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue