我在适用于版本5或更高版本的iOS应用上使用ShareKit 2。我已经将应用程序配置为正确使用Facebook,并且当激活操作表时,这是唯一出现的选项。我想使用内置的Twitter共享系统,但该选项没有出现在操作表中。这是我的代码:
SURL *url = [NSURL URLWithString:launchUrl];
SHKItem *item = [SHKItem URL:url title:@"Title" contentType:SHKShareTypeURL];
SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];
[SHK setRootViewController:self.view.window.rootViewController];
[actionSheet showInView:self.view.window.rootViewController.view];
根据说明。我有一个自定义的DefaultSHKConfigurator类,我认为这些是相关的方法:
- (NSString*)sharersPlistName {
return @"MySHKSharers.plist";
}
- (NSArray*)defaultFavoriteURLSharers {
return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", @"SHKMail", @"SHKTextMessage", nil];
}
同样,只有Facebook出现作为选项。为了完整起见,这是我的“MySHKSharers.plist”文件(相关部分):
<dict>
<key>actions</key>
<array>
<string>SHKMail</string>
<string>SHKTextMessage</string>
</array>
<key>services</key>
<array>
<string>SHKTwitter</string>
<string>SHKFacebook</string>
</array>
</dict>
那么为什么我无法将Twitter,Mail和TextMessage显示在操作表中的任何想法?
答案 0 :(得分:4)
如果您要配置操作表中显示的共享者,我发现这篇文章很有用:https://gist.github.com/1181552
我遇到了在默认操作表中显示操作(电子邮件,短信等)的问题。我的解决方案是创建一个自定义操作表,然后像这样调用Sharekit:
- (IBAction) getSharingSheet:(id)sender{
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Share"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Facebook", @"Twitter", @"Save to Photo Library", @"Email", nil];
[sheet showInView:self.view];
}
然后我的didDismissWithButtonIndex:
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
switch(buttonIndex)
{
case 0:
SHKItem *item = //some item
[SHKFacebook shareItem:item];
break;
case 1:
SHKItem *item = //some item
[SHKTwitter shareItem:item];
break;
case 2:
SHKItem *item = //some item
[SHKPhotoAlbum shareItem:item];
break;
case 3:
SHKItem *item = //some item
[SHKMail shareItem:item];
break;
default:
break;
}
}
希望这有帮助!
答案 1 :(得分:1)
我有同样的问题并且解决了它。这可能与您面临的问题相同,也可能不同。
经过一番探索,看看行动表是如何构建的,我发现在SHK.m中它将存储的收藏夹从NSUserDefaults中拉出来。
+ (NSArray *)favoriteSharersForType:(SHKShareType)type
{
NSArray *favoriteSharers = [[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithFormat:@"%@%i", SHKCONFIG(favsPrefixKey), type]];
....
}
即使您已定义为“默认”收藏夹共享服务,也会优先选择这些存储的结果。清除这些收藏夹解决了这个问题。