2014-10-16 2 views
0

Итак, у меня есть приложение, создающее файл, в этом случае это на самом деле анимированный .gif. Этот анимированный .gif сохраняется на устройстве и готов к работе - теперь я хочу поделиться этим файлом, когда пользователь нажимает кнопку «Поделиться».Как я могу поделиться файлом с iOS?

Проще говоря, как я могу это достичь?

Есть ли способ сказать iOS, чтобы открыть окно совместного доступа и что я делюсь имиджем? Прямо сейчас я не могу найти способ сделать это, поэтому вместо этого я создаю новый UIImage с указанием пути к этому анимированному .gif на устройстве, но это заканчивает преобразование моего анимированного файла в статическое изображение.

Снова - у меня уже есть анимированный файл .gif, созданный и сохраненный на устройстве пользователя.

Любая помощь приветствуется.

Редактировать: Чтобы уточнить, я привык к Android, я просто вызываю намерение поделиться файлом и всплывает список Gmail, Facebook, Twitter и т. Д. И т. Д. Я в основном хочу, чтобы эквивалент из этого, если это возможно.

+0

'UIDocumentInteractionController'. – rmaddy

+0

Поделитесь этим с чем? Для файла требуется приложение для его запуска. Назовите одно. –

+1

Посмотрите, что я привык к Android, я просто призываю поделиться файлом и выкладывать список Gmail, Facebook, Twitter и т. Д. И т. Д. Я в принципе хочу, чтобы это эквивалентно тому, что было возможно. – FTLRalph

ответ

1

Возможно, вы захотите взглянуть на документ UIActivityViewController. Это откроет листок со всеми способами, доступными для совместного использования на устройстве. См. Здесь https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIActivityViewController_Class/index.html#//apple_ref/doc/uid/TP40011976-CH1-SW2. Возможно, вы захотите инициализировать ActivityViewController с изображениями или UIActivityItemSource

+0

Смотрите, спасибо за этот ответ, но это мне не помогает. Извините, если я не был достаточно ясен, но пока это то, что я хочу (чтобы поделиться), я спрашиваю, как я могу поделиться анимированным .gif конкретно? В Android все, что мне нужно сделать, это указать путь к файлу, скажем «это изображение» и вызвать намерение поделиться. Кажется, что в iOS вы можете делиться текстом, URL-адресом или UIImage, а также статическим изображением, по крайней мере, это все, что я видел. – FTLRalph

0

Facebook и твиттер не поддерживают UIActivityViewController, все еще в этом используемом ограниченном приложении. Теперь этот код очень полезен.

- (недействительными) {uploadImageToTwitter

ACAccountStore *account = [[ACAccountStore alloc] init]; 
ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier: 
           ACAccountTypeIdentifierTwitter]; 

[account requestAccessToAccountsWithType:accountType options:nil 
           completion:^(BOOL granted, NSError *error) 
{ 
    if (granted == YES) 
    { 
     NSArray *arrayOfAccounts = [account 
            accountsWithAccountType:accountType]; 

     if ([arrayOfAccounts count] > 0) 
     { 
      ACAccount *twitterAccount = 
      [arrayOfAccounts lastObject]; 

//
// NSURL * свертывать = [NSURL fileURLWithPath: NSTemporaryDirectory()]; // NSURL * fileURL = [furl URLByAppendingPathComponent: @ "animation.gif"];

   NSData *imageData = [NSData dataWithContentsOfURL:_GIFURL]; 

       NSURL *requestURL = [NSURL URLWithString:@"https://upload.twitter.com/1.1/media/upload.json"]; 

      SLRequest *postRequest = [SLRequest 
             requestForServiceType:SLServiceTypeTwitter 
             requestMethod:SLRequestMethodPOST 
             URL:requestURL parameters:nil]; 

      postRequest.account = twitterAccount; 

      [postRequest addMultipartData:imageData 
            withName:@"media" 
             type:@"image/gif" 
            filename:@"test.gif"]; 

      [postRequest 
       performRequestWithHandler:^(NSData *responseData, 
              NSHTTPURLResponse *urlResponse, NSError *error) 
       { 


        NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:nil]; 

        NSString *mediaID = [json objectForKey:@"media_id_string"]; 


        if (mediaID!=nil) { 


         NSURL *requestURL2 = [NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/update.json"]; 
         NSDictionary *message2 = @{@"status": @"Here is the image", 
               @"media_ids": mediaID }; 

         SLRequest *postRequest2 = [SLRequest 
               requestForServiceType:SLServiceTypeTwitter 
               requestMethod:SLRequestMethodPOST 
               URL:requestURL2 parameters:message2]; 
         postRequest2.account = twitterAccount; 

         [postRequest2 
         performRequestWithHandler:^(NSData *responseData, 
                NSHTTPURLResponse *urlResponse, NSError *error) 
         { 
          // DONE!!! 

          UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Notification" message:@"Upload Twitter Account" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
          [alert show]; 


         }]; 

        } 

       }]; 
     } 
    } 
}]; 

}