3

我在版本 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 出现在操作表中?

4

2 回答 2

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;
    }
}

希望这可以帮助!

于 2012-09-27T15:48:15.983 回答
1

我有同样的问题,刚刚解决了。这可能与您面临的问题相同,也可能不同。

在浏览了一下操作表是如何构建的之后,我发现在 SHK.m 中它正在从 NSUserDefaults 中提取存储的收藏夹。

+ (NSArray *)favoriteSharersForType:(SHKShareType)type
{
    NSArray *favoriteSharers = [[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithFormat:@"%@%i", SHKCONFIG(favsPrefixKey), type]];
   ....
}

这些存储的结果甚至优于您定义为“默认”收藏的共享服务。清除这些收藏夹可以解决问题。

于 2013-07-25T20:38:46.603 回答