2015-09-02 3 views
1

У меня возникли проблемы при обмене видео с помощью airdrop. Таким образом, я использую AssetLibrary так:Обмен видео с помощью airdrop

else if (conformsToVideo) { 

     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Asset Loaded" message:@"Video One Loaded" 
     delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 

     self.mediaAsset = [AVAsset assetWithURL:[info objectForKey:UIImagePickerControllerMediaURL]]; 

     UIActivityViewController * controller = [[UIActivityViewController alloc] initWithActivityItems:@[self.mediaAsset] applicationActivities:nil]; 
     [self presentViewController:controller animated:YES completion:nil]; 
} 

Может быть, это просто не так, как это сделать, я не знаю, и я не нашел каких-либо учебник об этом, так что если у вас есть, я с удовольствием возьмем его.

Теперь моя проблема заключается в том, что, когда я выбираю видео все работает отлично, пока UIActivityViewController не выскочит, я не какой-либо ошибки, но я не могу использовать десантный (nor any other service BTW) единственное, что я могу сделать, это нажать Cancel button от UIAVController.

Я использую iOS 8.3.

Спасибо за вашу помощь

ответ

0

Ok, в конце концов, я нашел ответ, может быть, не самый лучший, но я положил его там в случае, если это помогает кому-то причине я не нашел много на обмен видео с десантный:

NSURL * path = [info objectForKey:UIImagePickerControllerReferenceURL]; 
BOOL conformsToVideo = (UTTypeConformsTo((__bridge_retained CFStringRef) mediaType, kUTTypeAudiovisualContent)); 

if (conformsToVideo) { 

      [self.library assetForURL:path 
          resultBlock:^(ALAsset *asset) { 
           ALAssetRepresentation* assetRepresentation = [asset defaultRepresentation]; 
           NSString* outputDirectory = [NSString stringWithFormat:@"%@", NSTemporaryDirectory()]; 
           NSString* pathToCopy = [outputDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", assetRepresentation.filename]]; 

           NSUInteger size = (NSUInteger)assetRepresentation.size; 
           NSMutableData* data = [NSMutableData dataWithLength:size]; 

           NSUInteger bytesRead = [assetRepresentation getBytes:data.mutableBytes fromOffset:0 length:size error:nil]; 
           NSURL * url = nil; 
           if ([data writeToFile:pathToCopy atomically:YES]) 
           { 
            NSLog(@"Ok"); 
            url = [NSURL fileURLWithPath:pathToCopy]; 
            UIActivityViewController * controller = [[UIActivityViewController alloc] initWithActivityItems:@[url] applicationActivities:nil]; 
            [self presentViewController:controller animated:YES completion:nil]; 
           } 
          } failureBlock:^(NSError *error) { 
           NSLog(@"Failure to use the ALAsset"); 

          } 
      ]; 
     } 

Я нашел решение, используя этот вопрос: Share a video from asset library with AirDrop fails Я просто добавляю предыдущие шаги к указанному здесь коду, надеюсь, что это может быть полезно.