Panagiotis Triantafyllou

update sdk to version 4.5.4.4

......@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
ext {
PUBLISH_GROUP_ID = 'ly.warp'
PUBLISH_VERSION = '4.5.4.3'
PUBLISH_VERSION = '4.5.4.4'
PUBLISH_ARTIFACT_ID = 'warply-android-sdk'
}
......@@ -58,9 +58,9 @@ dependencies {
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
//------------------------------ Huawei -----------------------------//
api 'com.huawei.agconnect:agconnect-core:1.6.2.300'
api 'com.huawei.hms:base:6.2.0.300'
api 'com.huawei.hms:push:6.1.0.300'
api 'com.huawei.agconnect:agconnect-core:1.6.5.300'
api 'com.huawei.hms:base:6.4.0.302'
api 'com.huawei.hms:push:6.3.0.304'
api 'com.huawei.hms:ads-identifier:3.4.39.302'
//------------------------------ SQLCipher -----------------------------//
......
......@@ -5,11 +5,8 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="com.google.android.c2dm.permission.SEND" />
<application>
<!-- For Huawei Push -->
......
......@@ -203,62 +203,6 @@ public enum Warply {
return isInitialized(false);
}
/* GCM Related methods */
public static void registerGCM(String senderId) {
INSTANCE.isInitializedOrThrow();
INSTANCE.registerGCMInternal(senderId, false);
}
/**
* Method used to register with the GCM service, this will automatically
* check if a registration is present and if not start the process.
*
* @param senderId The project ID, got from Google API Console
*/
private void registerGCMInternal(String senderId, boolean force) {
if (WarpUtils.isWaitingGCM(mContext.get())) {
WarpUtils
.log("************* WARPLY GCM Registration ********************");
WarpUtils
.log("[WARP TRace] Waiting to finish registration to GCM service.");
WarpUtils
.log("**********************************************************");
} else if ((WarpUtils.isRegisteredGCM(mContext.get()) && (WarpUtils
.getLastGCMSenderId(mContext.get()).equalsIgnoreCase(senderId)))
&& (!force)) {
WarpUtils
.log("************* WARPLY GCM Registration ********************");
WarpUtils.log("[WARP TRace] Already registered to GCM service.");
WarpUtils
.log("**********************************************************");
} else {
WarpUtils
.log("************* WARPLY GCM Registration ********************");
WarpUtils
.log("[WARP TRace] Try to register to GCM service with ID: "
+ senderId);
WarpUtils
.log("**********************************************************");
WarpConstants.GCM_SENDER_ID = senderId;
WarpUtils.setLastGCMSenderId(mContext.get(), senderId);
GCMRegistrar.register(mContext.get(), senderId);
}
}
/**
* Method used to unregister from the GCM service.
*/
public static void unregisterGCM() {
INSTANCE.isInitializedOrThrow();
GCMRegistrar.unregister(INSTANCE.mContext.get());
WarpUtils
.log("************* WARPLY GCM Registration ********************");
WarpUtils.log("[WARP TRace] Unregistered from GCM");
WarpUtils
.log("**********************************************************");
}
/* Locking methods */
private boolean acquirePostLockInternal() {
......@@ -883,6 +827,10 @@ public enum Warply {
}
private boolean hasDeviceInfoDifference(JSONObject savedDeviceInfo, JSONObject toSendDeviceInfo) {
if (savedDeviceInfo.length() != toSendDeviceInfo.length()) {
return true;
}
for (Iterator<String> iterToSend = toSendDeviceInfo.keys(); iterToSend.hasNext(); ) {
String keyToSend = iterToSend.next();
for (Iterator<String> iterSaved = savedDeviceInfo.keys(); iterSaved.hasNext(); ) {
......@@ -998,7 +946,6 @@ public enum Warply {
return;
if (lastGCMSenderId.equals(""))
return;
registerGCMInternal(lastGCMSenderId, true);
}
public void onGCMRegistrationSuccess() {
......
......@@ -189,14 +189,14 @@ public class WarpViewActivity extends WarpBaseActivity {
private void setUpPushEvents(String sessionUUID) {
WarplyAnalyticsManager.logUserEngagedPush(WarpJSONParser.createJSONObjectFromString("session_uuid", sessionUUID));
// if (WorkManager.getInstance().getWorkInfosByTag(PushEventsWorkerService.TAG).isDone() || WorkManager.getInstance().getWorkInfosByTag(PushEventsWorkerService.TAG).isCancelled()) {
// if (WorkManager.getInstance(this).getWorkInfosByTag(PushEventsWorkerService.TAG).isDone() || WorkManager.getInstance(this).getWorkInfosByTag(PushEventsWorkerService.TAG).isCancelled()) {
Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
OneTimeWorkRequest sendEvent = new OneTimeWorkRequest.Builder(PushEventsClickedWorkerService.class)
.setConstraints(constraints)
.setInitialDelay(defineRandomStart(), TimeUnit.MINUTES)
.build();
WorkManager.getInstance().enqueue(sendEvent);
WorkManager.getInstance(this).enqueue(sendEvent);
// }
}
......
/*
* Copyright 2010-2013 Warply Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE WARPLY LTD ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL WARPLY LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package ly.warp.sdk.receivers;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Log;
import ly.warp.sdk.services.GCMBaseIntentService;
import ly.warp.sdk.services.WarpIntentService;
import ly.warp.sdk.utils.WarpUtils;
import ly.warp.sdk.utils.WarplyProperty;
/**
* {@link BroadcastReceiver} that receives GCM messages and delivers them to an
* application-specific {@link ly.warp.sdk.services.GCMBaseIntentService} subclass.
* <p/>
* By default, the {@link ly.warp.sdk.services.GCMBaseIntentService} class belongs to the application
* main package and is named
* {@link ly.warp.sdk.utils.constants.GCMConstants#DEFAULT_INTENT_SERVICE_CLASS_NAME}. To use a new class,
* the {@link #getGCMIntentServiceClassName(Context)} must be overridden.
*/
public class GCMBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "GCMBroadcastReceiver";
@Override
public final void onReceive(Context context, Intent intent) {
Log.v(TAG, "onReceive: " + intent.getAction());
String className = getGCMIntentServiceClassName(context);
Log.v(TAG, "GCM IntentService class: " + className);
// Delegates to the application-specific intent service.
GCMBaseIntentService.runIntentInService(context, intent, className);
if (isOrderedBroadcast()) {
setResult(Activity.RESULT_OK, null /* data */, null /* extra */);
}
}
/**
* Gets the class name of the intent service that will handle GCM messages.
*/
protected String getGCMIntentServiceClassName(Context context) {
try {
String customName = WarplyProperty.getCustomPushServiceClassName(context);
if (!TextUtils.isEmpty(customName)) {
Class.forName(customName);
return customName;
}
} catch (ClassNotFoundException e) {
WarpUtils.log("No custom push service class is implemented, using the default one");
}
return WarpIntentService.class.getCanonicalName();
}
}
package ly.warp.sdk.services;
import static ly.warp.sdk.utils.constants.WarpConstants.CHANNEL_ID;
import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MAX;
import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MIN;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
......@@ -13,12 +17,18 @@ import android.graphics.Color;
import android.media.RingtoneManager;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.RemoteViews;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.work.Constraints;
import androidx.work.NetworkType;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
import android.text.TextUtils;
import android.widget.RemoteViews;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import org.apache.http.HttpStatus;
import org.json.JSONException;
......@@ -33,26 +43,13 @@ import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import androidx.work.Constraints;
import androidx.work.NetworkType;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
import ly.warp.sdk.Warply;
import ly.warp.sdk.activities.WarpViewActivity;
import ly.warp.sdk.io.models.PushCampaign;
import ly.warp.sdk.utils.GCMRegistrar;
import ly.warp.sdk.utils.WarpUtils;
import ly.warp.sdk.utils.WarplyProperty;
import ly.warp.sdk.utils.managers.WarplyAnalyticsManager;
import static ly.warp.sdk.utils.constants.WarpConstants.CHANNEL_ID;
import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MAX;
import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MIN;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
/**
* Created by Panagiotis Triantafyllou on 14-Feb-19.
*/
......@@ -97,7 +94,6 @@ public class FCMBaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(@NonNull String s) {
super.onNewToken(s);
GCMRegistrar.setRegistrationId(this, s);
WarpUtils.setDeviceToken(this, s);
}
......@@ -132,14 +128,14 @@ public class FCMBaseMessagingService extends FirebaseMessagingService {
Warply.getInitializer(this).init();
WarplyAnalyticsManager.logUserReceivedPush(pc);
// if (WorkManager.getInstance().getWorkInfosByTag(PushEventsWorkerService.TAG).isDone() || WorkManager.getInstance().getWorkInfosByTag(PushEventsWorkerService.TAG).isCancelled()) {
// if (WorkManager.getInstance(this).getWorkInfosByTag(PushEventsWorkerService.TAG).isDone() || WorkManager.getInstance(this).getWorkInfosByTag(PushEventsWorkerService.TAG).isCancelled()) {
Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
OneTimeWorkRequest sendEvent = new OneTimeWorkRequest.Builder(PushEventsWorkerService.class)
.setConstraints(constraints)
.setInitialDelay(defineRandomStart(), TimeUnit.MINUTES)
.build();
WorkManager.getInstance().enqueue(sendEvent);
WorkManager.getInstance(this).enqueue(sendEvent);
// }
}
......
package ly.warp.sdk.services;
import static ly.warp.sdk.utils.constants.WarpConstants.CHANNEL_ID;
import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MAX;
import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MIN;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
......@@ -41,15 +45,10 @@ import java.util.concurrent.TimeUnit;
import ly.warp.sdk.Warply;
import ly.warp.sdk.activities.WarpViewActivity;
import ly.warp.sdk.io.models.PushCampaign;
import ly.warp.sdk.utils.GCMRegistrar;
import ly.warp.sdk.utils.WarpUtils;
import ly.warp.sdk.utils.WarplyProperty;
import ly.warp.sdk.utils.managers.WarplyAnalyticsManager;
import static ly.warp.sdk.utils.constants.WarpConstants.CHANNEL_ID;
import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MAX;
import static ly.warp.sdk.utils.constants.WarpConstants.RANDOM_MIN;
/**
* Created by Panagiotis Triantafyllou on 17-June-21.
*/
......@@ -133,7 +132,6 @@ public class HMSBaseMessagingService extends HmsMessageService {
@Override
public void onNewToken(String s, Bundle bundle) {
super.onNewToken(s, bundle);
GCMRegistrar.setRegistrationId(this, s);
WarpUtils.setDeviceToken(this, s);
}
......@@ -177,14 +175,14 @@ public class HMSBaseMessagingService extends HmsMessageService {
Warply.getInitializer(this).init();
WarplyAnalyticsManager.logUserReceivedPush(pc);
// if (WorkManager.getInstance().getWorkInfosByTag(PushEventsWorkerService.TAG).isDone() || WorkManager.getInstance().getWorkInfosByTag(PushEventsWorkerService.TAG).isCancelled()) {
// if (WorkManager.getInstance(this).getWorkInfosByTag(PushEventsWorkerService.TAG).isDone() || WorkManager.getInstance(this).getWorkInfosByTag(PushEventsWorkerService.TAG).isCancelled()) {
Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
OneTimeWorkRequest sendEvent = new OneTimeWorkRequest.Builder(PushEventsWorkerService.class)
.setConstraints(constraints)
.setInitialDelay(defineRandomStart(), TimeUnit.MINUTES)
.build();
WorkManager.getInstance().enqueue(sendEvent);
WorkManager.getInstance(this).enqueue(sendEvent);
// }
}
......
/*
* Copyright 2010-2013 Warply Ltd. All rights reserved.
*
*
* Redistribution and use in source and binary forms, without modification, are
* permitted provided that the following conditions are met:
*
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
*
* THIS SOFTWARE IS PROVIDED BY THE WARPLY LTD ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
......@@ -25,6 +25,9 @@
package ly.warp.sdk.services;
import static ly.warp.sdk.utils.constants.WarpConstants.CHANNEL_ID;
import android.app.IntentService;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
......@@ -38,10 +41,11 @@ import android.graphics.Color;
import android.media.RingtoneManager;
import android.os.Build;
import android.os.Bundle;
import androidx.core.app.NotificationCompat;
import android.text.TextUtils;
import android.widget.RemoteViews;
import androidx.core.app.NotificationCompat;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
......@@ -55,16 +59,12 @@ import java.io.InputStream;
import java.security.SecureRandom;
import java.util.List;
import ly.warp.sdk.Warply;
import ly.warp.sdk.activities.WarpViewActivity;
import ly.warp.sdk.io.models.PushCampaign;
import ly.warp.sdk.utils.WarpUtils;
import ly.warp.sdk.utils.WarplyProperty;
import ly.warp.sdk.utils.constants.WarpConstants;
import static ly.warp.sdk.utils.constants.WarpConstants.CHANNEL_ID;
public abstract class WarpBaseIntentService extends GCMBaseIntentService {
public abstract class WarpBaseIntentService extends IntentService {
private static final String KEY_TITLE = "alert";
private static final String KEY_SUBTITLE = "subtitle";
......@@ -72,65 +72,8 @@ public abstract class WarpBaseIntentService extends GCMBaseIntentService {
private static final String KEY_MESSAGE = "message";
private static final String KEY_PAYLOAD = "payload";
public WarpBaseIntentService() {
super(WarpConstants.GCM_SENDER_ID);
}
protected WarpBaseIntentService(String senderId) {
super(senderId);
}
public abstract void onPushReceived(Context context, int action, Bundle data);
@Override
protected void onMessage(Context context, Intent intent) {
Bundle data = intent.getExtras();
if (data == null || !data.containsKey("loyalty-action"))
return;
PushCampaign pc = new PushCampaign(data);
Warply.getInitializer(context).init();
// WarplyAnalyticsManager.logUserReceivedPush(pc.getSessionUUID());
WarpUtils.log("Received push with action: " + pc.getAction());
if (pc.getAction() == 0 && !pc.hasActions())
showCampaignNotification(context, pc);
else
onPushReceived(context, pc.getAction(), data);
}
@Override
protected void onError(Context context, String errorId) {
int errorCode = -1;
try {
errorCode = Integer.valueOf(errorId);
} catch (NumberFormatException e) {
WarpUtils.warn("[Warp Trace] Error id is not a number", e);
}
Warply.getInitializer(context).init();
Warply.INSTANCE.onGCMRegistrationFail(errorCode);
}
@Override
protected void onRegistered(Context context, String registrationId) {
WarpUtils.log("Registration to GCM successful");
/*
* Initialize Warply only if it is not initialized. This is to make sure
* device info are not sent in check (called in init) and then resent
* using the reset (called in onGCMRegistrationSuccess)
*/
if (!Warply.isInitialized())
Warply.getInitializer(context).init();
Warply.INSTANCE.onGCMRegistrationSuccess();
}
@Override
protected void onUnregistered(Context context, String registrationId) {
WarpUtils.log("Unregistration from GCM successful");
Warply.getInitializer(context).init();
if (WarpUtils.getIsDEVICEINFOENABLED(context))
Warply.INSTANCE.postDeviceInfoData();
Warply.INSTANCE.onGCMUnregistrationSuccess();
super("WarpBaseIntentService");
}
public static void showCampaignNotification(Context context, PushCampaign pc) {
......
/*
* Copyright 2010-2013 Warply Ltd. All rights reserved.
*
*
* Redistribution and use in source and binary forms, without modification, are
* permitted provided that the following conditions are met:
*
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
*
* THIS SOFTWARE IS PROVIDED BY THE WARPLY LTD ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
......@@ -33,7 +33,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
......@@ -54,12 +54,7 @@ public class WarpInAppNotificationService extends WarpBaseIntentService {
public WarpInAppNotificationService() {
super("WarpInAppNotificationService");
}
@Override
public void onPushReceived(Context context, int action, Bundle data) {
super();
}
@Override
......
/*
* Copyright 2010-2013 Warply Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE WARPLY LTD ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL WARPLY LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package ly.warp.sdk.services;
import android.content.Context;
import android.os.Bundle;
public class WarpIntentService extends WarpBaseIntentService {
@Override
public void onPushReceived(Context context, int action, Bundle data) {
showDefaultNotification(context, data);
}
}
/*
* Copyright 2010-2013 Warply Ltd. All rights reserved.
*
*
* Redistribution and use in source and binary forms, without modification, are
* permitted provided that the following conditions are met:
*
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
*
* THIS SOFTWARE IS PROVIDED BY THE WARPLY LTD ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
......@@ -25,7 +25,6 @@
package ly.warp.sdk.utils;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
......@@ -44,7 +43,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import ly.warp.sdk.receivers.GCMBroadcastReceiver;
import ly.warp.sdk.utils.constants.GCMConstants;
......@@ -66,15 +64,6 @@ public final class GCMRegistrar {
private static final String PROPERTY_ON_SERVER = "onServer";
/**
* {@link GCMBroadcastReceiver} instance used to handle the retry intent.
* <p/>
* <p/>
* This instance cannot be the same as the one defined in the manifest
* because it needs a different permission.
*/
private static GCMBroadcastReceiver sRetryReceiver;
/**
* Checks if the device has the proper dependencies installed.
* <p/>
* This method should be called when the application starts to verify that
......@@ -214,29 +203,6 @@ public final class GCMRegistrar {
// internalRegister(context, senderIds);
}
public static void internalRegister(Context context, String... senderIds) {
if (senderIds == null || senderIds.length == 0) {
throw new IllegalArgumentException("No senderIds");
}
StringBuilder builder = new StringBuilder(senderIds[0]);
for (int i = 1; i < senderIds.length; i++) {
builder.append(',').append(senderIds[i]);
}
String senders = builder.toString();
Log.v(TAG, "Registering app " + context.getPackageName()
+ " of senders " + senders);
Intent intent = new Intent(GCMConstants.INTENT_TO_GCM_REGISTRATION);
intent.setPackage(GSF_PACKAGE);
intent.putExtra(GCMConstants.EXTRA_APPLICATION_PENDING_INTENT,
PendingIntent.getBroadcast(context, 0, new Intent(), 0));
intent.putExtra(GCMConstants.EXTRA_SENDER, senders);
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// context.startForegroundService(intent);
// } else {
context.startService(intent);
// }
}
/**
* Unregister the application.
* <p/>
......@@ -245,60 +211,7 @@ public final class GCMRegistrar {
* {@link GCMConstants#EXTRA_UNREGISTERED} extra.
*/
public static void unregister(Context context) {
setRetryBroadcastReceiver(context);
GCMRegistrar.resetBackoff(context);
internalUnregister(context);
}
/**
* Clear internal resources.
* <p/>
* <p/>
* This method should be called by the main activity's {@code onDestroy()}
* method.
*/
public static synchronized void onDestroy(Context context) {
if (sRetryReceiver != null) {
Log.v(TAG, "Unregistering receiver");
context.unregisterReceiver(sRetryReceiver);
sRetryReceiver = null;
}
}
public static void internalUnregister(Context context) {
Log.v(TAG, "Unregistering app " + context.getPackageName());
Intent intent = new Intent(GCMConstants.INTENT_TO_GCM_UNREGISTRATION);
intent.setPackage(GSF_PACKAGE);
intent.putExtra(GCMConstants.EXTRA_APPLICATION_PENDING_INTENT,
PendingIntent.getBroadcast(context, 0, new Intent(), 0));
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// context.startForegroundService(intent);
// } else {
context.startService(intent);
// }
}
/**
* Lazy initializes the {@link GCMBroadcastReceiver} instance.
*/
private static synchronized void setRetryBroadcastReceiver(Context context) {
if (sRetryReceiver == null) {
sRetryReceiver = new GCMBroadcastReceiver();
String category = context.getPackageName();
IntentFilter filter = new IntentFilter(
GCMConstants.INTENT_FROM_GCM_LIBRARY_RETRY);
filter.addCategory(category);
// must use a permission that is defined on manifest for sure
String permission = category + ".permission.C2D_MESSAGE";
Log.v(TAG, "Registering receiver");
// context.registerReceiver(sRetryReceiver, filter, permission, null);
if (Build.VERSION.SDK_INT >= 27) {
context.sendBroadcast(new Intent(context, GCMBroadcastReceiver.class)
.setAction(GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK));
} else {
context.registerReceiver(sRetryReceiver, filter, permission, null);
}
}
}
/**
......
......@@ -141,16 +141,6 @@ public class WarpUtils {
return GCMRegistrar.getRegistrationId(context);
}
/**
* Method used return whether this device is registered with GCM or not
*
* @return True or False
*/
public static boolean isRegisteredGCM(Context context) {
return GCMRegistrar.isRegistered(context);
}
public static void setRegistrationGCM(Context context, String registrationGCM) {
SharedPreferences.Editor editor = getPreferences(context).edit();
......@@ -180,11 +170,6 @@ public class WarpUtils {
editor.apply();
}
static boolean isRegisteredGCMOrWaiting(Context context) {
return isRegisteredGCM(context) || isWaitingGCM(context);
}
public static boolean isRegisteredWarply(Context context) {
return !("".equalsIgnoreCase(getWebId(context)));
}
......
......@@ -80,6 +80,7 @@ public class WarplyDeviceInfoCollector {
adInfo.isLimitAdTrackingEnabled() : "");
jObj.putOpt("unique_device_id", getUniqueDeviceId());
jObj.putOpt("os_version", getOsVersion());
jObj.putOpt("app_version", getAppVersion());
} catch (JSONException e) {
WarpUtils.log("************* WARPLY Warning ********************");
WarpUtils.log("Problem when creating Device Info JSON", e);
......@@ -106,6 +107,7 @@ public class WarplyDeviceInfoCollector {
jObj.putOpt("advertising_id", info != null ? info.getId() : "");
jObj.putOpt("unique_device_id", getUniqueDeviceId());
jObj.putOpt("os_version", getOsVersion());
jObj.putOpt("app_version", getAppVersion());
//jObj.putOpt("opt_out_of_interest_based_ads_enabled", info != null ?
//info.isLimitAdTrackingEnabled() : "");
} catch (JSONException | IOException e) {
......@@ -137,6 +139,7 @@ public class WarplyDeviceInfoCollector {
jObj.putOpt("platform", "android");
jObj.putOpt("os_version", getOsVersion());
jObj.putOpt("vendor", "google");
jObj.putOpt("app_version", getAppVersion());
} catch (JSONException e) {
WarpUtils.log("************* WARPLY Warning ********************");
WarpUtils.log("Problem when creating Device Info JSON", e);
......@@ -154,6 +157,7 @@ public class WarplyDeviceInfoCollector {
jObj.putOpt("platform", "android");
jObj.putOpt("os_version", getOsVersion());
jObj.putOpt("vendor", "huawei");
jObj.putOpt("app_version", getAppVersion());
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
......@@ -204,9 +208,23 @@ public class WarplyDeviceInfoCollector {
}
private String getRegistrationGCM() {
if (!TextUtils.isEmpty(WarpUtils.getDeviceToken(mContext)))
return WarpUtils.getDeviceToken(mContext);
WarpUtils.setDeviceToken(mContext, WarpUtils.getRegistrationGCM(mContext));
return WarpUtils.getRegistrationGCM(mContext);
}
private String getAppVersion() {
try {
PackageInfo pInfo = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0);
return pInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return "";
}
}
private String getHardwareId() {
return (Build.SERIAL == null ||
Build.SERIAL.equals(android.os.Build.UNKNOWN)) ? "" : Build.SERIAL;
......
......@@ -30,7 +30,7 @@ public class WarpConstants {
/**
* The version of the SDK installed in the device
*/
public static final String SDK_VERSION = "4.5.4.3";
public static final String SDK_VERSION = "4.5.4.4";
/**
* The URL of the server where it should ping
......