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

                    }
                }

アプリの非アクティブ化イベントが発生すると、if 句と else 句の正しい部分がトレースされます。しかし、それは本文とタイトルを更新しません...

4

1 に答える 1

0

拡張機能でこれを行うには 2 つの方法があります。どちらも、通知の ID を追跡する必要があります。

1 つ目は、最後の通知を追跡し、通知領域から「キャンセル」することです。これを行うには、少なくとも最後に作成された通知の 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;

2 番目のオプションは、すべての非アクティブ化通知に単一の通知 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 に答える