iOS>> ShareKit>>选择所需的共享服务

时间:2011-07-25 14:17:50

标签: ios facebook email twitter sharekit

我在我的应用中实现了ShareKit。我可以使用它的默认方式,但我希望控制可供用户选择的服务;更具体地说,我不想处理默认嵌入的所有服务,只需要Facebook,Twitter和Mail。

在ShareKit文件中我在哪里进行这些设置(删除所有这些被忽略的服务,我不想处理它们的API等)?

6 个答案:

答案 0 :(得分:7)

您需要在ShareKit框架中编辑SHK.m。仅将favoriteSharersForType:方法更改为:

favoriteSharers = [NSArray arrayWithObjects:@"SHKFacebook", @"SHKTwitter", nil];
return favoriteSharers;

您可以根据需要在此阵列中添加/删除服务。

修改

要删除更多...按钮,请在actionSheetForType中找到SHKActionSheet.m方法并删除:

[as addButtonWithTitle:SHKLocalizedString(@"More...")];

完成此操作后,您需要修复索引。找到dismissWithClickedButtonIndex:委托方法并删除整个else if (buttonIndex == sharers.count)块。

答案 1 :(得分:1)

您可以导入要使用的每个Sharekit服务的头文件。例如,如果您的页面上有一个UILabel,其中包含一个文本字符串,您可以在实现文件的顶部导入您希望使用的服务。

#import "SHKTwitter.h"
#import "SHKFacebook.h"
#import "SHKMail.h"

然后,您可以通过您希望的任何操作,即点击Facebook,Twitter或邮件按钮,将其设置为通过这些服务进行分享?或者您可以手动输入您自己的UIActionSheet,其中有三个项目用于Twitter,Facebook和Mail,然后根据请求调用特定的Sharekit服务。

如果您想发布网址,例如

#import "SHKTwitter.h" //include the service's header at the top of your class

...

// Create the item to share (in this example, a url)
NSURL *url = [NSURL URLWithString:@"http://iPhoneHelpr.com"];
SHKItem *item = [SHKItem URL:url title:@"Check out my site!"];

// Share the item
[SHKTwitter shareItem:item]; // Specify the specific service you want to share with

这是一个简单的解释,但它可以应用于共享图像,文档,文本字符串等。

答案 2 :(得分:1)

创建自己的配置文件时,请覆盖此方法:

  - (NSString*)sharersPlistName 
    {   
       return @"MySHKSharers.plist"; // original value is "SHKSharer.plist"  
    }

将SHKSharer.plist从Classes / ShareKit / Core下的ShareKit项目复制到您的项目位置。

从文件中删除不需要的操作和服务,您已完成。

答案 3 :(得分:1)

来自“DefaultSHKConfigurator.h”的子类DefaultSHKConfigurator并实现以下方法:

- (NSArray*)defaultFavoriteURLSharers {
    return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", @"SHKPocket", nil];
}
- (NSArray*)defaultFavoriteImageSharers {
    return [NSArray arrayWithObjects:@"SHKMail",@"SHKFacebook", @"SHKCopy", nil];
}
- (NSArray*)defaultFavoriteTextSharers {
    return [NSArray arrayWithObjects:@"SHKMail",@"SHKTwitter",@"SHKFacebook", nil];
}

在你的stdAppDelegate中:

//configure sharekit:
DefaultSHKConfigurator *configurator = [[MySHKConfigurator alloc] init];
[SHKConfiguration sharedInstanceWithConfigurator:configurator];

答案 4 :(得分:0)

上述解决方案在我看来是错误的,并且无法维护,因为每次有关ShareKit库的更新时都必须应用该更改(至少现在,我不知道它在之前版本的ShareKit中是怎么回事)。

如果您阅读 SHK.m ,您会看到它首先尝试从偏好设置中获取您的分享者,如果您有,则会转到SHKConfigurator并且致电 defaultFavoriteURLSharers

如果您继承 DefaultSHKConfigurator (您可能会这样做),则可以覆盖 defaultFavoriteURLSharers 方法(或ImageSharers,或TextSharers等),你可以在那里定义你最喜欢的分享者。

在@interface CLQShareKitConfigurator:DefaultSHKConfigurator

- (NSArray*)defaultFavoriteURLSharers
{
    return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", nil];
}

答案 5 :(得分:0)

要删除更多按钮,可以在SHKConfigurator

中添加此方法
-(NSNumber*)showActionSheetMoreButton {
    return [NSNumber numberWithBool:false];
}