你能帮我理解我应该何时使用UIActivityViewController
。我有一个按钮,它共享有关我的应用程序的常见信息(类似“我喜欢这个应用程序”的链接和图像)。我的旧代码是:
NSMutableDictionary *params = [NSMutableDictionary dictionary];
[params setObject:picture forKey:@"picture"];
[params setObject:link forKey:@"link"];
[params setObject:@"I like MY app!" forKey:@"caption"];
[params setObject:@"I am now using MY iPhone app." forKey:@"description"];
[params setObject:linkToTheIcon forKey:@"icon"];
[params setObject:@"including link" forKey:@"type"];
[[FacebookConnection instance] feedLink:params andDelegate:self];
现在我想使用UIActivityViewController
,但我有点困惑如何将所有这些参数传递给它。或者我应该以其他方式做事?
增加:
所以我明白我需要无声的发布程序。
你能否引导我使用iOS 6功能(e.d.使用内置FB帐户)进行静音后期程序。目前我无法理解如何检查设备上是否存在FB帐户以及是否不提示创建它? ACAccount商店类– requestAccessToAccountsWithType:options:completion:
中有一种方法可以访问帐户。但如果帐户不存在,则返回错误。非常感谢提前。
答案 0 :(得分:1)
首先需要将UIActivity子类化。
然后你需要覆盖某些方法,包括用于设置图标的activityImage和用于执行操作的performActivity。
如果不是静默执行操作,首先需要进一步的用户交互和自定义活动的信息(例如,像标准UIActivity的Twitter帖子),你应该覆盖activityViewController而不是performActivity。
在对UIActivity进行子类化后(例如,MyActivity),您应该创建一个MyActivity实例,并使其成为您传递给initWithActivityItems的applicationActivities数组的一个元素:applicationActivities:。
查看the documentation for UIActivity,确切了解在子类化和图标要求时需要覆盖的内容。
希望这有点帮助
答案 1 :(得分:1)
在您的情况下,您似乎不应该使用UIActivityViewController
,因为您想在Facebook上发布,而不是在Twitter或其他任何地方发布,对吧?
首先,您需要访问用户的帐户。你这样做:
-(void)requestBasicPermissionsForFacebookAccount {
ACAccountType * facebookAccountType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSArray * permissions = @[@"email"];
NSDictionary * options = @{ACFacebookAppIdKey : kFacebookAppId, ACFacebookPermissionsKey : permissions, ACFacebookAudienceKey : ACFacebookAudienceEveryone};
FacebookAccountManager * fbMgr = [[FacebookAccountManager alloc] init];
[self.accountStore requestAccessToAccountsWithType:facebookAccountType options:options completion:^(BOOL granted, NSError *error) {
if (granted) {
NSArray * accounts = [self.accountStore accountsWithAccountType:facebookAccountType];
fbMgr.account = [accounts lastObject];
fbMgr.isBasicPermissionsGranted = YES;
[self.accountManagers addObject:fbMgr];
NSLog(@"granted!");
}
else {
fbMgr.account = nil;
fbMgr.isBasicPermissionsGranted = NO;
switch ([error code]) {
case 1:
[self showErrorAlertWithMessage:@"Unknown error occured, try again later!"];
break;
case 3:
[self showErrorAlertWithMessage:@"Authentication failed, try again later!"];
break;
case 6:
[self showErrorAlertWithMessage:@"Facebook account does not exists. Please create it in Settings and come back!"];
break;
case 7:
[self showErrorAlertWithMessage:@"Permission request failed. You won't be able to share information to Facebook"];
break;
default:
break;
}
NSLog(@"error is: %@", error);
}
}];
}
如果帐户不存在,您应该提示用户在设置中创建帐户,然后尝试再次获取基本权限。