【问题标题】:How handle silent pushnotification when application is on InActive mode? In Objective C当应用程序处于 InActive 模式时如何处理静默推送通知?在目标 C
【发布时间】:2016-12-21 06:13:07
【问题描述】:

是的,堆栈中也有类似的问题,到目前为止,我没有从这些问题中找到任何合适的并发答案。

当我收到静默推送通知时,我如何下载任何数据或调用 web-api?

我的代码如下..

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
 {

     NSDictionary *dicAPS = [userInfo objectForKey:@"aps"];

     if(application.applicationState == UIApplicationStateBackground) {

        // This is working..
        [self callWebService];
     }
     else if(application.applicationState == UIApplicationStateInactive)
     {
        // This is not working..
        [self callWebService];
     }
     else
     {
        // This is working..
        //Show an in-app banner
     }
}

注意:
1) 从网页端,我已经将“内容可用”添加为 1。
2) 我已经在 Plist 中添加了下面的键。

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

希望你的回答能给我带来新的希望。

问候。

【问题讨论】:

  • 你也可以通过设置sound值来管理payload?
  • @Shubham-Systematix 问题是如何在应用处于非活动状态时调用 web api 或执行任何代码。
  • 为此我们需要设置后台模式,但它也在 10 分钟内工作。 slot 另外,请检查我的以下答案
  • 我检查了whatsapp和其他应用程序,他们根据静音推送通知管理收到的收据,并且没有任何10分钟的限制。
  • 请检查我的评论以及答案。可能对你有帮助。

标签: ios objective-c push-notification silentpush


【解决方案1】:

你的处理方式不对。

如果您的应用处于 InActive 状态,则不会调用“didReceiveRemoteNotification”。

在“AppDelegate”中的“didFinishLaunchingWithOptions”方法中使用以下代码来处理此状态。

//Handling PUSH NOtIFICATIONs when app is killed

NSDictionary *pushDic = [[NSDictionary alloc]init];
pushDic = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];

if (pushDic)
{
    [self callWebService];
}

【讨论】:

  • 是在收到推送通知的同时执行代码还是在用户打开应用的时候执行代码?
  • 当用户点击banner时执行。
  • 我想在收到通知后立即执行。
  • 当您的 App 处于 InActive 状态时,您不能仅在收到通知时执行一段代码。您必须点击横幅才能执行代码。
  • 他们使用 Voip Push 来实现这一点。 Voip Push 非常快,可以从 InActive 状态调用您的应用程序,因此您可以在收到 Voip Push 后立即执行任何代码。
【解决方案2】:

如果您的应用处于 INACTIVE 模式,您将无法处理任何类型的远程或本地通知。当任何其他内容(如呼叫、消息或任何其他内容)出现时,应用程序将变为非活动状态。

如果你想做一些需要的事情,你可以在applicationDidBecomeActive通过任何网络服务的帮助来处理它。

【讨论】:

  • Whatspp 和许多其他使用类似机制的应用程序(静默推送通知)。甚至,Apple 也不提供对 Inactive 模式的支持,为什么 UIApplicationStateInactive 有枚举?
猜你喜欢
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
相关资源
最近更新 更多