beginBackgroundTaskWithExpirationHandler never gets called
You are actually misunderstanding the function
-(UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler
The block argument called "handler" is what will happen when the background task expire (10min).
To get your code running you need to put your code out of the expiration handler:
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
bgTask = UIBackgroundTaskInvalid;
};
[self ffwButtonPressed:ffwButton];
NSLog(@"beginBG called");
[app endBackgroundTask:bgTask];
Here is a link to the documentation
I ended up not needing beginBackgroundTaskWithExpirationHandler
at all. This line solved my problem...
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];