プロジェクトにC2DM モジュール(Android の Cloud to Device Messaging Framework) を含めることに成功し、Android プッシュ通知を正常に登録して受信することができました。ただし、通知を送信すると、新しい通知がデバイスに表示されないことがあります。今日、デバイスを接続して adb logcat を使用したところ、IntentService[c2dmBaseReceiver] が実際に起動され、送信したメッセージを受信していることに気付きましたが、V8 ランタイムが破棄されたため、コールバック関数は起動していませんでした (次の行を参照)。 logcat から)
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [369956,441456] Message received
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [1,441457] Message key: message value: This is a test notification
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [0,441457] Message key: title value: myAppName
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [2,441459] Message key: tickerText value: Notification Ticker
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [1,441460] Message key: from value: abrahamvivas@gmail.com
D/C2DMReceiver( 1069): (IntentService[C2DMBaseReceiver]) [0,441460] Message key: collapse_key value: myApp Alert
W/V8Function( 1069): Runtime disposed, cannot call function
これは私のコールバックです
callback:function(e)
{
Ti.API.info('JS message event: ' + JSON.stringify(e.data));
var intent = Ti.Android.createIntent({
action: Ti.Android.ACTION_MAIN,
flags: Ti.Android.FLAG_ACTIVITY_NEW_TASK | Ti.Android.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED,
className: 'com.avivas.myApp.myAppActivity',
packageName: 'com.avivas.myApp'
});
intent.addCategory(Ti.Android.CATEGORY_LAUNCHER);
var pending = Ti.Android.createPendingIntent({
activity: Ti.Android.currentActivity,
intent: intent,
type: Ti.Android.PENDING_INTENT_FOR_ACTIVITY,
});
var notification = Ti.Android.createNotification({
contentIntent: pending,
contentTitle: e.data.title,
contentText: e.data.message,
tickerText: e.data.tickerText
});
Ti.Android.NotificationManager.notify(1, notification);
Titanium.Media.vibrate([0,300, 100, 300]);
}
c2dm からのコールバック関数は JavaScript であるため、V8 ランタイムが破棄されているため実行できないと想定しています。これを確認できる人はいますか?また、通知が来たら表示したいので回避策はありますか?