Ios 如何从Apple推送通知获取用户信息

Ios 如何从Apple推送通知获取用户信息,ios,objective-c,apple-push-notifications,Ios,Objective C,Apple Push Notifications,我的企业应用程序使用Apple推送通知,在大多数情况下都可以正常工作。我想做的是通过非userdidrepondtopush的方法从通知中获取用户信息 如果有通知等待,系统会在iPhone主屏幕的图标上放置一个徽章。如果用户响应通知本身,应用程序将触发userRespondsToPush。但是,如果用户没有刷通知并正常启动应用程序,通过点击应用程序图标并显示徽章,我希望应用程序能够像用户刷通知一样响应。这意味着我需要使用非userdidrepondtopush的方法获取userInfo,以便应用

我的企业应用程序使用Apple推送通知,在大多数情况下都可以正常工作。我想做的是通过非
userdidrepondtopush
的方法从通知中获取用户信息

如果有通知等待,系统会在iPhone主屏幕的图标上放置一个徽章。如果用户响应通知本身,应用程序将触发
userRespondsToPush
。但是,如果用户没有刷通知并正常启动应用程序,通过点击应用程序图标并显示徽章,我希望应用程序能够像用户刷通知一样响应。这意味着我需要使用非
userdidrepondtopush
的方法获取
userInfo
,以便应用程序知道向用户显示哪些信息


推送通知对我来说是相当新的,但我有一些相当好的运气让它工作。我只需要这一个小功能就可以了。

如果您的应用程序支持iOS 10及以上版本,那么您应该能够使用
UNUserNotificationCenter
类检索挂起的通知

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[UNUserNotificationCenter currentNotificationCenter] getPendingNotificationRequestsWithCompletionHandler:^(NSArray<UNNotificationRequest *> * _Nonnull requests) {
        for (UNNotificationRequest *request in requests) {
            NSDictionary *userInfo = request.content.userInfo;
            NSLog(@"push user info: %@", userInfo);
            // Handle the payload here.
        }
    }];
    return YES;
}
-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项{
[[UNUserNotificationCenter currentNotificationCenter]getPendingNotificationRequestsWithCompletionHandler:^(NSArray*\u非空请求){
for(未通知请求*请求中的请求){
NSDictionary*userInfo=request.content.userInfo;
NSLog(@“推送用户信息:%@”,userInfo);
//在这里处理有效载荷。
}
}];
返回YES;
}

我猜您想知道从RemoteNotification启动的应用程序,或者通常从应用程序图标启动的应用程序

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    NSDictionary *remoteNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

    return YES;
}

如果存在远程通知,则表示应用程序是从远程通知启动的,否则不是。

我正在查看
UNUserNotificationCenter
,但我无法使其运行。这显然比我想象的要复杂。我会试试看,然后告诉你。谢谢尝试在AppDelegate的
didFinishLaunchingWithOptions:
方法中粘贴代码,并查看是否正在lldb控制台中记录用户信息有效负载对象。我过去使用过这个API,实现非常简单。