iOS >> ShareKit >> Выбор необходимых служб общего доступа - PullRequest
3 голосов
/ 25 июля 2011

Я реализовал ShareKit в своем приложении. Я согласен с тем, как он работает по умолчанию, но я хочу контролировать сервисы, доступные пользователю для выбора; точнее говоря, я не хочу иметь дело со всеми сервисами, встроенными по умолчанию, а просто имею Facebook, Twitter и Mail.

Где в файлах ShareKit я делаю эти настройки (удаляя все эти заброшенные сервисы, которые я не хочу иметь дело с их API и т. Д.)?

Ответы [ 6 ]

7 голосов
/ 28 июля 2011

Вам необходимо отредактировать SHK.m в инфраструктуре ShareKit.Измените метод favoriteSharersForType: только на:

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

Вы можете добавлять / удалять службы из этого массива по своему усмотрению.

РЕДАКТИРОВАТЬ

Чтобы удалить кнопку «Больше ...», найдите метод actionSheetForType в SHKActionSheet.m и удалите:

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

После завершения вам нужно будет исправить индексы.Найдите метод делегата dismissWithClickedButtonIndex: и удалите весь блок else if (buttonIndex == sharers.count).

1 голос
/ 03 декабря 2013

Подкласс DefaultSHKConfigurator из "DefaultSHKConfigurator.h" и реализуйте следующие методы:

- (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];
1 голос
/ 13 апреля 2013

Когда вы создаете свой собственный файл конфигурации, переопределите этот метод:

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

Скопируйте SHKSharer.plist из проекта ShareKit в Classes / ShareKit / Core в местоположение вашего проекта.

Удалитенежелательные действия и сервисы из файла, все готово.

1 голос
/ 29 июля 2011

Вы можете импортировать файлы заголовков для каждого сервиса 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

Это простое объяснение, но его можно применять для обмена изображениями, документами, строками текста и т. Д.

0 голосов
/ 28 августа 2014

Чтобы удалить больше кнопки, вы можете добавить этот метод в свой SHKConfigurator

-(NSNumber*)showActionSheetMoreButton {
    return [NSNumber numberWithBool:false];
}
0 голосов
/ 07 апреля 2014

Вышеупомянутое решение, по моему мнению, неверно и не подлежит сопровождению, поскольку вы должны применять это изменение каждый раз, когда происходит обновление библиотеки ShareKit (по крайней мере сейчас, я не знаю, как это было в предыдущих версиях ShareKit).

Если вы прочитаете SHK.m , вы увидите, что он сначала пытается получить ваших участников обмена из настроек, если они у вас есть, в противном случае он перейдет к SHKConfigurator и вызовет defaultFavoriteURLSharers .

Если вы создаете подкласс DefaultSHKConfigurator (что вы, вероятно, делаете), вы можете переопределить метод defaultFavoriteURLSharers (или ImageSharers, или TextSharers и т. Д.), И вы можете определить своих любимых участников.

В @interface CLQShareKitConfigurator: DefaultSHKConfigurator

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