How to determine the runtime of CloudKit?

Is there a software way to find out if my application is talking to the CloudVit development area or production?

(I know that I can take a look at the key com.apple.developer.icloud-container-environmentin Entitlements.plist to make a reasonable guess, but this is actually not a very simple environment in which I use.)

+4
source share
3 answers

I can come up with two ways to do this:

  • recordType . , 1 , , . . , , .

  • , , : recordType. , . .

+2

CloudKit JS docs , "", , . , , , . , :

    let container = CKContainer(identifier: kContainerName)
    let containerDescription = String(describing: container)
    if containerDescription.contains("containerEnvironment=\"Sandbox\"") {
        showTestMode()  // or whatever you want to do differently
    }
0

CKContainer. .

extension CKContainer {
    public var isProductionEnvironment:Bool {
        let containerID = self.value(forKey: "containerID") as! NSObject // CKContainerID
        return containerID.value(forKey: "environment")! as! CLongLong == 1
    }
}

@garafajon. Runtime iOS (, https://github.com/JaviSoto/iOS10-Runtime-Headers), , CKContainerID, .

:

let container = CKContainer.default()
let containerID = container.value(forKey: "containerID") as! NSObject // CKContainerID
let environment = containerID.value(forKey: "environment")!
print("\(container)")
print("\(containerID)")
print("\(environment)")

com.apple.developer.icloud-container-environment= Production:

<CKContainer: 0x60800017a040; containerID=<CKContainerID: 0x608000232ea0; containerIdentifier=iCloud.com.yourdomain.yourapp, containerEnvironment="Production">>
<CKContainerID: 0x608000232ea0; containerIdentifier=iCloud.com.yourdomain.yourapp, containerEnvironment="Production">
1

com.apple.developer.icloud-container-environment= Development:

<CKContainer: 0x60800017a1c0; containerID=<CKContainerID: 0x618000035360; containerIdentifier=iCloud.com.yourdomain.yourapp, containerEnvironment="Sandbox">>
<CKContainerID: 0x618000035360; containerIdentifier=iCloud.com.yourdomain.yourapp, containerEnvironment="Sandbox">
2
0

Source: https://habr.com/ru/post/1606468/


All Articles