首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cordova iOS应用程序在设备上第二次启动后崩溃

Cordova iOS应用程序在设备上第二次启动后崩溃
EN

Stack Overflow用户
提问于 2018-08-06 19:07:12
回答 1查看 484关注 0票数 3

经过大量的调查,我不知道这里可能有什么问题。我有一个用cordova开发的iOS应用程序,并使用Firebase (cordova-plugin)进行通知。

当我第一次用Xcode在我的设备上运行我的应用程序时,所有的功能都很好,通知来了,应用程序运行得很好。当我停止Xcode上的应用程序并尝试在不使用Xcode的情况下在我的设备上打开它时,这个应用程序就会在启动屏幕上崩溃。如果我发送任何通知,它到达时没有问题,但当我打开一个通知,应用程序只是在启动屏幕上再次崩溃。

我已经在我的苹果开发人员帐户上创建了所有证书以及开发、生产和临时配置配置文件,创建并使用APN密钥存储在我的Firebase帐户上,我的资源文件夹中有GoogleService-Info.plist文件(platforms/ios/AppName/Resources & platforms/ios/AppName/ Resources /Resources)。

我在日志上看到的唯一错误就是这个错误。

无法连接到FCM。错误Domain=com.google.fcm Code=2001 "FIRMessaging已连接“

还有这张

对象不响应-messaging:didReceiveRegistrationToken:,也不响应-messaging:didRefreshRegistrationToken:。请实现-messaging:didReceiveRegistrationToken:提供一个FCM令牌。

当我接受通知权限气泡时,会显示此错误。

以下是我处理通知的JS:

代码语言:javascript
复制
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);
});

}

在这个问题上我需要一些帮助,因为我已经在这个问题上做了几个星期了,而且我感到非常沮丧。非常感谢各位。

编辑:

当我启动这个应用程序时,我发现了第三个错误。

对象不响应-messaging:didReceiveRegistrationToken:,也不响应-messaging:didRefreshRegistrationToken:。请实现-messaging:didReceiveRegistrationToken:提供一个FCM令牌。

EN

回答 1

Stack Overflow用户

发布于 2018-11-16 14:12:41

我有个类似的问题..。

我发现问题是当我第二次调用window.FirebasePlugin.grantPermission()时。

不经多次许可就做一次测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51714141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档