如何与 iOS 共享文件?
Posted
技术标签:
【中文标题】如何与 iOS 共享文件?【英文标题】:How can I share a file with iOS? 【发布时间】:2014-10-16 22:17:13 【问题描述】:所以我让我的应用程序创建一个文件,在这种情况下它实际上是一个动画 .gif。此动画 .gif 已保存在设备上,一切就绪 - 我现在要做的是在用户单击“共享”按钮时共享此文件。
简单地说,我该如何做到这一点?
有没有办法告诉 ios 打开共享窗口并且我正在共享图像?现在我找不到这样做的方法,所以我正在创建一个新的 UIImage ,并在设备上使用此动画 .gif 的路径,但这最终会将我的动画文件转换为静态图片。
再说一遍 - 我已经在用户的设备上创建并保存了动画 .gif 文件。
任何帮助表示赞赏。
编辑:澄清一下,我已经习惯了 Android,我只是调用一个共享文件的意图,然后弹出一个 Gmail、Facebook、Twitter 等列表......我基本上想要如果可能的话,等价的。
【问题讨论】:
UIDocumentInteractionController
.
分享给什么?文件需要应用程序才能运行。命名一个。
看我已经习惯了 android,我只是调用一个共享文件的意图,然后弹出一个 Gmail、Facebook、Twitter 等列表......我基本上想要相当于如果可能的话。
【参考方案1】:
您可能想查看 UIActivityViewController 文档。这将打开一个工作表,其中包含可在设备上共享的所有方式。见这里https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIActivityViewController_Class/index.html#//apple_ref/doc/uid/TP40011976-CH1-SW2。您可能希望使用图像或 UIActivityItemSource 初始化 ActivityViewController
【讨论】:
看,谢谢你的回答,但这对我没有帮助。如果我不够清楚,我很抱歉,但虽然这是我想要的(为了分享),但我要问的是如何专门分享动画 .gif?在 Android 中,我所要做的就是指定文件的路径,说“这是一张图片”,然后调用共享意图。在 iOS 中,您似乎可以共享文本、URL 或 UIImage (即静态图像),至少我所看到的就是这些。【参考方案2】:Facebook 和 twitter 不支持 UIActivityViewController,仍然在这个仅使用有限的应用程序中。现在这段代码非常有用。
-(void)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 *furl = [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];
];
];
];
【讨论】:
以上是关于如何与 iOS 共享文件?的主要内容,如果未能解决你的问题,请参考以下文章
java.io 如何访问一个共享文件夹?(该文件夹有限制,我有相关账号)最好有举例...