2014-04-01 4 views
6

저는 현재 SLComposeViewController를 사용하여 트위터 나 페이스 북에 사용자의 점수를 게시합니다 (탭하는 버튼에 따라 다름). 공유하면 가상 화폐로 보상받습니다. 내가 직면하고있는 문제는 사용자가 보내기 또는 취소를했는지 여부 만 알려주는 것입니다. 트윗이 실제로 트위터에 게시되는지 어떻게 확인할 수 있습니까? 이렇게하면 사용자가 동일한 트윗을 두 번 제출하려고하는 경우 (트위터가 허용하지 않음)와 대립하는 데 도움이됩니다.iOS 7 SLComposeViewController : 트윗이 실제로 게시되었는지 확인 하시겠습니까?

이 지금은 내 코드입니다 : 트윗 실제로 (사회 프레임 워크를 사용)에 게시 된 경우

//Check if user can send tweet 
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { 
SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 

tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) { 
switch(result) { 
    //This means the user cancelled without sending the Tweet 
    case SLComposeViewControllerResultCancelled: 
      NSLog(@"User Canceled"); 
      break; 

    //This means the user hit 'Send' 
    case SLComposeViewControllerResultDone: 
    NSLog(@"User Tapped Send"); 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 

    //Show alert & reward user here 

    break; 
    }     
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self dismissViewControllerAnimated:NO completion:^{ 
     NSLog(@"Tweet Sheet has been dismissed."); 
     }]; 
    }); 
    }; 
     [tweetSheet setInitialText:[NSString stringWithFormat:@"Just scored %ld %@! I challenge anyone to try & beat it! ", (long)scene.score, suffix]]; 
     [tweetSheet addURL:[NSURL URLWithString:@"http://appstore.com/appurlhere"]]; 
     [self presentViewController:tweetSheet animated:YES completion:^{ 
     NSLog(@"Tweet sheet has been presented."); 
    }]; 
    } 

else { 

//Something went wrong, aka no network connection 

}; 

는 어떻게 확인할 수 있습니다.

+1

Di 가능한 경우 이것을 알 수 있습니까? – DelightedD0D

답변

2

이 질문은 1 년 된 일이지만 방금 전에 발생하여 (단지 몇 분 전에!) 내 프로젝트에서 작동하는 대답을 알아 냈습니다. 내 프로젝트에서는 사용자가 보낸 것을 확인하기 위해 얼마나 많은 트윗을 보내고 있는지 세고있다. 사용자가 트윗을 취소하면 카운트가 증가하지 않습니다. 바라기를 이것은 누군가를 도울 것입니다. SLComposeViewControllerResultDone에서 [self tweetSuccessful]을 호출하십시오. 이 방법이 "올바른"방법인지 확실하지 않지만 정확하다고 판단됩니다.

-(void)twitterImageTouched:(UIGestureRecognizer *)gesture 
{ 
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) 
    { 
     SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 
     [tweetSheet setInitialText:@"Test"; 
     [tweetSheet addImage:[UIImage imageNamed:@"yourImageName"]; 
     [tweetSheet addURL:[NSURL URLWithString:@"http://yourURL"]]; 
     [self presentViewController:tweetSheet animated:YES completion:nil]; 

     tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) 
     { 
      switch (result) 
      { 
       case SLComposeViewControllerResultCancelled: 
        NSLog(@"tweet cancelled"); 
        break; 
       case SLComposeViewControllerResultDone: 
        NSLog(@"tweet completed"); 

        [self tweetSuccessful]; 
        break; 

       default: 
        break; 
      } 
     }; 
    } 

    NSLog(@"Twitter Button Pressed."); 
} 


-(void)tweetSuccessful 
{ 
    NSInteger i = [[NSUserDefaults standardUserDefaults] integerForKey:@"numberOfTweets"]; 
    [[NSUserDefaults standardUserDefaults] setInteger:i + 1 forKey:@"numberOfTweets"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    NSLog(@"%li tweets have been shared", (long)i + 1); 
}