Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

goodpatch
Goodpatch(株式会社グッドパッチ)はUI/UXデザインを強みにビジネスモデルやブランド、組織をデザインし、デザインの価値向上を目指すグローバルデザインカンパニーです。2020年6月30日、デザイン会社初の東証マザーズ上場。サービスやプロダクトの企画設計から関わりコンセプトメイキング、UX設計、プロトタイピング、UIデザイン、実装までワンストップで提供しています。
https://goodpatch.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away