Parse warning from didReceiveRemoteNotification:fetchCompletionHandler

IosParse Platform

Ios Problem Overview


I am getting an error after adding this code from parse.com:

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
}

I don't really understand what is going on, but I am getting this warning in the log:

> You've implemented -[ > application:didReceiveRemoteNotification:fetchCompletionHandler:], but > you still need to add "remote-notification" to the list of your > supported UIBackgroundModes in your Info.plist.

I think adding in your plist file UIBackgroundModes - remote-notification would fix the problem,

But when I do that, it changes the words to the follow:

Required Background Modes -> App downloads content in response to push notifications

Which my app doesn't do, so I am confused as to why I am doing this in the first place.

Ios Solutions


Solution 1 - Ios

If you don't want to manually add key in your .plist file then here's a graphical version of @MurraySagal's answer, follow the steps from 1 to 7 and you'll be done. :)

enter image description here

Note: If you can't read out the steps, you can zoom out your current tab by using combination of Command++ (for zoom in) and Command+- (for zoom out). If Command won't work, you can try with Ctrl.

Solution 2 - Ios

I think @djshiow is not solving your problem.

You need to add the following in your info.plist file:

remote-notification

  1. Add a new row and, on the left column, select Required background modes.

  2. On Item 0 row, click on the right column and type: remote-notification. Press Enter.

Source: http://hayageek.com/ios-silent-push-notifications/

Solution 3 - Ios

If you don't intend to fetch data in response to a remote notification I think you can implement this delegate method:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

e.g.

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
}

instead of the current one you're using.

Solution 4 - Ios

In Xcode 6:

  • In the Project Navigator click the project
  • In the Projects and Targets list click the target.
  • Click Capabilities
  • Expand and turn on Background Modes
  • Click Remote Notifications

This will add the Required background modes key and App downloads content in response to push notifications value to info.plist.

Solution 5 - Ios

When you use the new didReceive... method you are expected to do two things:

  1. Add the necessary entry in your plist
  2. Add a completion handler that will handle the event for handling the data

If you do not want to download any data, you can add this to your didReceive... method

completionHandler(.NoData)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionArian FaurtoshView Question on Stackoverflow
Solution 1 - IosHemangView Answer on Stackoverflow
Solution 2 - IosjomaferView Answer on Stackoverflow
Solution 3 - IosdjshiowView Answer on Stackoverflow
Solution 4 - IosMurray SagalView Answer on Stackoverflow
Solution 5 - IoszevijView Answer on Stackoverflow