实现目标的一种方法是使用MessageUI
框架来显示MFMessageComposeViewController
GIF,并将 GIF 作为附件添加。使用这种方法,您永远不必将用户切换到 Messages 应用程序——这一切都在您自己的应用程序中完成。这是你如何做到的。
第一步是将以下框架添加到您的项目中:
- MessageUI.framework
- MobileCoreServices.framework
在您的视图控制器中,添加以下导入:
#import <MessageUI/MessageUI.h>
#import <MobileCoreServices/UTCoreTypes.h>
接下来,为 定义属性MFMessageComposeViewController
:
@property (nonatomic, strong) MFMessageComposeViewController *messageController;
我们正在定义一个属性,以便我们Cancel
稍后可以处理用户在 MMS 视图中的点击。
在视图控制器中viewDidLoad
,添加:
self.messageController = [[MFMessageComposeViewController alloc] init];
self.messageController.messageComposeDelegate = self;
你希望你的sendSMS
方法看起来像这样:
- (IBAction)sendSMS:(UIButton *)sender
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSData *gifData = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
if ([MFMessageComposeViewController canSendText]) {
[self.messageController addAttachmentData:gifData typeIdentifier:(__bridge NSString *)kUTTypeGIF filename:@"animated.gif"];
dispatch_async(dispatch_get_main_queue(), ^{
[self presentViewController: self.messageController animated:YES completion:NULL];
});
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
});
}
在此方法中,GIF 在后台下载并分配给gifData
. gifData
然后将其作为附件添加到消息编写器视图,并将编写器视图显示给用户。
当用户发送彩信或点击Cancel
按钮时,messageComposeViewController:didFinishWithResult:
被调用。在该方法中,您需要关闭消息编写器模式视图:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[self.smsComposer dismissViewControllerAnimated:YES completion:NULL];
}
参数将result
是MessageComposeResultCancelled
、MessageComposeResultSent
或MessageComposeResultFailed
取决于用户所做的事情。