アカウントが設定されているかは「SLComposeViewController」を使用します。
Twitterアカウント確認
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter] == NO) {
//アカウントが設定されていないとき
}
UIActivityViewControllerにTwitterアイコンを表示するにはUIActivityを継承したクラスを自前で作成する必要があります。
ここでは仮に、 TWActivity とします。
UIActivityViewControllerに自前UIActivityを追加
NSArray *activityItems = @[tweetString,url];
NSMutableArray* activities = [NSMutableArray new];
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter] == NO) {
//アカウントが設定されていないとき
TWActivity *twitterActivity = [[TWActivity alloc] init];
[activities addObject:twitterActivity];
}
self.activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:activities];
TWActivity
# import "TWActivity.h"
@interface TWActivity ()
@end
@implementation TWActivity
+ (UIActivityCategory)activityCategory
{
return UIActivityCategoryShare;
}
- (NSString *)activityType
{
return NSStringFromClass([self class]);
}
- (NSString *)activityTitle
{
return @"Twitter";
}
- (UIImage *)activityImage
{
return [UIImage imageNamed:@"twitter_icon"];
}
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems
{
for (id activityItem in activityItems) {
if ([activityItem isKindOfClass:[NSURL class]] && [[UIApplication sharedApplication] canOpenURL:activityItem]) {
return YES;
}
}
return NO;
}
- (void)prepareWithActivityItems:(NSArray *)activityItems
{
}
- (void)performActivity
{
}
同様の方法でFacebook等も可能です。