2015-09-18 18 views
11

Mam zadanie udostępniania danych między aplikacjami na tym samym urządzeniu. Mogą być obie aplikacje mogą korzystać ze wspólnej bazy danych na tym samym urządzeniu. Jak udostępniać dane między dwiema aplikacjami na IOS. Ktoś zrobił to w jakikolwiek sposób. Proszę dać mi znać. DziękiUdostępnianie danych między aplikacjami w IOS

+0

Check out [link] (http://www.enharmonichq.com/sharing-data-locally-between-ios-apps/). Jest on oparty na Objective-C, ale wciąż obowiązuje ta sama koncepcja. –

+0

@ Phoen1xUK Myślę, że artykuł jest przestarzały, ponieważ iOS 8, grupy aplikacji są oficjalnym sposobem na to. – neuhaus

+0

Mam na myśli grupy aplikacji. czy to wdrożyłeś? – Abhishek

Odpowiedz

23

Możesz włączyć grupę aplikacji na karcie Możliwości projektu aplikacji w obu aplikacjach z tym samym identyfikatorem kontenera grupy. „group.com.yourCompanyID.sharedDefaults”

enter image description here

Następnie można uzyskać dostęp do tego samego folderu z aplikacji za pomocą następującego adresu URL:

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

Więc jeśli chcesz podzielić się stan przełącznika z dwóch różnych aplikacji, należy to zrobić następująco:

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) 
    } 
} 
Powiązane problemy