phonegap 中的后台通知

Posted

技术标签:

【中文标题】phonegap 中的后台通知【英文标题】:background notification in phonegap 【发布时间】:2012-07-26 00:53:26 【问题描述】:

我正在使用 Phonegap for ios 构建一个简单的闹钟,并且我已经在后台和前台触发了通知。 (所有都在 Drew Dahlman 和本教程 http://www.drewdahlman.com/meusLabs/?p=84 的帮助下)。

phonegap 插件提供了在触发 localNotification 时运行后台和前台功能的能力。

我的问题是,如果应用程序在后台,我似乎只会得到一个默认的“关闭/查看”对话框,而不是我正在设置的通知对话框。 我希望让后台通知让用户能够“起床”或“打盹”,但当然,这对于默认的“关闭/查看”通知是不可能的。

我弄错了吗?还有其他方法吗?

我设置本地通知的代码很简单

plugins.localNotification.add( date: set_alarm, 消息:“背景”, 徽章:1, 编号:12, 声音:'Alarm_01.caf', 背景:'MyApp.Alarm.notification_background', 前景:'MyApp.Alarm.notification_foreground' );

前台通知工作正常,这只是我正在努力处理的后台通知。

【问题讨论】:

在进行了一些研究和挖掘之后——看起来这可能是一个不错的补充——在通知中添加自定义按钮...developer.apple.com/library/ios/#documentation/… 看起来你可以自定义按钮。我将继续挖掘,如果你想接受它并这样做 - 请分叉 git repo,我将使其正式成为插件的一部分。 谢谢德鲁。我从来没有做过Objective C,有点超出我的专业领域。我之前查看了该文档,并认为它说您可以在这些按钮上创建标题和操作,但现在我查看 UI Guildines (developer.apple.com/library/ios/#documentation/UserExperience/…),它说您只能更改操作按钮的文本。不想让你对此大发雷霆,我不确定这是否可能。你怎么看? 【参考方案1】:

在您的应用程序 delegate.m 文件中,您需要在应用程序进入后台时激活警报或本地通知:

- (void)applicationDidEnterBackground:(UIApplication *)application

- (void)applicationWillResignActive:(UIApplication *)application

(取决于您的需要)可以在此处找到更多文档:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

我的怀疑是你只配置了应用程序在–application:didFinishLaunchingWithOptions:-application:didReceiveLocalNotification:之后触发警报

这是默认设置。

还有很多其他选择:

监控应用状态变化

应用程序:willFinishLaunchingWithOptions: 应用程序:didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationWillResignActive: applicationDidEnterBackground: applicationWillEnterForeground: applicationWillTerminate: applicationDidFinishLaunching:

管理应用状态恢复

应用程序:shouldSaveApplicationState: 应用程序:shouldRestoreApplicationState: application:viewControllerWithRestorationIdentifierPath:coder: 应用程序:willEncodeRestorableStateWithCoder: 应用程序:didDecodeRestorableStateWithCoder:

为故事板提供一个窗口 窗口属性 管理默认界面方向

应用程序:supportedInterfaceOrientationsForWindow:

打开一个 URL 资源

application:openURL:sourceApplication:annotation: 应用程序:handleOpenURL:

管理状态栏更改

应用程序:willChangeStatusBarOrientation:持续时间: 应用程序:didChangeStatusBarOrientation: 应用程序:willChangeStatusBarFrame: 应用程序:didChangeStatusBarFrame:

响应系统通知

applicationDidReceiveMemoryWarning: applicationSignificantTimeChange:

处理远程通知

应用程序:didReceiveRemoteNotification: 应用程序:didRegisterForRemoteNotificationsWithDeviceToken: 应用程序:didFailToRegisterForRemoteNotificationsWithError:

响应内容保护更改

applicationProtectedDataWillBecomeUnavailable: applicationProtectedDataDidBecomeAvailable:

【讨论】:

以上是关于phonegap 中的后台通知的主要内容,如果未能解决你的问题,请参考以下文章

使用 MQTT(后台服务?)的 Phonegap 推送通知

当应用程序在Phonegap(cordova)的后台状态下收到推送通知时增加徽章编号,

使用 Sencha+Phonegap 应用程序处理推送通知

如何在后台应用程序时从 JavaScript 发出通知/警报 - PhoneGap iPhone/iOS

当应用程序打开或应用程序处于后台时,Phonegap Firebase 推送通知不会触发事件侦听器

Phonegap : 浮动气泡通知,如 Phonegap 中的 facebook messenger