gpt4 book ai didi

ios - 应用程序在前台 iOS 时未在通知托盘(顶部)中获取推送通知

转载 作者:行者123 更新时间:2023-11-29 11:45:14 25 4
gpt4 key购买 nike

我尝试了很多在应用程序处于前台时获得修改通知....通过创建 Notification Service Extensions

在后台并杀死成功修改但在前台仅在警报正文中获取原始有效载荷而不是在通知中。

这里在 NotificationService.m 文件中

@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];

// Modify the notification content here...


NSLog(@"tesrrrr");

self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
self.bestAttemptContent.body = [NSString stringWithFormat:@"%@[ body added Manually ]", self.bestAttemptContent.body];



self.contentHandler(self.bestAttemptContent);
}
{(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
NSDictionary *userInfo1 = userInfo;
NSLog(@"userInfo: %@", userInfo1);

//self.textView.text = [userInfo description];
// We can determine whether an application is launched as a result of the user tapping the action
// button or whether the notification was delivered to the already-running application by examining
// the application state.

if (application.applicationState == UIApplicationStateActive)
{
//opened from a push notification when the app was on background


/* UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.userInfo = userInfo;
localNotification.soundName = UILocalNotificationDefaultSoundName;
localNotification.alertBody = @"xyz";
localNotification.fireDate = [NSDate date];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

*/


NSLog(@"userInfoUIApplicationStateactive->%@",[userInfo objectForKey:@"aps"]);
NSLog(@"userInfoUIApplicationStateactive->%@",[userInfo objectForKey:@"aps"]);

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Did receive a Remote Notification" message:[NSString stringWithFormat:@"Your App name received this notification while it was Running:\n%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alertView show];

// [self scheduleAlarmForDate1:[NSDate date]alarmDict:userInfo];



}
else
{
// a push notification when the app is running. So that you can display an alert and push in any view

NSLog(@"userInfoUIApplicationStateBackground->%@",[userInfo objectForKey:@"aps"]);

}
}}

最佳答案

实现 UNUserNotificationCenterDelegate 委托(delegate)方法以在应用程序处于前台时获取通知(顶部托盘)。但它只适用于 IOS 10。

在您的 didFinishLaunchingWithOptions 方法中,像这样设置 UNUserNotificationCenterDelegate 委托(delegate)。

[UNUserNotificationCenter currentNotificationCenter].delegate = self;

实现委托(delegate)方法...

//Called when a notification is delivered to a foreground app.
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{

completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge);
}

//Called to let your app know which action was selected by the user for a given notification.
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{

completionHandler();
}

注意

如果您的应用程序开发目标小于 IOS10,则使用它来设置委托(delegate)。

#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
// For iOS 10 display notification (sent via APNS)
[UNUserNotificationCenter currentNotificationCenter].delegate = self;
#endif

关于ios - 应用程序在前台 iOS 时未在通知托盘(顶部)中获取推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44322319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com