Parse platform 从iOS8 Today小部件访问PFUser currentUser
我在Parse google小组中问过这个问题,但我想我会在这里把它说得更广一些。在正式发布之前,我对讨论与iOS8相关的任何事情的规则仍然有点模糊,但是随着通用汽车的退出和扩展的讨论,我想我现在可以问这个问题了。如果没有,它可以等待 我正在使用后端解析。我想构建一个Today小部件,它显示一些与特定currentUser相关的记录。加载和初始化解析不是问题所在,框架是加载和初始化的,这很好。但即使登录到容器应用程序,我似乎也没有当前用户的参考 这是我创建的代码,只是为了确认我可以访问当前用户,但这不起作用。我试图将其保存在NSUserDefault中,这可能是一种黑客行为,但没有成功Parse platform 从iOS8 Today小部件访问PFUser currentUser,parse-platform,ios8,ios-app-extension,Parse Platform,Ios8,Ios App Extension,我在Parse google小组中问过这个问题,但我想我会在这里把它说得更广一些。在正式发布之前,我对讨论与iOS8相关的任何事情的规则仍然有点模糊,但是随着通用汽车的退出和扩展的讨论,我想我现在可以问这个问题了。如果没有,它可以等待 我正在使用后端解析。我想构建一个Today小部件,它显示一些与特定currentUser相关的记录。加载和初始化解析不是问题所在,框架是加载和初始化的,这很好。但即使登录到容器应用程序,我似乎也没有当前用户的参考 这是我创建的代码,只是为了确认我可以访问当前用户,
PFUser *currentUser = [PFUser currentUser];
if (currentUser) {
nameTF.text = [NSString stringWithFormat:@"%@ %@", [currentUser objectForKey:@"firstName"], [currentUser objectForKey:@"lastName"]];
} else {
nameTF.text = @"No freaking clue who you are.";
}
但我所看到的只是“没有奇怪的线索…”的文字
我的第一个问题是我是否可以访问当前用户?我想我可以并且需要在团队中得到它,我错过了一些愚蠢的事情。如果是这样的话,有人能告诉我一个实现这一目标的最佳方法的来源或信息吗?一旦我可以与当前用户进行查询,我就没事了
再次感谢您提供的任何建议
*更新*
在Parse上的Fosco Marotto建议将sessionToken存储在NSUserDefaults中,然后在扩展中使用该令牌调用PFUser becomeInBackground之后,我将以下代码放在一起测试该建议,这是可行的。它需要改进,因为它有点粗糙,所以我不把它作为答案
NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"XXXXXXXXXXXXXXXXX"];
NSString *pfToken = [sharedDefaults valueForKey:@"PFUserSessionToken"];
[PFUser becomeInBackground:pfToken block:^(PFUser *currentUser, NSError *error) {
if (error) {
// The token could not be validated.
NSLog(@"error happened during becomeInBackground - token could not be validated");
// Show the token just to make sure we got it
nameTF.text = pfToken;
} else {
// The current user is now set to user.
// do stuff with the user
nameTF.text = [NSString stringWithFormat:@"%@ %@", [currentUser objectForKey:@"firstName"], [currentUser objectForKey:@"lastName"]];
}
}];
// Now lets see if we can get PFUser outside of the block
// Not sure if we need this
PFUser *currentUser = [PFUser currentUser];
if (currentUser) {
// We have a reference to currentUser
nameTF.text = [NSString stringWithFormat:@"%@", [currentUser objectForKey:@"firstName"]];
} else {
nameTF.text = @"Don't think you're getting the PFUser thing right here";
}
我可以获取当前用户并对其进行查询。多亏了Fosco的指导,希望这是一个解决方案我成功地将当前用户用户名的NSString从我的应用程序保存到用户默认值。然后在小部件的视图控制器中,我查询了使用该用户名的用户。现在Parse提供了在主机应用程序和扩展程序之间共享数据的官方解决方案。有关更多信息,请访问我不确定此解决方案是否能提供我们所需的全部访问权限。Fosco@Parse在Parse-Google小组中给出了这个未经测试的建议“苹果在这里有一些信息指出了解决方法:还没有尝试过,但想法是将PFUser sessionToken存储在NSUserDefaults中,当扩展被激活时,抓取该sessionToken并使用PFUser becomeInBackground功能。”我已经测试过,它可以工作。