मैं एक तस्वीर शेयर विस्तार, जहां छवि संसाधित किया जाता है और हमारे मुख्य कार्यक्षमता शुरू हो रहा है का उपयोग करता है या किसी iOS एप्लिकेशन पर काम कर रहा हूँ ..आईओएस शेयर एक्सटेंशन दुर्घटनाओं जब आईओएस 11 स्क्रीनशॉट
से साझा करने पर सिम्युलेटर में फोटो का ऐप यह बहुत अच्छा काम करता है। मैंने फोटो के ऐप से डिवाइस पर चलाने का फैसला किया और यह भी बहुत अच्छा काम करता है, लेकिन जब मैं स्क्रीनशॉट करता हूं और आईओएस 11 के नए "क्विक स्क्रीनशॉट" से साझा करने का प्रयास करता हूं तो एक्सटेंशन क्रैश हो जाता है, कोई विचार?
एक्सटेंशन एक छवि लेता है, इसे सर्वर पर भेजता है, प्रतिक्रिया प्राप्त करता है और उस प्रतिक्रिया को प्रदर्शित करता है (सभी विस्तार में)। यह मुझे मैसेंजर के रूप में परेशान करता है और स्नैपचैट शेयर एक्सटेंशन अभी भी एक त्वरित स्क्रीनशॉट से एक्सेस करते समय काम करता है !!
एक्सकोड 9 मुझे शेयर एक्सटेंशन से कोई भी लॉग नहीं दे रहा है। यह ध्यान देने योग्य भी है कि मैं एक डेवलपर खाते का उपयोग कर रहा हूं जिसे हर बार डिवाइस पर ऐप इंस्टॉल करने पर मुझे "भरोसा" करने की आवश्यकता होती है।
कोड:
// App Group keys
let suiteName = "group.suite.id"
override func viewDidLoad() {
print("Styling views..")
styleViews()
print("Styled views")
print("Adding notifications..")
addNotifications()
print("Added notifications")
print("Fetching image..")
fetchSharedImage()
}
func styleViews(){
// Set up main view
mainView.layer.cornerRadius = 8
mainShadowView.addShadow()
// Set up views and buttons
// Code hidden, applies shadows etc.
// Code hidden, moves constraints of a view
}
func addNotifications(){
// Helps views tell their parent (this view controller) to navigate to another form
NotificationCenter.default.addObserver(forName: NotificationDisplayFetchedLink, object: nil, queue: nil){ notification in
// Handles user info in lambda block
guard let userInfo = notification.userInfo,
let link = userInfo["link"] as? String
else {
print("No userInfo found in notification")
return
}
self.displayResult(with: link)
}
}
func fetchSharedImage(){
// Make sure we have a valid extension item
if let content = extensionContext!.inputItems[0] as? NSExtensionItem {
let contentType = kUTTypeImage as String
// Verify the provider is valid
if let contents = content.attachments as? [NSItemProvider] {
// look for images
for attachment in contents {
if attachment.hasItemConformingToTypeIdentifier(contentType) {
attachment.loadItem(forTypeIdentifier: contentType, options: nil) { data, error in
let url = data as! URL
if let imageData = try? Data(contentsOf: url) {
self.selectedImage = UIImage(data: imageData)
DispatchQueue.main.async {
self.selectedImageView.layer.cornerRadius = 8
self.selectedImageView.image = self.selectedImage
}
self.makeWebRequest()
}
}
}
}
}
}
}
func makeWebRequest(){
let url = URL(string: "url.json")
let task = URLSession.shared.dataTask(with: url!) { data, response, error in
guard error == nil else {
return
}
guard let data = data else {
// Data is empty
return
}
let json = try! JSONSerialization.jsonObject(with: data, options: []) as! NSDictionary
guard let dict = json as? [String:Any] else { return }
let item = dict["item"]
guard let itemData = item as? [[String:Any]] else { return }
let link = itemData[0]["url"]
NotificationCenter.default.post(name: NotificationDisplayFetchedLink, object: nil, userInfo: [link: link!])
}
task.resume()
}
संपादित करें:
तो समाधान (के रूप में ओवेन झाओ ने कहा है) कि आईओएस 11 स्क्रीनशॉट संपादक रिटर्न एक UIImage, जबकि तरह तस्वीरें क्षुधा यूआरएल वापसी होगी है।
इस सुंदरता को संभालने का मेरा समाधान UIImage को सहेज रहा था या यूआईएम अस्थायी निर्देशिका (3 दिनों के बाद हटाया गया) में यूआईएममेज में डाला गया यूआरएल, और उसके बाद उस निर्देशिका में छवि के यूआरएल को शेयर एक्सटेंशन में वापस कर रहा था।
कृपया अपना कोड साझा करें जो आपने कोशिश की है – Krunal
एक्सटेंशन को शक्ति देने वाले कोड को दिखाने के लिए अपडेट किया गया .. – bluey31
क्या आप त्रुटि रेखा साझा कर सकते हैं .. यदि यह कंसोल में कोई त्रुटि संदेश प्रिंट नहीं कर रहा है, तो डीबग मोड का उपयोग करें और एक त्रुटि रेखा प्रदान करें (यह makeWebRequest() विधि में हो सकता है) – Krunal