所以我让我的应用程序创建了一个文件,在这种情况下它实际上是一个动画.gif文件。这个动画的.gif文件保存在设备上,随时可以使用 - 我现在要做的就是在用户点击“分享”按钮时共享此文件。
简单地说,我怎样才能做到这一点?
有没有办法告诉iOS打开共享窗口并且我正在共享图像?现在我找不到办法做到这一点,所以我正在创建一个新的 UIImage ,并在设备上创建一个动画.gif的路径,但最终将我的动画文件转换为静态图像。
再次 - 我已经创建并保存在用户设备上的动画.gif文件。
任何帮助表示感谢。
编辑:为了澄清,我已经习惯了Android,我只是打算分享一个文件并弹出一个Gmail,Facebook,Twitter等等的列表......我基本上想要相当于那个,如果可能的话。
答案 0 :(得分:1)
您可能需要查看UIActivityViewController文档。这将打开一张表,其中包含可在设备上共享的所有方式。见https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIActivityViewController_Class/index.html#//apple_ref/doc/uid/TP40011976-CH1-SW2。您可能希望使用images或UIActivityItemSource
初始化ActivityViewController答案 1 :(得分:0)
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];
}];
}
}];
}
}
}];
}