[Разработка мобильных приложений, Разработка под Android, Управление продуктом, Смартфоны] 10 вопросов к поддержке HMS по работе с гибридными приложениями, AppGallery и эмулированию телефонов Huawei

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
30-Окт-2020 18:31


Привет, Хабр! За год количество сервисов в экосистеме Huawei Mobile Services (HMS). выросло с 9 до 31, и у разработчиков стало возникать всё больше вопросов по поддержке гибридных приложений, взаимодействию с AppGallery, использованию отдельных служб и китов. Основные площадки нашего общения с мировым сообществом — это Stackoverflow, Reddit, XDA-Developers и раздел поддержки на портале разработчиков Huawei. Специально для тех, кто интересуется нашей платформой, мы собрали с этих площадок 10 вопросов по работе с Huawei Mobile Services. 
1. Будет ли работать React-native и Firebase SDK на телефонах Huawei без Google Service и без изменений кода? 
Да, приложение на React-native будет работать без изменений, достаточно отправить APK для загрузки в галерею приложений Huawei. С  Firebase SDK будет немного сложнее. Работоспособность приложения зависит от служб, которые вы пытаетесь включить в своё приложение. Так, вход в Google с помощью модуля аутентификации Firebase не будет поддерживаться на телефонах, где нет Google Mobile Services, например на Huawei Mate 30 Pro.
Если вы хотите использовать один APK как для GMS, так и для HMS, вам необходимо сначала проверять доступность службы. 
Для GMS:
val gmsAvailable = GooglePlayServicesUtil.getInstance().isGooglePlayServicesAvailable(mContext)

Для HMS:
val hmsAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(mContext)

При попытке использовать Google Login, или Huawei Login, или любые другие сервисы:
if gmsAvailable {
   // execute GMS Code
} else if hmsAvailable {
   // execute HMS Code
}

2. Каковы реальные скрытые расходы на поддержку дополнительной экосистемы?
Расходы на поддержку приложения в HMS зависят от того, как вы проектируете систему и какие сервисы требуются в вашем приложении. В среднем время интеграции может варьироваться от нескольких часов до нескольких недель в зависимости от приложения и количества сервисов Google и Firebase в исходном приложении.
Если в вашем приложении нет интегрированных GMS, то можно загружать его без каких-либо доработок — сервисы Facebook, Yandex и другие будут работать.
3. Какие гибридные приложения поддерживает HMS? 
С версии HMS Core 5.0.0 увеличено количество китов, поддерживаемых сторонними платформами:
 
Apache Cordova:

React Native:

Xamarin:

Flutter:

4. Можно ли считать данные с датчика глубины (TOF) на телефонах Huawei?
Да, это возможно при использовании AR Engine SDK. Huawei AR Engine обеспечивает вывод сетки сцены в реальном времени, и результат включает положения мобильного телефона в пространстве. Трёхмерная сетка текущего вида камеры поддерживает только модели Honor V20 и P30Pro, которые могут получать информацию о глубине, а поддерживаемая сцена сканирования является статической. 

TOF поддерживается на следующих устройствах:

SPL
  • Серия P: P30 / P30Pro / P40 / P40Pro / P40Pro +
  • Серия Mate: Mate20 / Mate20Pro / Mate20RS / Mate 20X / Mate20X (5G) / Mate30 / Mate30Pro / Mate30RS / Mate30 (5G) / Mate30Pro (5G) / Mate X / Mate XS
  • Серия Nova: Nova6 / Nova6-5G / Nova7 / Nova7Pro
  • Серия Honor: Honor V20 / Honor 20 / Honor 20Pro / Honor V30 / Honor V30Pro / Honor 30S / Honor 30 Pro / Honor 30 Pro +
  • Серия планшетов: Tablet M6

Для получения данных от TOF нужно использовать класс ARSceneMesh с помощью следующих методов:
public ShortBuffer getSceneDepth()
        // Get the depth image of current frame(optimized).
public int getSceneDepthHeight()
        // Get the height of the depth image.
public int getSceneDepthWidth()
        // Get the width of the depth image.

Есть и другие варианты, как считать глубину. Можно получить объект класса ARFrame и использовать его методы hitTest, acquireDepthImage. Также возвращает обработанную карту глубины метод GetSceneDepth из класса ARSceneMesh. Она точнее, но работает только до 2,5 метра.
5. Как открыть AppGallery напрямую из приложения?
AppGallery из приложения открывается так же, как и Google Play Store. Надо учитывать, что  AppGallery использует собственную схему appmarket://:
  • Схема: appmarket://
  • Пакет: com.huawei.appmarket

Вот фрагмент из галереи приложений AppGallery
private void startHuaweiAppGallery() {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("appmarket://details?id=" + getPackageName()));
    List<ResolveInfo> otherApps = getPackageManager().queryIntentActivities(intent, 0);
    boolean agFound = false;
    for (ResolveInfo app : otherApps) {
        if (app.activityInfo.applicationInfo.packageName.equals("com.huawei.appmarket")) {
            ComponentName psComponent = new ComponentName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.setComponent(psComponent);
            startActivity(intent);
            agFound = true;
            break;
        }
    }
    //Optional, Or copy the Google Play Store URL here (See below)
    if (!agFound) {
        //Your Huawei app ID can be found in the Huawei developer console
        final string HUAWEI_APP_ID = "100864605";
        //ex. https://appgallery.cloud.huawei.com/marketshare/app/C100864605
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://appgallery.cloud.huawei.com/marketshare/app/C" + HUAWEI_APP_ID));
        startActivity(intent);
    }
}

6. Как создать Huawei Android Emulator?
Huawei предоставляет разработчикам Huawei функцию облачной отладки в качестве бесплатной услуги. Если вы используете SDK Huawei, у вас должна быть учётная запись разработчика Huawei. Просто войдите в консоль разработчика Huawei и следуйте инструкциям.
Функция облачной отладки действительно проста в использовании. Она позволяет выполнять удалённую отладку на реальных устройствах. В процессе вы можете просматривать информацию об устройстве, загружать и устанавливать APK на удалённые устройства, получать журналы операций и сохранять журналы на локальном компьютере для анализа.
7. Как получить доступ к payload push-уведомлений HMS?
Чтобы получить доступ к payload, вам необходимо реализовать класс HmsMessageService и переопределить метод onMessageReceived. Вы можете получить доступ к payload из объекта RemoteMessage. Чтобы получить доступ к токену, переопределите метод onNewToken.
Код Java:
import android.util.Log;
import com.huawei.hms.push.HmsMessageService;
import com.huawei.hms.push.RemoteMessage;
public class HService extends HmsMessageService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        if (remoteMessage != null) {
            if (!remoteMessage.getData().isEmpty()) {
                Log.d("HMS", "Payload" + remoteMessage.getData());
            }
            if (remoteMessage.getNotification() != null) {
                Log.d("HMS", "Message Notification Body: " + remoteMessage.getNotification().getBody());
            }
        }
    }
}

Код Kotlin:
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
        super.onMessageReceived(remoteMessage)
        if (remoteMessage!!.data.isNotEmpty()) {
            Log.i(TAG, "Message data payload: " + remoteMessage.data)
        }
        if (remoteMessage.notification != null) {
            Log.i(TAG, "Message Notification Body: " + remoteMessage.notification.body)
        }
    }

Убедитесь, что вы зарегистрировали свою службу:
<service
            android:name=".service.HService"
            android:enabled="true"
            android:exported="true"
            android:permission="${applicationId}.permission.PROCESS_PUSH_MSG"
            android:process=":HmsMessageService">
            <intent-filter>
                <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
            </intent-filter>
   </service>

8. Какие инструменты использовать при разработке приложения Android для мобильного телефона Huawei?
Для разработки приложений можно использовать как Android Studio, так и другие IDE, такие как Eclipse, Intelliji IDEA. Если у вас уже есть приложение, использующее GMS, используйте HMS Toolkit для преобразования кода, работающего с GMS, для работы с HMS. Необходимо учитывать, что HMS Toolkit поддерживает конвертацию не всех служб, и перед его использованием лучше уточнить, работу каких служб он может перенести.
9. Как инициализировать службы HMS без agconnect-services.json? 
Пока HMS не предоставляет единого решения для инициализации на основе кода. Инициализация без json-файла возможна при работе со следующими службами:
  • Push Kit:

<meta-data        
    android:name="com.huawei.hms.client.appid"        
    <!-- Replace value xxx with the actual appid.-->         
    android:value="appid=xxx">         
</meta-data>

  • Map Kit:

MapsInitializer.setApiKey("Your API Key");

  • Site Kit:

SearchService searchService = SearchServiceFactory.create(this, "API key");

  • ML Kit:

MLApplication.getInstance().setApiKey("your ApiKey");

10. Что может система управления продуктами (PMS) в службе HMS In-App Purchase?
API системы управления продуктами (PMS) позволяет создавать продукты и управлять информацией о них. Через  него можно:
  • Создавать продукты: в том числе с по подписке с автоматическим продлением.
  • Запрашивать информацию о продуктах: например, можно запросить конкретный продукт на основе идентификатора приложения и идентификатора продукта или запросить все продукты, которые соответствуют указанным вами критериям.
  • Обновлять информацию о продуктах: название продукта, язык, цену и статус. Работать можно как с одним, так и с несколькими продуктами одновременно.
  • Продвигать продукты: API позволяет разделять рекламные каомпании по регионам, задавать время продвижения и устанавливать цены.

На этом пока всё, если у вас есть вопросы по работе с HMS, задавайте их в комментариях.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_razrabotka_mobilnyh_prilozhenij (Разработка мобильных приложений), #_razrabotka_pod_android (Разработка под Android), #_upravlenie_produktom (Управление продуктом), #_smartfony (Смартфоны), #_huawei_mobile_services, #_faq, #_blog_kompanii_huawei (
Блог компании Huawei
)
, #_razrabotka_mobilnyh_prilozhenij (
Разработка мобильных приложений
)
, #_razrabotka_pod_android (
Разработка под Android
)
, #_upravlenie_produktom (
Управление продуктом
)
, #_smartfony (
Смартфоны
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 07:19
Часовой пояс: UTC + 5