0

我们尝试实现 distriqt 的不错的本地通知扩展。

使用停用事件设置了新通知:

 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)
                    {

                    }
                }

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

4

1 回答 1

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 并根据需要更新通知。通知管理器不会显示额外的通知,而只会更新具有指定 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 );

希望这可以帮助!

于 2013-02-24T01:55:14.833 回答