簡體   English   中英

設備上第二次啟動后,Cordova iOS應用程序崩潰

[英]Cordova iOS app crashes after second launch on device

經過大量調查,我不知道這里可能是什么問題。 我有一個使用cordova開發的iOS應用,並使用Firebase(cordova-plugin-firebase)進行通知。

當我第一次使用Xcode在設備上運行我的應用程序時,一切正常,通知到達並且該應用程序運行良好。 當我停止Xcode上的應用程序並嘗試在不使用Xcode的設備上打開它時,問題就開始了,該應用程序在啟動屏幕上崩潰了。 如果我發送任何通知,它都不會出現問題,但是當我打開一個通知時,該應用程序再次在啟動屏幕上崩潰。

我已經在我的Apple開發者帳戶上創建了所有證書以及開發,生產和即席配置文件,創建了APNs密鑰並將其存儲在Firebase帳戶中,我的Resources文件夾中有GoogleService-Info.plist文件(platforms / ios / AppName /資源和平台/ ios / AppName /資源/資源)。

我在日志中看到的唯一錯誤是此錯誤

無法連接到FCM。 錯誤Domain = com.google.fcm代碼= 2001“ FIRM消息系統已連接”

還有這個

該對象不響應-messaging:didReceiveRegistrationToken :,也不響應-messaging:didRefreshRegistrationToken:。 請實現-messaging:didReceiveRegistrationToken:並隨附FCM令牌。

當我接受通知權限提示框時,將顯示此錯誤。

這是我的用於處理通知的JS:

function firebasePUSH() {
if (device.platform === "iOS") {
    window.FirebasePlugin.hasPermission(function (data) {
        if (!data.isEnabled) {
            window.FirebasePlugin.grantPermission();
        }
    });
}
window.FirebasePlugin.onNotificationOpen(function (notification) {
    console.log("tipo de notificacion " + notification.tipo);
    console.log(notification);
    if (notification.tipo === "alerta") {
        var parametros = {
            id: notification.numero,
            categoria: "rescato"
        };
        myApp.request.post("http://190.98.210.41/comuna/app/contactos.php", parametros, function (data) {
            var json = JSON.parse(data);
            console.log(json);
            if (json.error === false) {
                mostrarSOS(json.alerta);
            }
        });

    } else if (notification.tipo === "chat" || notification.tipo === "salud" || notification.tipo === "seguridad" || notification.tipo === "contacto" || notification.tipo === "oficina") {
        aceptarLlamada();
    } else if (notification.tipo === "publicidad") {
        mostrarPublicidad(notification.numero);
    } else if (notification.tipo === "sondeo") {
        mostrarSondeo(notification.numero);
    }
}, function (error) {
    console.error("onResume>>" + error);
});

window.FirebasePlugin.getToken(function (token) {
    try {
        var jsonToken = JSON.parse(token);
        token = jsonToken.token;
        console.warn("venia json: " + jsonToken.token);
    }
    catch (err) {
        console.warn("viene json limpio: " + token);
    }

    console.log("getToken js: " + token);
    localStorage.setItem('registrationId', token);
    /*PEGRUNTA SI YA ESTA LOGEADO*/
    if (localStorage.getItem("correo") !== null && localStorage.getItem("clave") !== null) {
        //pasa a la pantalla principal
        var parametros = {
            "id": localStorage.getItem("id"),
            "token": localStorage.getItem('registrationId'),
            "categoria": "token",
            format: "json",
            callback: function () {
                return true;
            }
        };
        myApp.request.json("http://190.98.210.41/comuna/app/usuario_get.php", parametros, function (data) {
            console.log(data);
        }, function (error) {
            console.log(error);
        });
    }

}, function (error) {
    console.error("getToken error: " + error);
});

window.FirebasePlugin.onTokenRefresh(function (token) {
    try {
        var jsonToken = JSON.parse(token);
        token = jsonToken.token;
        console.warn("token json: " + jsonToken.token);
    }
    catch (err) {
        console.warn("token limpio: " + token);
    }

    console.log("onTokenRefresh js: " + token);
    localStorage.setItem('registrationId', token);
    /*PEGRUNTA SI YA ESTA LOGEADO*/
    if (localStorage.getItem("correo") != null && localStorage.getItem("clave") != null) {
        //pasa a la pantalla principal
        var parametros = {
            "id": localStorage.getItem("id"),
            "token": localStorage.getItem('registrationId'),
            "categoria": "token",
            format: "json",
            callback: function () {
                return true;
            }
        };
        myApp.request.json("http://190.98.210.41/comuna/app/usuario_get.php", parametros, function (data) {
            console.log(data);
        }, function (error) {
            console.log(error);
        });

    }
}, function (error) {
    console.error(error);
});

}

我可以在這個問題上使用一些幫助,因為我已經在這個問題上待了好幾個星期了,我感到非常沮喪。 非常感謝你們。

編輯:

啟動應用程序時發現了第三個錯誤。

[Firebase / Messaging] [I-FCM002023]對象不響應-messaging:didReceiveRegistrationToken :,也不響應-messaging:didRefreshRegistrationToken:。 請實現-messaging:didReceiveRegistrationToken:並隨附FCM令牌。

我有一個非常相似的問題。

我發現問題出在我第二次調用window.FirebasePlugin.grantPermission()時。

在不征得許可的情況下多次進行一項測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM