diff --git a/README.md b/README.md index 0483dd17..f85813fe 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Mobile Messaging SDK is designed and developed to easily enable push notificatio ## Quick start guide -1. Make sure to setup application at Infobip portal, if you haven't already. +1. Make sure to setup application at Infobip portal, if you haven't already. 2. Add dependencies to `app/build.gradle` ```groovy dependencies { @@ -24,7 +24,8 @@ Mobile Messaging SDK is designed and developed to easily enable push notificatio } ``` -3. Add `HMS App ID` and Infobip `Application Code` obtained in step 1 to `values/strings.xml` +3. `Configure Huawei application` +4. Add HMS App ID and Infobip `Application Code` obtained in step 1 to `values/strings.xml` ```groovy SENDER ID @@ -32,8 +33,9 @@ Mobile Messaging SDK is designed and developed to easily enable push notificatio ... ``` + HMS App ID could be taken from Huawei Developer Console - Application settings -4. Add code to `MainActivity#onCreate` +5. Add code to `MainActivity#onCreate` ```java public class MainActivity extends AppCompatActivity { diff --git a/infobip-mobile-messaging-huawei-sdk/src/main/java/org/infobip/mobile/messaging/cloud/PlayServicesSupport.java b/infobip-mobile-messaging-huawei-sdk/src/main/java/org/infobip/mobile/messaging/cloud/PlayServicesSupport.java index c961e4e0..7e09f030 100644 --- a/infobip-mobile-messaging-huawei-sdk/src/main/java/org/infobip/mobile/messaging/cloud/PlayServicesSupport.java +++ b/infobip-mobile-messaging-huawei-sdk/src/main/java/org/infobip/mobile/messaging/cloud/PlayServicesSupport.java @@ -8,7 +8,6 @@ import android.support.v4.content.LocalBroadcastManager; import com.huawei.hms.api.ConnectionResult; -import com.huawei.hms.api.HuaweiApiAvailability; import org.infobip.mobile.messaging.BroadcastParameter; import org.infobip.mobile.messaging.Event; @@ -16,6 +15,7 @@ import org.infobip.mobile.messaging.MobileMessagingCore; import org.infobip.mobile.messaging.logging.MobileMessagingLogger; import org.infobip.mobile.messaging.mobileapi.InternalSdkError; +import org.infobip.mobile.messaging.mobileapi.apiavailability.ApiAvailability; /** * @author mstipanov @@ -28,15 +28,15 @@ public class PlayServicesSupport { private static Boolean isPlayServicesAvailable; private final Handler handler = new Handler(Looper.getMainLooper()); + private static ApiAvailability apiAvailability = new ApiAvailability(); + /** * Check the device to make sure it has the Google Play Services APK. If * it doesn't, display a dialog that allows users to download the APK from * the Google Play Store or enable it in the device's system settings. */ public void checkPlayServicesAndTryToAcquireToken(final Context context, boolean shouldResetToken, @Nullable MobileMessaging.InitListener initListener) { - HuaweiApiAvailability apiAvailability = HuaweiApiAvailability.getInstance(); - int errorCode = apiAvailability.isHuaweiMobileServicesAvailable(context); - String errorStr = apiAvailability.getErrorString(errorCode); + int errorCode = apiAvailability.checkServicesStatus(context); isPlayServicesAvailable = errorCode == ConnectionResult.SUCCESS; if (errorCode != ConnectionResult.SUCCESS) { @@ -82,13 +82,13 @@ public void run() { } } + public static boolean isPlayServicesAvailable(Context context) { if (isPlayServicesAvailable != null) { return isPlayServicesAvailable; } - HuaweiApiAvailability apiAvailability = HuaweiApiAvailability.getInstance(); - isPlayServicesAvailable = apiAvailability.isHuaweiMobileServicesAvailable(context) == ConnectionResult.SUCCESS; + isPlayServicesAvailable = apiAvailability.isServicesAvailable(context); return isPlayServicesAvailable; } } diff --git a/infobip-mobile-messaging-huawei-sdk/src/main/java/org/infobip/mobile/messaging/mobileapi/apiavailability/ApiAvailability.java b/infobip-mobile-messaging-huawei-sdk/src/main/java/org/infobip/mobile/messaging/mobileapi/apiavailability/ApiAvailability.java new file mode 100644 index 00000000..4337da75 --- /dev/null +++ b/infobip-mobile-messaging-huawei-sdk/src/main/java/org/infobip/mobile/messaging/mobileapi/apiavailability/ApiAvailability.java @@ -0,0 +1,37 @@ +package org.infobip.mobile.messaging.mobileapi.apiavailability; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; + +import com.huawei.hms.api.ConnectionResult; +import com.huawei.hms.api.HuaweiApiAvailability; + +public class ApiAvailability { + + /** + * Chack ApiAvailability status and return ConnectionResult code + * @param context + * @return + */ + public int checkServicesStatus(Context context) { + HuaweiApiAvailability apiAvailability = HuaweiApiAvailability.getInstance(); + return apiAvailability.isHuaweiMobileServicesAvailable(context); + } + + public boolean isServicesAvailable(Context context) { + return checkServicesStatus(context) == ConnectionResult.SUCCESS; + } + + public boolean isUserResolvableError(int errorCode) { + HuaweiApiAvailability apiAvailability = HuaweiApiAvailability.getInstance(); + return apiAvailability.isUserResolvableError(errorCode); + } + + public Dialog getErrorDialog(Activity activity, int errorCode, int platformError, DialogInterface.OnCancelListener listner) { + HuaweiApiAvailability apiAvailability = HuaweiApiAvailability.getInstance(); + return apiAvailability.getErrorDialog(activity, errorCode, platformError, listner); + } + +}