1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chinasoft2_ohos-ZWebView

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ZWebView

Проект ZWebView

Введение

Проект ZWebView — это компонент, адаптированный из OpenHarmony. Он предназначен для создания моста между мобильными приложениями и веб-средой, позволяя осуществлять взаимодействие между ними через контейнер WebView.

Базовая версия: master-ветка.

Состояние переноса: основные функции реализованы.

Различия в вызовах: отсутствуют.

Версия разработки: SDK6, DevEco Studio 2.2 Beta1.

Демонстрация эффекта

Описание изображения

Инструкция по установке

  1. В файле build.gradle в корневом каталоге проекта:
allprojects {
    repositories {
        maven {
            url 'https://s01.oss.sonatype.org/content/repositories/releases/'
        }
    }
}
  1. В файле build.gradle модуля entry:
dependencies {
    implementation('com.gitee.chinasoft_ohos:zwebview:1.0.0')
    ......  
 }

В версии SDK6 и DevEco Studio 2.2 Beta1 проект можно запустить напрямую. Если запуск не удаётся, удалите файлы .gradle, .idea, build, gradle и build.gradle и создайте новый проект с учётом вашей версии. Затем скопируйте файлы из нового проекта в корневой каталог.

Использование

  • Шаг 1: инициализация В пользовательском AbilityPackage выполните инициализацию ZWebView следующим образом:
@Override
public void onInitialize() {
    super.onInitialize();
    ZWebInstance.init(this);
}
  • Шаг 2: создание конфигурации ZWebConfig и создание экземпляра ZWeb.
String MAIN_HTML = "xxx.html";

// 1. Создание конфигурации и добавление URL главной страницы
ZWebConfig config = new ZWebConfig.Builder(ZWebConstant.MAIN_HTML)
    // Регистрация состояния прослушивания
    .setOnStateListener(this)
    // Регистрация реализации собственного протокола UI
    .setNativeMethodImplement(this)
    // Регистрация некоторых специальных методов реализации
//  .setOnSpecialStateListener(this)
    // Выбор режима инъекции
    .setInjectionMode(InjectionMode.VuePlugin)
    // Автоматическая инъекция фреймворка JS (рекомендуется)
    .autoInjectFramework()
    // Автоматическое внедрение расширенных методов
    .autoInjectExtendsJS()
    // Добавление файлов JS в assets для внедрения
//  .addInjectJSAssetsFile("js/test.js")
    // Добавление файла JS из raw для внедрения
//  .addInjectJSRawFile(R.raw.index_test)
    .build();

// 2. Создание экземпляра ZWeb
mZWebInstance = ZWebInstance.createInstance(config);
  • Шаг 3: передача жизненного цикла Activity.
// mRootView — обязательный корневой компонент Container
@Override
protected void onStart(Intent intent){
    //...
    mRootView = new StackLayout(this);
    mRootView.setLayoutConfig(new ComponentContainer.LayoutConfig(
                ComponentContainer.LayoutConfig.MATCH_PARENT,
                ComponentContainer.LayoutConfig.MATCH_PARENT));
    groupView.addComponent(mRootView);

    super.setUIContent(groupView);    
    //...
}

@Override
public void onBackPressed(){
    if (!mZWebInstance.onActivityBack()){
        super.onBackPressed();
    }
}

// Реализация других жизненных циклов
@Override
protected void onActive() {
   mZWebInstance.onActivityResume();
   super.onActive();
}

@Override
public void onInactive() {
    mZWebInstance.onActivityPause();
    super.onInactive();
}

@Override
protected void onBackground() {
    mZWebInstance.onActivityStop();
    super.onBackground();
}

@Override
protected void onStop() {
    mZWebInstance.onActivityDestroy();
    super.onStop();
}
  • Некоторые внутренние состояния и их реализация

При реализации интерфейса состояния необходимо реализовать следующие методы:

/**
* После успешной инициализации фреймворка вызывается обратный вызов
*
* @param zWebHandler
* @param width ширина
* @param height высота
*/
void onZWebCreated(IZWebHandler zWebHandler, int width, int height);

/**
* Вызывается при возникновении исключения в JS
*
* @param zWebHandler
* @param errorCode код ошибки
* @param message сообщение об ошибке
*/
void onZWebException(IZWebHandler zWebHandler, long errorCode, String message);

/**
* Обработка сетевого запроса
*
* @param zWebHandler
* @param url ссылка
* @param method метод запроса
* @param data данные
* @param type тип возврата
* @param controller
*/
void onZWebRequire(IZWebHandler zWebHandler, String url, String method, String data, String type, IZRequireController controller);

/**
* Асинхронный запрос сообщения
*
* @param zWebHandler
* @param cmd команда
* @param data данные
*/
void onZWebMessage(IZWebHandler zWebHandler, String cmd, String data, IZMessageController controller);

/**
* Уничтожение JS
*
* @param zWebHandler
*/
void onZWebDestroy(IZWebHandler zWebHandler);

/**
* Обратный вызов журнала JS, можно записать или распечатать здесь
*
* @param zWebHandler
* @param type тип
* @param msg сообщение
*/
void onZWebLog(IZWebHandler zWebHandler, String type, String msg);
  • Реализация IOC для запросов методов JS
  1. Определение интерфейса метода вызова JS:
public interface RequireService{
    @ZMethod("a") // callReceiver
    boolean callA(@ZKey("KeyA") String a, @ZKey("KeyB") String b, @ZKey("Time") long time);

    @ZFunction("init")
    boolean init(@ZKey("A") String a, @ZKey("B") String b, @ZKey("C") int c);

    @ZMethod(ZMethodName.ON_READY)
    void initParam(@ZKey("Msg") String msg,
``` **Различные аннотации:**
> @ZFunction("имя метода"): используется для вызова метода расширения `ZWebSDK.extends('имя метода', function(oData){});` в JS.

> @ZMethod("имя прослушивателя"): используется для регистрации метода прослушивания `ZWebSDK.on('имя прослушивателя', function(oData){});` в JS. 

> @ZKey("имя параметра"): имя ключа параметра объекта в JS.  

> @ZCmd("имя команды"): используется при обратном вызове метода `onZWebMessage`, сопоставление параметров команды. Для конкретного использования см. Demo (используется при анализе и сопоставлении сообщений).

> @ZJson: строка (json) параметра объекта в JS.   

> @ZData: параметр является строкой.

2. Создание экземпляра объекта службы интерфейса и вызов:
```java
mRequireService = mZWebInstance.create(RequireService.class);

Используя методы, предоставляемые mRequireService, вызывается JS следующим образом:

mRequireService.callA("Я стойкое сообщение ...", "Привет, маленький A!", time);
  • Вызов собственных методов из JS.
  1. Используя существующий метод void onZWebMessage(IZWebHandler zWebHandler, String cmd, String data, IZMessageController controller);, анализируйте метод асинхронно и возвращайте результат. Параметр cmd: определённое имя команды. Параметр data: определённый параметр. controller: можно вернуть результат асинхронно или использовать метод controller.parseMessage(this.mParseMessage); для анализа метода.

  2. В ZWebConfig предоставляется метод setExposedName (String exposedName);, который позволяет расширить имя протокола интерфейса. Затем используйте mZWebInstance.addJavascriptInterface(object); для внедрения метода объекта.

Тестирование

CodeCheck — тестирование кода без исключений. CloudTest — тестирование кода без исключений. Вирусное сканирование — успешно. Текущая версия demo функционально не отличается от исходного компонента.

Версия

  • 1.0.0

Авторские права и лицензии

Copyright 2017 Zyao89

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

JS фреймворк для мостов между мобильными и Web-приложениями. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chinasoft2_ohos-ZWebView.git
git@api.gitlife.ru:oschina-mirror/chinasoft2_ohos-ZWebView.git
oschina-mirror
chinasoft2_ohos-ZWebView
chinasoft2_ohos-ZWebView
master