2015-09-18 10 views
11

Ich habe eine Aufgabe, Daten zwischen Apps auf dem gleichen Gerät zu teilen. Möglicherweise können beide Apps eine gemeinsame Datenbank auf demselben Gerät verwenden. So teilen Sie Daten zwischen zwei Apps in IOS. Jeder hat es in irgendeiner Weise getan. Bitte lassen Sie es mich wissen. DankeFreigabe von Daten zwischen Apps in IOS

+0

Check out [Link] (http://www.enharmonichq.com/sharing-data-locally-between-ios-apps/). Es basiert auf Objective-C, aber das gleiche Konzept gilt immer noch. –

+0

@ Phoen1xUK Ich denke, dieser Artikel ist veraltet, seit iOS 8, App-Gruppen sind die offizielle Möglichkeit, es zu tun. – neuhaus

+0

Ich spreche über App-Gruppen. hast du das umgesetzt? – Abhishek

Antwort

23

Sie können die App-Gruppe auf Ihrem Tab "App Project Capabilities" in Ihren Apps mit derselben Gruppencontainer-ID aktivieren. „Group.com.yourCompanyID.sharedDefaults“

enter image description here

Dann können Sie den gleichen Ordner aus Ihren Apps Zugriff auf die folgende URL ein:

let sharedContainerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.yourCompanyID.sharedDefaults")! 

Also, wenn Sie möchten, einen Schaltzustand teilen aus zwei verschiedenen Anwendungen sollten Sie es wie folgt tun:

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet weak var sharedSwitch: UISwitch! 
    let switchURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.yourCompanyID.sharedDefaults")! 
     .appendingPathComponent("switchState.plist") 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     print(switchURL.path) 
     NotificationCenter.default.addObserver(self, selector: #selector(updateSwitch), name: .UIApplicationDidBecomeActive, object: nil) 
    } 
    func updateSwitch(_ notofication: Notification) { 
     sharedSwitch.isOn = NSKeyedUnarchiver.unarchiveObject(withFile: switchURL.path) as? Bool ?? false 
    } 
    @IBAction func switched(_ switch: UISwitch) { 
     let success = NSKeyedArchiver.archiveRootObject(switch.isOn, toFile: switchURL.path) 
     print(success) 
    } 
}