LoginSignup
11
10

More than 5 years have passed since last update.

設定アプリでTwitterアカウントが設定されていない場合にUIActivityViewControllerにTwitterを表示する

Posted at

アカウントが設定されているかは「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等も可能です。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10