【问题标题】:Clearing badge number Appcelerator studio, arrowdb and iOS?清除徽章编号 Appcelerator studio、arrowdb 和 iOS?
【发布时间】:2025-11-27 11:55:02
【问题描述】:

所以我使用 arrowdb 和带有 Appcelerator 的云服务发送推送通知。这似乎运作良好,iPhone 收到通知。我想知道是否有一些简单的方法可以将徽章编号清除为 0?我猜它也需要在arrowdb服务器(或苹果)上重置。

我希望每次打开应用时都重置徽章。

我所做的是在alloy.js 中添加一个简历监听器

Ti.App.addEventListener("resumed", function(e){

在我首先做的事件监听器中(在本地重置徽章):

Cloud.PushNotifications.resetBadge({
        device_token: device_token
    }, function (e) {
        if (e.success) {
            Ti.API.info('Badge Reset!');
        }
        else {
            Ti.API.error(e);
        }
    });

然后我还通过向我们自己发送推送来发送推送以清除服务器上的徽章:

var push_payload = {
        badge:0,
        sound:"",
        alert:"",
        title:"",
        message_text:"",
        push_type:"clear",
        from_user:Alloy.Globals.currentUser.id,
        vibrate:false
    };

    Cloud.PushNotifications.notify({
        channel: 'private_message',
        payload: push_payload,
        to_ids: Alloy.Globals.currentUser.id
    }, function (e) {
        if (e.success) {
            Ti.API.info('Success sending push notification');
        } else {
            Ti.API.info('Error sending push: '+((e.error && e.message) || JSON.stringify(e)));
        }
    });

似乎调用了事件侦听器,并发送了推送。但不知何故,徽章仍然保留在 iphone 设备上...我应该这样做吗?

【问题讨论】:

    标签: titanium push appcelerator arrowdb


    【解决方案1】:

    你试过了吗?

    Titanium.UI.iOS.appBadge = 0
    

    【讨论】:

    • 看来我们几乎同时回答了,对不起,胡安,我不是故意要给出另一个稍微不同的解决方案! :)
    • jajaja,貌似但是没问题..只要回答能帮到@Emil
    • 其实你是对的!与最新文档一样,setAppBadge 在 Titanium.UI.iOS 中,在 Titanium.UI.iPhone 中不再存在(我现在检查过,我一直在 3.5.2 SDK 上的一个相当老的项目中使用它)
    • 但这只是在本地设置?徽章编号会保留在服务器上吗?我想,Android 最终也需要同样的方法,有人也有解决方案吗?
    • Titanium.UI.iOS.setAppBadge() 在本地设置徽章值;如果参数为 0,则徽章将从您的应用程序图标中消失。当应用程序将收到新的通知以及新的徽章值时,该值将被设置为新的徽章编号。相反,Android 本身并不在应用图标上使用类似的徽章编号。
    【解决方案2】:

    为了清理徽章编号,在我前段时间做的一个项目中,我成功使用了

    Ti.UI.iPhone.setAppBadge(0);
    

    希望它也对你有用。

    【讨论】:

    • 好的,那是 3.5.2 SDK,真丢脸(发帖前不要检查文档):D
    • 我的错,Ti.UI.iPhone.setAppBadge 存在于我当时使用的旧 SDK 中,而最新版本中不再存在。
    【解决方案3】:

    Android 使用:Ti.Android.NotificationManager.cancelAll()

    此命令清除通知和徽章

    【讨论】:

    • 你知道如何在'cancelAll'之前读取当前的徽章编号吗?
    最近更新 更多