Created
October 17, 2017 13:16
-
-
Save Callonski/d3d18de1ab480f111aac790fa7b74b78 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Userdefaults group | |
let defaults = UserDefaults(suiteName: "group.sharing")! | |
if(defaults.object(forKey: "sharedUrl") != nil) | |
{ | |
urlLabel.text = defaults.string(forKey: "sharedUrl") | |
} | |
// Share | |
@IBAction func letsShare(_ sender: AnyObject) { | |
let shareText = "Website to find stuff" | |
let shareWebsite = URL(string: "http://www.google.com") | |
let shareImage = UIImage(named:"frog.jpg") | |
//var imageArray : [UIImage] = [shareImage!] | |
let shareObject : [AnyObject] = [shareText as AnyObject, shareWebsite! as AnyObject, shareImage! as AnyObject] | |
let activityVC = UIActivityViewController(activityItems: shareObject, applicationActivities: nil) | |
activityVC.excludedActivityTypes = [UIActivityType.airDrop] | |
self.present(activityVC, animated: true, completion: nil) | |
} | |
// Share extension | |
import UIKit | |
import Social | |
import MobileCoreServices | |
//class ShareViewController: SLComposeServiceViewController { | |
class ShareViewController: UIViewController { | |
@IBOutlet weak var shareTextLabel: UILabel! | |
@IBOutlet weak var shareUrlLabel: UILabel! | |
@IBOutlet weak var shareImageview: UIImageView! | |
var shareText : String? | |
var shareUrl : String? | |
var shareImage : UIImage? | |
override func viewDidLoad() { | |
let content = extensionContext!.inputItems[0] as! NSExtensionItem | |
let contentTypeImage = kUTTypeImage as String | |
let contentTypeText = kUTTypeText as String | |
let contentTypeUrl = kUTTypeURL as String | |
for attachment in content.attachments as! [NSItemProvider] { | |
if attachment.hasItemConformingToTypeIdentifier(contentTypeUrl) { | |
attachment.loadItem(forTypeIdentifier: contentTypeUrl, options: nil) { data, error in | |
if error == nil { | |
var someData = data as! NSURL | |
print(someData.absoluteString) | |
DispatchQueue.main.async(execute: { | |
self.shareUrlLabel.text = someData.absoluteString | |
}) | |
self.shareUrl = someData.absoluteString | |
} else { | |
// ERROR | |
} | |
} | |
} | |
if attachment.hasItemConformingToTypeIdentifier(contentTypeText) { | |
attachment.loadItem(forTypeIdentifier: contentTypeText, options: nil) { data, error in | |
if error == nil { | |
var someText = data as! String | |
print(someText) | |
DispatchQueue.main.async(execute: { | |
self.shareTextLabel.text = someText | |
}) | |
self.shareText = someText | |
} else { | |
// ERROR | |
} | |
} | |
} | |
if attachment.hasItemConformingToTypeIdentifier(contentTypeImage) { | |
attachment.loadItem(forTypeIdentifier: contentTypeImage, options: nil) { data, error in | |
if error == nil { | |
let someUrl = data as? URL | |
let someData = data as? Data | |
if(someUrl != nil) | |
{ | |
print(someUrl!.absoluteString) | |
let sharedImage = UIImage(data: try! Data(contentsOf: someUrl!)) | |
self.shareImage = sharedImage | |
DispatchQueue.main.async(execute: { | |
self.shareImageview.image = sharedImage | |
}) | |
} | |
if(someData != nil) | |
{ | |
let sharedImage = UIImage(data: someData!) | |
DispatchQueue.main.async(execute: { | |
self.shareImageview.image = sharedImage | |
}) | |
} | |
} else { | |
// ERROR | |
} | |
} | |
} | |
} | |
} | |
func didSelectPost() { | |
print("didSelectPost") | |
// This is called after the user selects Post. Do the upload of contentText and/or NSExtensionContext attachments. | |
let content = extensionContext!.inputItems[0] as! NSExtensionItem | |
let contentTypeImage = kUTTypeImage as String | |
let contentTypeText = kUTTypeText as String | |
let contentTypeUrl = kUTTypeURL as String | |
for attachment in content.attachments as! [NSItemProvider] { | |
print(attachment.registeredTypeIdentifiers) | |
if attachment.hasItemConformingToTypeIdentifier(contentTypeText) { | |
attachment.loadItem(forTypeIdentifier: contentTypeText, options: nil) { data, error in | |
if error == nil { | |
var someText = data as! String | |
print(someText) | |
let defaults = UserDefaults(suiteName: "group.pia6")! | |
defaults.set(someText, forKey: "sharedText") | |
defaults.synchronize() | |
} else { | |
// ERROR | |
} | |
} | |
} | |
if attachment.hasItemConformingToTypeIdentifier(contentTypeImage) { | |
attachment.loadItem(forTypeIdentifier: contentTypeImage, options: nil) { data, error in | |
if error == nil { | |
var someData = data as! NSData | |
print(someData.length) | |
} else { | |
// ERROR | |
} | |
} | |
} | |
if attachment.hasItemConformingToTypeIdentifier(contentTypeUrl) { | |
attachment.loadItem(forTypeIdentifier: contentTypeUrl, options: nil) { data, error in | |
if error == nil { | |
var someData = data as! NSURL | |
print(someData.absoluteString) | |
let defaults = UserDefaults(suiteName: "group.pia6")! | |
defaults.set(someData.absoluteString, forKey: "sharedUrl") | |
defaults.synchronize() | |
} else { | |
// ERROR | |
} | |
} | |
} | |
} | |
// Inform the host that we're done, so it un-blocks its UI. Note: Alternatively you could call super's -didSelectPost, which will similarly complete the extension context. | |
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil) | |
} | |
func configurationItems() -> [Any]! { | |
// To add configuration options via table cells at the bottom of the sheet, return an array of SLComposeSheetConfigurationItem here. | |
return [] | |
} | |
@IBAction func cancelShare(_ sender: AnyObject) { | |
let userInfo = [NSLocalizedDescriptionKey : "User cancelled"] | |
let error = NSError(domain: "Extension", code: -1, userInfo: userInfo) | |
extensionContext!.cancelRequest(withError: error) | |
} | |
@IBAction func postShare(_ sender: AnyObject) { | |
if(shareText != nil) | |
{ | |
let defaults = UserDefaults(suiteName: "group.pia6")! | |
defaults.set(shareText, forKey: "sharedText") | |
defaults.synchronize() | |
} | |
if(shareUrl != nil) | |
{ | |
let defaults = UserDefaults(suiteName: "group.pia6")! | |
defaults.set(shareUrl, forKey: "sharedUrl") | |
defaults.synchronize() | |
} | |
extensionContext!.completeRequest(returningItems: [], completionHandler: nil) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment