0

Twitterメッセージを共有するボタンがあります。問題は、ソーシャルネットワークがiOS 5.1で機能しないことです。私の質問は、ユーザーがiOS 5.1を使用している場合にエラーメッセージを送信するにはどうすればよいですか?

-(IBAction)Twitter:(id)sender{
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {

    SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];

    SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
        if (result == SLComposeViewControllerResultCancelled) {

            NSLog(@"Cancelled");

        } else

        {
            NSLog(@"Done");
        }

        [controller dismissViewControllerAnimated:YES completion:Nil];
    };
    controller.completionHandler =myBlock;

    [controller setInitialText:@"#VOX"];
    [controller addURL:[NSURL URLWithString:@""]];
    [controller addImage:[UIImage imageNamed:@""]];

    [self presentViewController:controller animated:YES completion:Nil];

}
else{
    alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please check your Twitter settings." delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:nil ,nil];

    [alert show];


}

}

これは私のコードです。

4

2 に答える 2

4

展開ターゲットとしてiOS5.1をサポートしている場合、ユーザーがツイートを投稿できないようにすることは、ひどいユーザーエクスペリエンスです。代わりに、メソッドは次のようになります。

- (IBAction)sendTweetTapped:(id)sender {

   if ([SLComposeViewController class]) {
      // Execute your code as you have it
   }
   else {
      // Use TWTweetComposeViewController and the Twitter framework
   }
}

ソーシャルフレームワークを弱くリンクする必要があります。そうすることで、ユーザーのiOSバージョンがソーシャルフレームワークをサポートしていない場合(つまり、6.0未満)、基本的にはnilにメッセージを送信するだけです。これは許可されています。このような場合は、Twitterフレームワークの使用にフォールバックし、誰もが楽しくツイートできるようになります。

**注:メソッドの名前を変更したのは、それがひどく、メソッドが何をするのかをまったく説明していないためです。

于 2013-01-08T19:19:43.493 に答える
-1

システムバージョンのみを取得するには、ここですでに良い答えを見つけることができます。デバイスが実行されているiOSバージョンをプログラムで検出するにはどうすればよいですか。

ただし、要約すると、次のように呼び出すことができます。

[[[UIDevice currentDevice] systemVersion] floatValue];

これは、iOSバージョンをfloat値として返します。

ただし、これは必要な目的には適していません現在のOSだけでなく、機能も確認することをお勧めします。Twitterを完全に統合するには、iOS 5.0用の組み込みのTwitter機能も含めることを検討する必要があります(Twitter.frameworkと#importの両方を弱く含めて#importする必要があります。 Social.framework):

float osv = [[[UIDevice currentDevice] systemVersion] floatValue];

if (osv >= 6.0 && [SLComposeViewController class]) { //Supports SLComposeViewController, this is preferable.

   if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {
       //Success, you can tweet! (using the class SLComposeViewController)
   } else {
       if ([TWTweetComposeViewController canSendTweet]) { //Perhaps redundant, but worth a try maybe?
            //Success, you can tweet! (using the class TWTweetComposeViewController)
       } else {
            //Error Message 
       }
   } 

} else if (osv < 6.0 && osv >= 5.0 && [TWTweetComposeViewController class]) {

   if ([TWTweetComposeViewController canSendTweet]) {
        //Success, you can tweet! (using the class TWTweetComposeViewController)
   } else {
        //Error Message 
   }

} else {
       //No internal solution exists. You will have to go with 3rd party or write your own.
}
于 2013-01-08T19:19:25.957 に答える