2014-04-01 13 views
6

Tôi hiện đang sử dụng SLComposeViewController để đăng điểm của người dùng lên twitter hoặc facebook (tùy thuộc vào nút họ nhấn). Khi họ chia sẻ, họ được thưởng bằng tiền ảo. Vấn đề mà tôi đang gặp phải là nó sẽ chỉ cho tôi biết liệu người dùng có nhấn Gửi hoặc Hủy hay không. Làm cách nào để kiểm tra xem tweet có thực sự được đăng lên twitter không? Điều này sẽ giúp chống lại các trường hợp người dùng cố gắng gửi cùng một tweet hai lần (mà twitter không cho phép).iOS 7 SLComposeViewController: Kiểm tra xem tweet có thực sự được đăng không?

Đây là mã của tôi bây giờ:

//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 

}; 

Làm thế nào tôi có thể kiểm tra xem tweet đã thực sự được đăng (Sử dụng khung xã hội).

+1

Bạn có bao giờ tìm hiểu xem điều này có khả thi không? – DelightedD0D

Trả lời

2

Câu hỏi này là một năm cũ nhưng tôi chỉ xảy ra khi nó và đã chỉ tìm ra (chỉ một vài phút trước!) Một câu trả lời mà làm việc trong dự án của tôi. Trong dự án của tôi, tôi tính số lượng tweet đã được gửi để xác minh rằng người dùng đã nhấn vào gửi. Nếu người dùng hủy bỏ các tweet, số lượng không tăng lên. Hy vọng rằng điều này sẽ giúp một ai đó ra ngoài. Gọi [self tweetSuccessful] dưới SLComposeViewControllerResultDone. Không chắc chắn nếu điều này là "đúng" cách nhưng nó có vẻ là chính xác.

-(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); 
} 
Các vấn đề liên quan