Skip to content

Commit

Permalink
Pull request #3: Add ApiAvailability wrapper
Browse files Browse the repository at this point in the history
Merge in MML/infobip-mobile-messaging-huawei from klatypov-MM-3835-Support_HMS to master

Squashed commit of the following:

commit ba82f6ba02d514d4b86f8e584361085c942004cb
Author: Konstantin Latypov <Konstantin.Latypov@infobip.com>
Date:   Mon Jul 27 13:06:34 2020 +0300

    Refacor PlayServicesSupport

commit 411e986c09ce1104431fa1b7d3b4a48d98fe6e01
Author: Konstantin Latypov <Konstantin.Latypov@infobip.com>
Date:   Mon Jul 27 11:38:30 2020 +0300

    Fix links

commit 0c5c9ce2a58e58f4454590512b6c55798c09afd4
Author: Konstantin Latypov <Konstantin.Latypov@infobip.com>
Date:   Fri Jul 24 11:33:34 2020 +0300

    Add ApiAvailability wrapper
  • Loading branch information
Konstantin Latypov authored and Konstantin Latypov committed Jul 27, 2020
1 parent c96f0c7 commit b30290a
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 9 deletions.
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Mobile Messaging SDK is designed and developed to easily enable push notificatio

## Quick start guide

1. Make sure to <a href="https://dev.infobip.com/push-messaging" target="_blank">setup application at Infobip portal</a>, if you haven't already.
1. Make sure to <a href="https://www.infobip.com/docs/mobile-app-messaging/create-mobile-application-profile" target="_blank">setup application at Infobip portal</a>, if you haven't already.
2. Add dependencies to `app/build.gradle`
```groovy
dependencies {
Expand All @@ -24,16 +24,18 @@ Mobile Messaging SDK is designed and developed to easily enable push notificatio
}
```

3. Add <a href="https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/android-config-agc-0000001050170137" target="_blank">`HMS App ID`</a> and Infobip <a href="https://dev.infobip.com/push-messaging/create-application" target="_blank">`Application Code`</a> obtained in step 1 to `values/strings.xml`
3. <a href="https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/android-config-agc-0000001050170137" target="_blank">`Configure Huawei application`</a>
4. Add HMS App ID and Infobip <a href="https://www.infobip.com/docs/mobile-app-messaging/create-mobile-application-profile" target="_blank">`Application Code`</a> obtained in step 1 to `values/strings.xml`
```groovy
<resources>
<string name="app_id">SENDER ID</string>
<string name="infobip_application_code">APPLICATION CODE</string>
...
</resources>
```
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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
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;
import org.infobip.mobile.messaging.MobileMessaging;
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
Expand All @@ -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) {
Expand Down Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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);
}

}

0 comments on commit b30290a

Please sign in to comment.