Как интегрировать хоккейное приложение с гибридным мобильным приложением

Я пытаюсь интегрировать мое гибридное мобильное приложение (Inonic + Cordova) с хоккейным приложением, но проблема Приложение Hockey поддерживает родные приложения (по моей информации). Так есть ли какое-либо руководство для этого? Интеграция гибридного приложения с приложением Hockey.

Когда я пытаюсь следить за интеграцией хоккейного приложения с платформой Android (гибридное приложение), мне также предлагается добавить некоторый код в основное действие, так что где я могу найти это


person Muhammad Faizan Khan    schedule 24.12.2014    source источник


Ответы (1)


Основная деятельность осуществляется внутри платформы Android... cordova/platforms/android/src/...

Поместите в метод onCreate Реестр...

Также есть несколько плагинов для помощи в этой задаче, например https://github.com/peutetre/cordova-plugin-hockeyapp

Учтите, что многие проблемы с аварийным JavaScript не приводят к сбою в родном мире, было бы полезно использовать дополнительный способ передачи контролируемых ошибок, например, метод saveException, попробуйте представить это с помощью плагина в javascript, это позволит сохранить информацию об ошибке контекста. : http://hockeyapp.net/help/sdk/android/3.0.1/net/hockeyapp/android/ExceptionHandler.html

Я протестировал решение только для Android в ответвлении предыдущего упомянутого плагина: https://github.com/m-alcu/cordova-plugin-hockeyapp

Доступно несколько действий, но вам нужно только использовать «start» и «saveException», чтобы контролируемые ошибки отправлялись в хоккейные приложения.

хоккейное приложение.js:

var exec = require('cordova/exec');

var hockeyapp = {
    start:function(success, failure, token) {
        exec(success, failure, "HockeyApp", "start", [ token ]);
    },
    feedback:function(success, failure) {
        exec(success, failure, "HockeyApp", "feedback", []);
    },
    saveException:function(success, failure, description) {
        exec(success, failure, "HockeyApp", "saveException", [ description ]);
    }    
};

module.exports = hockeyapp;

хоккейное приложение.java:

package com.zengularity.cordova.hockeyapp;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import android.widget.Toast;

import static net.hockeyapp.android.ExceptionHandler.saveException;
import net.hockeyapp.android.FeedbackManager;
import net.hockeyapp.android.CrashManager;
import net.hockeyapp.android.CrashManagerListener;

public class HockeyApp extends CordovaPlugin {

    public static boolean initialized = false;
    public static String token;
    public static String description;

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
        if (action.equals("start")) {
            token = args.optString(0);
            CrashManager.register(cordova.getActivity(), token, null);
            initialized = true;
            callbackContext.success();
            return true;
        } else if(action.equals("feedback")) {
            token = args.optString(0);
            FeedbackManager.register(cordova.getActivity(), token, null);
            cordova.getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    FeedbackManager.showFeedbackActivity(cordova.getActivity());
                }
            });
            callbackContext.success();
            return true;

        } else if(action.equals("saveException")) {
            description = args.optString(0);
            if(initialized) {

            Toast toast = Toast.makeText(cordova.getActivity(), "problem", Toast.LENGTH_SHORT);
            toast.show();

            cordova.getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Exception e = new Exception("Send problem");
                        saveException(e, new CrashManagerListener() {
                            public String getDescription() {
                                return description;
                            }
                        });
                    }
                });
                callbackContext.success();
                return true;
            } else {
                callbackContext.error("cordova hockeyapp plugin not initialized, call start() first");
                return false;                
            }  
        }
        else {
            return false;
        }
    }

}

пример использования этого плагина в примере hellowold (index.js):

var app = {
    // Application Constructor
    initialize: function() {
        this.bindEvents();
    },
    // Bind Event Listeners
    //
    // Bind any events that are required on startup. Common events are:
    // 'load', 'deviceready', 'offline', and 'online'.
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    // deviceready Event Handler
    //
    // The scope of 'this' is the event. In order to call the 'receivedEvent'
    // function, we must explicitly call 'app.receivedEvent(...);'
    onDeviceReady: function() {
        app.receivedEvent('deviceready');
    },
    // Update DOM on a Received Event
    receivedEvent: function(id) {
        var parentElement = document.getElementById(id);
        var listeningElement = parentElement.querySelector('.listening');
        var receivedElement = parentElement.querySelector('.received');

        listeningElement.setAttribute('style', 'display:none;');
        receivedElement.setAttribute('style', 'display:block;');

        console.log('Received Event: ' + id);

        hockeyapp.start(
            function() { alert('hockeyapp initialised'); },
            function(msg) { alert(msg); },
            '< your APP ID >');

        hockeyapp.saveException(
            function() { alert('hockeyapp saveException'); },
            function(msg) { alert(msg); },
            'Something wrong has happened: bla bla bla...');    
    }
};

app.initialize();

Hockey хранит эти контролируемые исключения в каталоге файлов приложения и запрашивает отправку их при следующем открытии приложения пользователем:

введите здесь описание изображения

введите здесь описание изображения

person malcubierre    schedule 24.12.2014
comment
вы хотите использовать плагин вместо того, чтобы следовать указаниям хоккейного приложения. так сколько раз я использую методы этого плагина - person Muhammad Faizan Khan; 24.12.2014
comment
Плагин делает то же самое, что и учебники Hockeyapp. Он реализует регистрацию (старт) и обратную связь (обратная связь). Мой комментарий заключается в том, что, вероятно, вам иногда понадобится дополнительная информация о сбоях Javascript, которые не обнаружены собственным обработчиком сбоя... возможно, этот плагин можно изменить, чтобы в этих случаях выставлять ExceptionHandler.saveException()... - person malcubierre; 26.12.2014
comment
+ помощь полная для меня, но все еще некоторая путаница - person Muhammad Faizan Khan; 31.12.2014
comment
использование обработки сбоев плагина очень сложно. можете ли вы поделиться каким-либо подробным руководством - person Muhammad Faizan Khan; 31.12.2014
comment
Hockeyapp.start бросает строку «Uncaught ReferenceError: хоккейное приложение не определено», исключение - person Shubham; 10.03.2017