【发布时间】:2020-12-15 09:11:30
【问题描述】:
如果应用是inactive或background,是否可以有条件地运行代码。
这是两种情况:
- 如果应用在后台或处于非活动状态,我确实希望运行此代码块。
- 如果应用程序被终止并按下通知启动应用程序,我不想运行此代码块。
这是我的代码:
// Push notification received in background
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler {
NSDictionary *userInfo = response.notification.request.content.userInfo;
[[SEGAnalytics sharedAnalytics] receivedRemoteNotification:userInfo];
if ([HSBeacon isBeaconPushNotification:userInfo]) {
UIApplication *applicaiton = [UIApplication sharedApplication];
// @todo Do not run if app was killed
if (application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground) {
NSString *helpScoutBeaconID = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"HelpScoutBeaconID"];
HSBeaconSettings *settings = [[HSBeaconSettings alloc] initWithBeaconId:helpScoutBeaconID];
[HSBeacon handlePushNotification:userInfo beaconSettings:settings];
}
// End of conditional code
}
completionHandler();
}
我尝试过使用:
UIApplication *applicaiton = [UIApplication sharedApplication];
if ( application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground) {
...
}
但是当应用程序被终止、不活动或在后台时会触发。
谢谢
【问题讨论】:
标签: ios objective-c iphone push-notification apple-push-notifications