2016-09-09 17 views
2

私は共有するために選択したメディアをキャプチャする方法があるかどうかを判断しようとしています。私はiOSアプリを持っていて、あらかじめ定義されたテンプレートを共有する共有ボタンがあります。ユーザーが共有ボタンをクリックすると、共有に使用できるアプリが表示され、FacebookやWhatsApp、Skypeが選択された場合、選択したメディアのネイティブアプリにリダイレクトされます。今私は彼らが何を選んだのか知りたい。iOSで共有するメディアを知ることはできますか?

+0

あなたはこの共有のために何を使用していますか? 'UIActivityViewController'?完了ハンドラのドキュメントを見ましたか? – rmaddy

+0

@rmaddyはい、私は 'UIActivityViewController'を使用するつもりです –

答えて

1

あなたは、ユーザが選択したActivityTypeを、彼らは活動を完了したか、それをキャンセルするかどうかをチェックするためにUIActivityViewControllerのcompletionWithItemsHandlerを使用することができます。

let activityViewController = UIActivityViewController(activityItems:[ "Hello"], applicationActivities: nil) 

activityViewController.completionWithItemsHandler = { (activityType, completed, returnedItems, error) in 

    //check completed 
    if completed{ 
    //check activity type using activity type 
    if activityType!==UIActivityTypePostToFacebook{ 
     //Facebook 
    } 
    and so on 
    } 
} 
presentViewController(activityViewController, animated: true, completion: {}) 
1

あなたはUIActivityViewController

UIActivityViewControllerスイフトで
- (IBAction)shareButton:(UIBarButtonItem *)sender 
{ 
    NSString *textToShare = @"Look at this awesome website for aspiring iOS Developers!"; 
NSURL *myWebsite = [NSURL URLWithString:@"http://www.codingexplorer.com/"]; 

NSArray *objectsToShare = @[textToShare, myWebsite]; 

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil]; 

NSArray *excludeActivities = @[UIActivityTypeAirDrop, 
           UIActivityTypePrint, 
           UIActivityTypeAssignToContact, 
           UIActivityTypeSaveToCameraRoll, 
           UIActivityTypeAddToReadingList, 
           UIActivityTypePostToFlickr, 
           UIActivityTypePostToVimeo]; 

activityVC.excludedActivityTypes = excludeActivities; 

[self presentViewController:activityVC animated:YES completion:nil]; 
} 

と客観Cで共有するために、このコードを使用することができます。

@IBAction func shareButtonClicked(sender: UIButton) { 
let textToShare = "Swift is awesome! Check out this website about it!" 

if let myWebsite = NSURL(string: "http://www.codingexplorer.com/") { 
    let objectsToShare = [textToShare, myWebsite] 
    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil) 

    //New Excluded Activities Code 
    activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList] 
    // 

    activityVC.popoverPresentationController?.sourceView = sender 
    self.presentViewController(activityVC, animated: true, completion: nil) 
} 
} 

あなたはFacebookを利用して共有をperticularしたい場合は、客観CでSLComposeViewControllerを使用することができます

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 
    fbSLComposeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
    [fbSLComposeViewController addImage:someImage]; 
    [fbSLComposeViewController setInitialText:@"Some Text"]; 
    [self presentViewController:fbSLComposeViewController animated:YES completion:nil]; 

    fbSLComposeViewController.completionHandler = ^(SLComposeViewControllerResult result) { 
     switch(result) { 
      case SLComposeViewControllerResultCancelled: 
       NSLog(@"facebook: CANCELLED"); 
       break; 
      case SLComposeViewControllerResultDone: 
       NSLog(@"facebook: SHARED"); 
       break; 
     } 
    }; 
} 
else { 
    UIAlertView *fbError = [[UIAlertView alloc] initWithTitle:@"Facebook Unavailable" message:@"Sorry, we're unable to find a Facebook account on your device.\nPlease setup an account in your devices settings and try again." delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil]; 
    [fbError show]; 
} 

SLComposeViewControlleスウィフト

のR
@IBAction func facebookButtonPushed(sender: UIButton) { 
if SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook){ 
    var facebookSheet:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook) 
    facebookSheet.setInitialText("Share on Facebook") 
    self.presentViewController(facebookSheet, animated: true, completion: nil) 
} else { 
    var alert = UIAlertController(title: "Accounts", message: "Please login to a Facebook account to share.", preferredStyle: UIAlertControllerStyle.Alert) 
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 
    self.presentViewController(alert, animated: true, completion: nil) 
} 
} 
+1

最初に質問を読んでください、私は共有する方法を知っていますが、共有中にユーザーが選択した共有のメディアを取得したいので、どのメディアを追跡することができますほとんどの共有に使用されています。 –

関連する問題