我想我的应用程序出现在UIActivityViewControllerfor text中,在其他应用程序中.例如,从Notes应用程序共享时,如下所示.

将以下内容添加到Info.plist中不会产生任何可见结果(在Notes,Evernote和Simplenote中):
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string>icon-text-57.png</string>
<string>icon-text-72.png</string>
<string>icon-text-114.png</string>
</array>
<key>CFBundleTypeName</key>
<string>Text</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>LSItemContentTypes</key>
<array>
<string>public.text</string>
<string>public.plain-text</string>
<string>public.utf8-plain-text</string>
<string>public.utf16-external-plain-?text</string>
<string>public.utf16-plain-text</string>
<string>public.rtf</string>
</array>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud)
这可能吗?怎么样?
我正在尝试使用a UIActivityViewController来共享音频文件(.aac).它是我写入沙盒文档目录的临时文件.
我NSURL在initWithActivityItem:方法中传递了一个.
[audioData writeToFile:[urlToAudioFile path] options:NSDataWritingFileProtectionNone error:&error];
UIActivityViewController *activity = [[UIActivityViewController alloc] initWithActivityItems:@[urlToAudioFile] applicationActivities:nil];
[self.view.window.rootViewController presentViewController:activity animated:YES completion:^{
...
}];
Run Code Online (Sandbox Code Playgroud)
当我按下分享按钮时,它需要几秒钟,弹出活动表,唯一的选项是Airdrop.
如何才能显示电子邮件或iMessage等其他选项?是否有回调方法,以便我可以确定"共享"何时完成,以便我可以再次删除临时文件?
有没有办法让我添加音频文件而不必先将其写入磁盘?我不能以某种方式只是传递NSData对象?
在我的UIActivityViewController中,我使用完成处理程序来执行"成功共享"通知.它可以工作,但我唯一的问题是,如果用户按下取消,它仍会显示通知.
这是我的完成处理程序代码,
[controller setCompletionHandler:^(NSString *activityType, BOOL completed) {
CWStatusBarNotification *notification = [CWStatusBarNotification new];
[notification displayNotificationWithMessage:@"? Successfully Shared Centre!"
forDuration:3.0f];
notification.notificationLabelBackgroundColor = [UIColor colorWithRed:38.0f/255.0f green:81.0f/255.0f blue:123.0f/255.0f alpha:1.0f];
notification.notificationLabelTextColor = [UIColor whiteColor];
}];
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
我正在开发应用程序的一部分,以便当您点按分享按钮时,它可以让您立即分享您的高分榜的屏幕截图以及消息.我无法制作/分享屏幕截图,当我点击分享按钮时,应用程序只允许我复制我的默认文本或"邮件"我的默认文本,不允许我发布到Facebook,Twitter,消息, 和更多.
func shareButtonPress() {
var postPhrase = "Just hit \(highscore)! Beat it! #SwypIt"
//Generate the screenshot
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
var image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
var postImage = UIImage(named: "\(image)")
var activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [postPhrase, postImage!], applicationActivities: nil)
self.presentViewController(activityViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
解决这个问题的最佳方式是什么?谢谢!
当在这个应用程序中在iPhone上调用UIActivityViewController时,它可以很好地工作,但是当在iPad上调用时,应用程序崩溃了.以下是我使用的代码:
func shareButtonPress() {
//when the share button is pressed, default share phrase is added, cropped image of highscore is added
var sharingItems = [AnyObject]()
var shareButtonHighscore = NSUserDefaults.standardUserDefaults().objectForKey("highscore") as Int!
sharingItems.append("Just hit \(shareButtonHighscore)! Beat it! #Swath")
UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0);
self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
var image:UIImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
sharingItems.append(image)
let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil)
var barButtonItem: UIBarButtonItem! = UIBarButtonItem()
activityViewController.excludedActivityTypes = [UIActivityTypeCopyToPasteboard,UIActivityTypeAirDrop,UIActivityTypeAddToReadingList,UIActivityTypeAssignToContact,UIActivityTypePostToTencentWeibo,UIActivityTypePostToVimeo,UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,UIActivityTypePostToWeibo]
self.presentViewController(activityViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在Swift中编程,在SpriteKit框架中,我不明白为什么应用程序崩溃.
我收到此错误:
Terminating app due to uncaught exception 'NSGenericException', reason: …Run Code Online (Sandbox Code Playgroud) 我想使用UIActivityViewController分享简单的文本我使用swift,使用xcode 6.3代码非常简单,非常适合照片,但不仅仅是文本,我不想包含任何带有objectsToShare的web URL,只是干净的文本这是代码:
var objectsToShare: ["some text to share"]!
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
//handler for completed task
activityVC.completionHandler = {(activityType, completed:Bool) in
if !completed {
println("cancelled")
return
}
reportCompleted() //report to server it's done.
}
//Excluded Activities Code
activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeCopyToPasteboard ]
//activate the share view
self.presentViewController(activityVC, animated: true, completion: {
(complete) in
println(complete)
})
Run Code Online (Sandbox Code Playgroud)
现在我知道这一切都取决于用户有Facebook - 不仅在他的手机上,而且在他的设置上.(我直接从我的手机6尝试了这个,它有Facebook设置,而不是来自模拟器)这个代码曾经工作正常,仍然适用于图像,而不是文本,但由于某种原因,它停止工作文本共享,也许文本本身有关,也许我的代码不好,或者Facebook,改变一些东西.
感谢您对此主题的任何想法.
为了让事情更奇怪,我发现了两件更奇怪的事情.
//有效的代码:
var myWebsite = NSURL(string: "http://www.someurl.com/")
let textToShare = "Swift is awesome! Check …Run Code Online (Sandbox Code Playgroud) 我正在使用我的应用程序中的共享选项UIActivityViewController; 它在iOS 9.2中工作正常,并且Google+共享选项在iOS 9.3中无效
为了确认这一点,我已经下载了其他具有共享选项的应用程序,UIActivityViewController问题是应用程序的整个UI都挂了.
我该如何解决这个问题?
编辑1: 代码:
NSURL * URL = [[NSURL alloc]initWithString:@"http://domainName/message.php?"];
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:URL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"GET"];
NSString *tempEmailId = (NSString *)[[NSUserDefaults standardUserDefaults] objectForKey:CURRENT_USER_EMAIL_ID_UD_KEY];
NSString *tempPassword = (NSString *)[[NSUserDefaults standardUserDefaults] objectForKey:CURRENT_USER_PASSWORD_UD_KEY];
NSString *basicAuthCredentials = [NSString stringWithFormat:@"%@:%@", tempEmailId, tempPassword];
[request setValue:[NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)] forHTTPHeaderField: @"Authorization"];
//NSLog(@"request %@\n",request);
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (data != nil) {
NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSArray …Run Code Online (Sandbox Code Playgroud) 我正在UIActivityViewController不同的社交媒体上分享图片,视频和LivePhoto .
但是当我在WhatsApp上分享LivePhoto时,会发生以下情况:
ActivityViewController完成处理程序打印错误时,它打印如下:[core] SLComposeViewController remoteViewController:didTerminateWithError:Error Domain = _UIViewServiceInterfaceErrorDomain Code = 3"(null)"UserInfo = {Message = Service Connection Interrupted} [core] SLComposeViewController completeWithResult:0 [core] SLComposeViewController跳过显式dismiss,因为isBeingDismissed已经是1 SLComposeViewController dealloc
I have tried with this code :
PHImageManager.default().requestImageData(for: selectedAsset, options: nil, resultHandler: { (imgData, str, image, info) in
activityItems.append(imgData!)
let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
activityViewController.completionWithItemsHandler = {(activityType: UIActivityType?, completed: Bool, returnedItems:[Any]?, …Run Code Online (Sandbox Code Playgroud) objective-c ios uiactivityviewcontroller swift3 apple-live-photos
我有一个使用的tableView,UIActivityViewController因此用户可以在其他第三方网络Facebook,Twitter,短信等上共享内容.我有一个被调用的函数IncreaseShareByOne(),它的目的是计算共享内容的次数.我的问题是,现在每次UIActivityViewController点击时都会触发功能.在某种程度上,我可以找出用户是否真的共享某些内容,以便我可以正确使用该功能?变得有时你打开UIActivityViewController并决定不分享任何东西,所以我想抓住而不是使用那个功能.我是swift的新手,正在使用版本3.
func sharedShareAction(controller: UIViewController, sender: UIButton) {
controller.present(activityViewController,animated: true,completion: nil)
IncreaseShareByOne()
}
Run Code Online (Sandbox Code Playgroud) 我正在使用UIActivityViewController共享webview网址iOS 11和使用时Copy然后转到消息应用然后粘贴,它被粘贴两次.
出于好奇,我尝试使用Safari,Chrome,Firefox以及除消息之外的其他应用程序.结果很有趣:
这是我的简单代码
func shareURL(title: String, url: URL) {
var activityItems = [AnyObject]()
activityItems.append(TitleActivityItemProvider(title: title))
activityItems.append(url as AnyObject)
let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
这是TitleActivityItemProvider班级
class TitleActivityItemProvider: UIActivityItemProvider {
static let activityTypesToIgnore = [UIActivityType.copyToPasteboard]
init(title: String) {
super.init(placeholderItem: title)
}
override var item : Any {
if let activityType = activityType {
if TitleActivityItemProvider.activityTypesToIgnore.contains(activityType) {
return NSNull()
}
}
return placeholderItem! as …Run Code Online (Sandbox Code Playgroud) ios ×7
swift ×4
swift3 ×3
crash ×1
facebook ×1
google-plus ×1
info.plist ×1
ios11 ×1
ios7 ×1
ios8 ×1
ios8.4 ×1
objective-c ×1
screenshot ×1
share ×1
sharing ×1
sprite-kit ×1
uti ×1