我将共享选项集成到我的应用程序中,一切似乎都很好,基本上我排除了除Message,Twitter和Facebook之外的所有类型的UIActivity,当我测试它是否有效时,我在文本框中看到的是
"我获得了新的高分!
com.apple.UIKit.activity.Message
com.apple.UIKit.activity.PostToFacebook
com.apple.UiKit.activity.PostToTwitter"
,文本出现在每个活动中。
无论如何要删除文本,还是应该这样?
这是我的MainViewController中的一个方法,它提供了UIActivityViewController。
-(void)sharedView {
APActivityProvider *APActivityPro = [[APActivityProvider alloc] init];
NSArray *activites = @[APActivityPro,UIActivityTypeMessage, UIActivityTypePostToFacebook, UIActivityTypePostToTwitter];
activityController = [[UIActivityViewController alloc] initWithActivityItems:activites applicationActivities:nil];
activityController.excludedActivityTypes = @[UIActivityTypePostToWeibo,
UIActivityTypeMail,
UIActivityTypePrint,
UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList,
UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo,
UIActivityTypePostToTencentWeibo,
UIActivityTypeAirDrop];
[self presentViewController:activityController animated:YES completion:nil];
[activityController setCompletionHandler:^(NSString *activityType, BOOL completed)
{
if (completed)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@""
message:NSLocalizedString(@"Post Sent!",@"the confirmation of the sent message/post")
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK",@"done")
otherButtonTitles:nil];
[alert show];
}
}
];
}
还有我的APActivityProvider.m文件中的代码。
-(id) activityViewController:(UIActivityViewController*)activityViewController
itemForActivityType:(NSString *)activityType
{
if ([activityType isEqualToString:UIActivityTypeMessage])
return NSLocalizedString(@"I got a new highscore!",@"Comment for message");
if ([activityType isEqualToString:UIActivityTypePostToFacebook])
return NSLocalizedString(@"I got a new highscore!",@"Comment for Facebook");
if ([activityType isEqualToString:UIActivityTypePostToTwitter])
return NSLocalizedString(@"I got a new highscore!",@"Comment for twitter");
return nil;
}
- (id) activityViewControllerPlaceholderItem:(UIActivityViewController *)
activityViewController
{
return @"";
}
答案 0 :(得分:0)
您似乎错误地使用了API。具体做法是:
NSArray *activites = @[APActivityPro,UIActivityTypeMessage, UIActivityTypePostToFacebook, UIActivityTypePostToTwitter];
activityController = [[UIActivityViewController alloc] initWithActivityItems:activites applicationActivities:nil];
活动项目是您的内容(字符串,图像等),而applicationItems是您添加到默认系统项目的自定义活动选项(您编写的内容,例如在应用商店活动中打开)。您无需告诉UIActivityViewController您想要的系统活动。默认情况下全部启用。
有关如何使用此API的示例,我已包含以下内容:
NSNumber *AppStoreID = [NSNumber numberWithInt:550008982];
NSArray *activityItems =
@[ AppStoreID ];
NSArray *applicationActivities =
@[ [ATFAppStoreActivity alloc] ];
UIActivityViewController *activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:applicationActivities];
[self presentViewController:activityViewController animated:YES completion:nil];
在这里,我有我的子类UIActivity(ATFAppStoreActivity),它使NSNumber显示该应用程序的App Store页面。