如何判断应用程序是由于 Titanium 中的推送通知而打开还是恢复?

Posted

技术标签:

【中文标题】如何判断应用程序是由于 Titanium 中的推送通知而打开还是恢复?【英文标题】:How do I tell if the app was opened or resumed as a result of a push notification in Titanium? 【发布时间】:2012-08-21 14:51:40 【问题描述】:

根据推送到达时应用是否打开,您如何在 Titanium 中以不同方式处理推送?

当推送通知进来并且我的应用程序正在运行时,我想弹出一条消息,将用户带到通知所指的项目。如果应用程序已关闭,并且用户点击推送通知并导致应用程序打开,我想直接将用户带到该项目而不弹出。

Titanium 的 registerForPushNotifications 似乎只有一个回调,“回调”,无论推送到达时应用程序的状态如何,都会调用它。根据How do I tell if my iPhone app is running when a Push Notification is received?,您可以在Objective C 中使用didReceiveRemoteNotification 和didFinishLaunchingWithOptions,但Titanium 似乎没有提供对它们的单独访问。

【问题讨论】:

【参考方案1】:

如果用户来自通知,则“回调”功能将在“恢复”后立即触发。

所以我会按照以下方式处理您的案件:

有一个变量来跟踪应用程序是否暂停(la var is_paused = false; 运行时)。 is_paused 将在 Ti.App 'pause' 事件时切换为 true,并在 Ti.App 'resume' 事件时切换回 false 状态并超时(1 秒即可)。

然后您可以通过检查 is_paused var 是真还是假来在回调函数中拥有不同的功能:

//in notification callback
if(is_paused) 
   //user is coming from background (do your thing automatically)
else
  //user is in app (display the alert)

【讨论】:

这就是我现在正在做的事情。在恢复回调和应用程序启动中,我存储恢复时间。然后在接收推送回调中,如果应用程序刚刚启动或恢复,我假设这是因为如果应用程序在最后几秒钟内启动了推送通知。但我希望有一种真正的区分方法。

以上是关于如何判断应用程序是由于 Titanium 中的推送通知而打开还是恢复?的主要内容,如果未能解决你的问题,请参考以下文章

Titanium 在用户单击通知时如何运行一些代码? (安卓)

如何在 Appcelerator Titanium 项目中组织 JS 文件

Titanium如何处理推送通知?

ios中的Titanium Paypal Live集成问题

如何使用 Titanium 中集成的 StartApp SDK?

如何判断推送通知是尚未注册还是已关闭?