Skip to content

Commit 33e3173

Browse files
authored
Merge pull request #1984 from OneSignal/4_x_x/hms_default
[4.X.X] Add setting to prefer HMS over FCM
2 parents 1d27d82 + 51c47be commit 33e3173

File tree

1 file changed

+12
-2
lines changed
  • OneSignalSDK/onesignal/src/main/java/com/onesignal

1 file changed

+12
-2
lines changed

OneSignalSDK/onesignal/src/main/java/com/onesignal/OSUtils.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
class OSUtils {
7878

7979
public static final int UNINITIALIZABLE_STATUS = -999;
80+
private static final String PREFER_HMS_METADATA_NAME = "com.onesignal.preferHMS";
8081

8182
public static int MAX_NETWORK_REQUEST_ATTEMPT_COUNT = 3;
8283
static final int[] NO_RETRY_NETWROK_REQUEST_STATUS_CODES = {401, 402, 403, 404, 410};
@@ -369,11 +370,20 @@ int getDeviceType() {
369370
if (supportsADM())
370371
return UserState.DEVICE_TYPE_FIREOS;
371372

372-
if (supportsGooglePush())
373+
boolean supportsHMS = supportsHMS();
374+
boolean supportsFCM = supportsGooglePush();
375+
376+
if (supportsFCM && supportsHMS) {
377+
Context context = OneSignal.appContext;
378+
boolean preferHMS = context != null && OSUtils.getManifestMetaBoolean(context, PREFER_HMS_METADATA_NAME);
379+
return preferHMS ? UserState.DEVICE_TYPE_HUAWEI: UserState.DEVICE_TYPE_ANDROID;
380+
}
381+
382+
if (supportsFCM)
373383
return UserState.DEVICE_TYPE_ANDROID;
374384

375385
// Some Huawei devices have both FCM & HMS support, but prefer FCM (Google push) over HMS
376-
if (supportsHMS())
386+
if (supportsHMS)
377387
return UserState.DEVICE_TYPE_HUAWEI;
378388

379389
// Start - Fallback logic

0 commit comments

Comments
 (0)