3

我已经在我的应用程序中实现了 ShareKit。我可以接受它的默认工作方式,但我希望控制可供用户选择的服务;更具体地说,我不想处理默认嵌入的所有服务,而只有 Facebook、Twitter 和 Mail。

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

4

6 回答 6

7

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

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

您可以随意添加/删除此阵列中的服务。

编辑

要删除 More... 按钮,请找到actionSheetForType方法SHKActionSheet.m并删除:

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

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

于 2011-07-28T18:18:20.717 回答
1

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

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

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

例如,如果您想发布 URL;

#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

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

于 2011-07-29T10:58:42.047 回答
1

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

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

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

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

于 2013-04-13T18:27:22.040 回答
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];
于 2013-12-03T03:57:52.760 回答
0

在我看来,上述解决方案是错误的并且不可维护,因为每次 ShareKit 库有更新时您都必须应用该更改(至少现在,我不知道它在以前版本的 ShareKit 中的情况如何)。

如果您阅读SHK.m,您会看到它首先尝试从首选项中获取您的共享者(如果有的话),否则它将转到 SHKConfigurator 并调用defaultFavoriteURLSharers

如果您将DefaultSHKConfigurator子类化(您可能会这样做),您可以覆盖defaultFavoriteURLSharers方法(或 ImageSharers,或 TextSharers 等),您可以在那里定义您最喜欢的共享者。

在@interface CLQShareKitConfigurator 中: DefaultSHKConfigurator

- (NSArray*)defaultFavoriteURLSharers
{
    return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", nil];
}
于 2014-04-07T12:21:09.333 回答
0

要删除更多按钮,您可以在 SHKConfigurator 中添加此方法

-(NSNumber*)showActionSheetMoreButton {
    return [NSNumber numberWithBool:false];
}
于 2014-08-28T07:28:12.387 回答