Sharekit没有显示Twitter,电子邮件,TextMessage选项

时间:2012-09-07 02:32:38

标签: objective-c cocoa-touch ios5 sharekit

我在适用于版本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显示在操作表中的任何想法?

2 个答案:

答案 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]];
   ....
}

即使您已定义为“默认”收藏夹共享服务,也会优先选择这些存储的结果。清除这些收藏夹解决了这个问题。