【问题标题】:Usage of UrbanAirship's handleBackgroundNotificationUrbanAirship的handleBackgroundNotification的使用
【发布时间】:2012-11-14 16:34:58
【问题描述】:

我正在尝试使用 UrbanAirship 开发 iOS 应用程序。我收到推送 通知,但在应用程序运行时无法调用任何委托 背景。我(似乎错误地)假设 来自 UAPushNotificationDelegate 的 handleBackgroundNotification API 类将为我提供执行自定义操作的功能 当应用在后台时接收通知。

这是他们的文档所说的: "handleBackgroundNotification:

当应用程序在后台收到推送通知时调用

- (void)handleBackgroundNotification:(NSDictionary *)notification

参数

通知

the push notification

" - 见https://docs.urbanairship.com/ios-lib/Classes/UAPushNotificationHandler.html#//api/name/handleBackgroundNotification:

似乎不是那样工作 - 操作系统似乎在保留通知 为自己 - 这与 Apple 的文档一致。

如果操作系统不允许,我会质疑该功能的用途。我使用 didReceiveRemoteNotification 接收远程推送通知,效果很好!

但是,由于这是一个企业应用程序(即不是 App Store), 如果有私有 APÏs 和框架可以让我这样做, 我将不胜感激任何帮助。这个应用程序永远不可能 进入应用商店!

我尝试执行的自定义操作包括,例如, 发送到将“证明”收件人的服务器的通知回执 应用确实收到了通知,最多播放自定义声音 音量(绕过静音和请勿打扰模式)。这些是一些 客户的要求。

【问题讨论】:

  • 我也面临同样的问题。

标签: ios push-notification apple-push-notifications urbanairship.com


【解决方案1】:

这是我使用的,它工作得很好:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if(!loggedIn) return;

    NSLog(@"WOW: got notification! %@", userInfo);

    // see this for fine tuning: http://fivelakesstudio.blogspot.com/2012/04/push-notifications-and-urban-airship.html
    [[UAPush shared] handleNotification:userInfo applicationState:application.applicationState];
    [[UAPush shared] resetBadge];

    sharedApplication.applicationIconBadgeNumber = 0;   // probably redundant

    [self handlePushNotification:userInfo isBooting:NO]; // my common handler
}

【讨论】:

  • 对不起,但不是我要找的 - 基本上我需要了解 UAPushNotificationDelegate 的 handleBackgroundNotification 如何在应用程序处于后台时收到推送通知的通知。他们的文件声称这是它可以做的,但我有保留......
  • didReceiveRemoteNotification 在您的应用程序处于前台时调用,或者在您的 aps 消息被点击时进入前台。 APNS 处理图标标记 - 在用户交互之前,您的应用不会进入前台。
【解决方案2】:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
UA_LINFO(@"Application received remote notification: %@", userInfo);
[[UAPush shared] appReceivedRemoteNotification:userInfo applicationState:application.applicationState fetchCompletionHandler:completionHandler];

NSDictionary *values = [userInfo objectForKey:@"aps"];
NSString *title = [values objectForKey:@"alert"];

}

处理此块中所有状态的通知。 注意。您可以监控 application.applicationState 值以记录收到通知时应用程序的状态。 希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多