2014-04-01 5 views
6

मैं वर्तमान में ट्विटर या फेसबुक पर उपयोगकर्ता के स्कोर को पोस्ट करने के लिए SLComposeViewController का उपयोग कर रहा हूं (वे टैप किए गए बटन के आधार पर)। जब वे साझा करते हैं, तो उन्हें आभासी मुद्रा के साथ पुरस्कृत किया जाता है। मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि यह केवल मुझे बताएगा कि कोई उपयोगकर्ता भेजें या रद्द करें या नहीं। मैं कैसे जांच सकता हूं कि ट्वीट वास्तव में ट्विटर पर पोस्ट किया गया है या नहीं? इससे युद्ध के मामलों में मदद मिलेगी जहां उपयोगकर्ता एक ही ट्वीट को दो बार सबमिट करने का प्रयास करता है (जो ट्विटर अनुमति नहीं देता है)।आईओएस 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

क्या आपको कभी पता चला कि यह संभव था या नहीं? – DelightedD0D

उत्तर

2

यह प्रश्न एक वर्ष पुराना है, लेकिन मैं बस उस पर हुआ और मुझे अभी पता चला था (केवल कुछ मिनट पहले!) एक उत्तर जो मेरी परियोजना में काम करता है। मेरी परियोजना में, मैं यह गिन रहा हूं कि उपयोगकर्ता ने टैप किए गए सत्यापन को सत्यापित करने के लिए कितने ट्वीट भेजे थे। यदि उपयोगकर्ता ट्वीट को रद्द करता है, तो गणना में वृद्धि नहीं होती है। उम्मीद है कि यह किसी की मदद करेगा। SLComposeViewControllerResultDone के तहत [स्वयं ट्वीट स्वीकार्य] पर कॉल करें। सुनिश्चित नहीं है कि यह "सही" तरीका है लेकिन यह सटीक प्रतीत होता है।

-(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); 
} 
संबंधित मुद्दे