2013-02-22 63 views
0

我们尝试实施本地通知扩展distriqt。Distriqt AIR本地通知Ane - 删除旧通知

随着停用事件新的通知设定:

notification.id  = int(Math.random()*100); 
        notification.tickerText = _asde + " asdasd!"; 
        notification.title  = _asde + " asd!"; 
        notification.body  = "asd!"; 
        notification.iconType = NotificationIconType.APPLICATION; 
        notification.count  = 0; 
        notification.repeatInterval = 0; 
        notification.vibrate = false; 
        notification.playSound = true; 
        notification.soundName = "assets/sounds/notification.mp3"; 

        notification.delay  = secondsToDeath; 
        notification.data  = "Some notification data to attach "+notification.id; 
try 
       { 
        Notifications.service.notify(notification.id, notification); 

        _count ++; 
        Notifications.service.setBadgeNumber(_count); 
       } 
       catch (e:Error) 
       { 

       } 

如果用户点击应用程序,并再次停用它,新的通知设定。

旧的通知仍然可用并显示,但我们希望删除旧的通知。 我们还没有找到注销旧通知的方法。

任何想法?

 private static const DEACTIVATE_NOTIFICATION_ID_4 : int = 4; 

已声明。

if(_GoodA == true){ 
        setSpielenFertigDate.time = 2400000*(1-_aktuellerFreudeWert/_maximalerFreudeWert); 
        var secondsToSpielenFertig:int = int((setSpielenFertigDate.time)/ 1000); 

        trace("halloe" + _fernseherAn.toString()); 
        notification4.id  = DEACTIVATE_NOTIFICATION_ID_4; 
        notification4.tickerText = "He test it!"; 
        notification4.title   = "sdf is happy!"; 
        notification4.body  = "sdf test is on!"; 
        notification4.iconType = NotificationIconType.APPLICATION; 
        notification4.count  = 0; 
        notification4.repeatInterval = 0; 
        notification4.vibrate = false; 
        notification4.playSound = true; 
        notification4.soundName = "assets/sounds/notification.mp3"; 

        notification4.delay  = secondsToSpielenFertig; 
        notification4.data  = "Some notification data to attach "+ notification4.id; 

        try 
        { 
         Notifications.service.notify(notification4.id, notification4); 

         _count ++; 
         Notifications.service.setBadgeNumber(_count); 
        } 
        catch (e:Error) 
        { 

        } 
       } 
       else{ 
        trace("halloe2" + _fernseherAn.toString()); 
        setSpielenDate.time = 5100000*(_aktuellerFreudeWert/_maximalerFreudeWert); 
        var secondsToSpielen:int = int((setSpielenDate.time)/ 1000); 


        notification4.id  = DEACTIVATE_NOTIFICATION_ID_4; 
        notification4.tickerText = "He tested it!"; 
        notification4.title   = "sdf is unhappy!"; 
        notification4.body  = "sdf test is off!"; 
        notification4.iconType = NotificationIconType.APPLICATION; 
        notification4.count  = 0; 
        notification4.repeatInterval = 0; 
        notification4.vibrate = false; 
        notification4.playSound = true; 
        notification4.soundName = "assets/sounds/notification.mp3"; 
        //Sekunden bis Nachricht geschickt wird 
        notification4.delay  = secondsToSpielen; 
        notification4.data  = "Some notification data to attach "+notification4.id; 

        try 
        { 
         Notifications.service.notify(notification4.id, notification4); 

         _count ++; 
         Notifications.service.setBadgeNumber(_count); 
        } 
        catch (e:Error) 
        { 

        } 
       } 

如果应用程序的停用事件被触发,它会跟踪if和else子句的正确部分。但它不会更新正文和标题...

+0

你是在iOS还是Android? – Michael 2013-02-24 00:58:36

回答

0

有两种方法可以用我们的扩展程序来做到这一点。两者都涉及跟踪通知的ID。

首先是跟踪您的上次通知并从通知区域“取消”它。为此,您需要至少存储上次创建的通知的ID。您可能感兴趣的部分代码是取消函数,它通过指定要删除的通知的ID来从通知面板中删除通知。

某处在您的类中声明的最后通知的参考:

private var _lastNotification : Notification; 

然后在您的停用处理程序:

var notification:Notification = new Notification(); 
notification.id = int(Math.random()*100); 
notification.tickerText = "Deactivated"; 
notification.title = "TEST"; 
notification.body = "Application Deactivated"; 

if (_lastNotification != null) 
    Notifications.service.cancel(_lastNotification.id); 
Notifications.service.notify(notification.id, notification); 

// Set this to be the recent notification displayed 
_lastNotification = notification; 

第二个选择是使用单一的通知ID为您的所有停用通知。在这种情况下,您可以选择一个常量ID用于通知,并根据需要更新通知。通知管理器不会显示附加通知,只需更新具有指定标识的通知(或者如果已被用户关闭,则显示该通知)。

private static const DEACTIVATE_NOTIFICATION_ID : int = 10; 

var notification:Notification = new Notification(); 
notification.id = DEACTIVATE_NOTIFICATION_ID; 
notification.tickerText = "Deactivated"; 
notification.title = "TEST"; 
notification.body = "Application Deactivated"; 

Notifications.service.notify(notification.id, notification); 

希望这会有所帮助!

+0

谢谢!这是我寻找的第二部分。我知道取消功能,但不能用此删除活动的通知。所以我不得不重写这些值。它现在更新Notification.delay。但它不会更新Notification.body? – 2013-02-25 11:15:47

+0

如何更新Notification.body和Notification.title? – 2013-02-26 15:22:28

+0

如果您使用的是常量ID方法,那么只需在新通知中指定一个新正文和标题,即可更新现有相同ID的通知。 – Michael 2013-02-27 01:16:53