如何在 Windows Phone 的后台运行我的应用程序或某些特定方法

Posted

技术标签:

【中文标题】如何在 Windows Phone 的后台运行我的应用程序或某些特定方法【英文标题】:How can I run my application or some specific methods in background in windows phone 【发布时间】:2013-12-12 07:31:15 【问题描述】:

我想在点击 Windows 按钮时在后台运行我的应用程序。 基本上我有一些 XMPP 方法,当我进入后台时,它会将其状态和存在从在线更改为离线。我希望它在后台运行。 仅仅因为状态为离线,我无法收到来自 XMPP 的任何 toast 通知。

如果有人对 XMPP 有任何想法,那么也请帮助解决这个问题。

任何帮助将不胜感激。

谢谢, 尼桑特

【问题讨论】:

【参考方案1】:

您不能让您的应用在后台运行。我认为其他 IM 应用程序使用推送机制。所以你需要一个服务器,当你的应用程序退出时,你告诉服务器让用户看起来仍然在线,当消息到达用户时,你向设备发送推送通知。当用户点击推送通知弹出窗口时,您的应用将启动。

【讨论】:

伊戈尔 -- 感谢您的建议。但这是获得推送通知的唯一解决方案吗?我可以在周期性任务中设置一些 XMPP 的方法,然后检查天气是否有任何通知。 周期性任务每30分钟运行一次(用户可以开启),可能无法满足你的需求【参考方案2】:

在 Windows Phone 上,“普通”应用程序无法在后台连续运行。 XMPP 通常在您的整个会话期间需要一个持久的长期 TCP/IP 连接。

有不同的方法来解决这个问题: 1.创建一个可以在后台运行的应用程序,例如位置跟踪应用程序或语音应用程序

    当您的应用程序进入后台时注销,您将在前台登录之前不会收到任何消息。

    当您的应用程序处于后台时注销,并且还使用在时间间隔内登录的后台服务。 30 分钟并检查是否有新消息。但这与实时性和 XMPP 的想法相去甚远 ;-)

    结合使用 XMPP 和推送消息。 XMPP 在前台运行,Push 在后台运行。

    在您的应用程序和 XMPP 服务器之间创建一个代理并使用 Push。这意味着您的应用程序不会自己创建 XMPP 连接。您的应用程序现在只告诉您的“代理服务器”登录用户 X。您的“代理服务器”创建 XMPP 连接,它可以保持 24/7 连接,无论您的应用程序是否在后台。您的应用可以通过推送或任何其他协议选择与您的“XMPP 代理”进行通信。

您选择哪种解决方案取决于您的独特要求。对于像 WhatsApp 这样的聊天应用程序,后台服务通常不合适,因为您的消息最多延迟 30 分钟,并且您在后台服务不运行时不可用。而对于其他商业应用,这可能没问题。

【讨论】:

感谢 Alex 给我这样的解决方案。 :) 我也尝试过后台服务,是的,你是对的。它不符合我的要求。我还实现了推送通知。只有当任何消息来自服务器时它才能正常工作,因为服务器有我的设备 ID 或者我们可以说频道名称。但在 XMPP 的情况下,推送通知也不起作用。而对于“代理服务器”。我还没试过。请您分享任何示例或代码块。这样我就可以解决这个问题。谢谢,尼桑特 抱歉,我没有可以与您分享的基本示例。这个话题很复杂,需要一堆代码。 请分享代码。我被困住了。当我的应用程序进入后台时,XMPP 会断开连接。请告诉我,即使应用程序在后台,我怎样才能激活它。

以上是关于如何在 Windows Phone 的后台运行我的应用程序或某些特定方法的主要内容,如果未能解决你的问题,请参考以下文章

即使应用程序在后台运行或手机被锁定在 Windows Phone 中,如何让计时器运行

如何使我自己编写的音频播放器可以在后台运行(Windows Phone 8.1- WinRT)?

可以运行 2 个后台任务 - Windows Phone 8.1 通用应用程序?

无法使用 Windows Phone 后台任务进行异步调用

Windows phone 8.1 后台任务突然退出

在 Windows Phone 8.1 中从后台任务启动应用程序