Apple TV Build - CloudKit plugin written in Obj-C & Swift, with C# wrapper, gives Error 1 "Response-Not-Possible"

17 Views Asked by At

To build my already working app for Apple TV, I wrote a plugin in Obj-C and Swift, and created a C# wrapper for Unity. The wrapper I added to Unity and the m and h plugin files I added to Xcode as developer assets. The app worked fine but the save to iCloud did not. I got the following error:

Snapshot request 0x2832627c0 complete with error: <NSError: 0x28324b2a0; domain: BSActionErrorDomain; code: 1 ("response-not-possible")>

CloudKit plugin.m:

CloudKitPlugin.m

#import "CloudKitPlugin.h"

@implementation CloudKitPlugin

+ (void)initCloudKit {
#import "CloudKitPlugin.h"
  let cloudStoreLocation = URL(fileURLWithPath: “iCloud.com.BevvyOfFun.LandonsHopeQuest”)
    let cloudStoreDescription =
   NSPersistentStoreDescription(url: cloudStoreLocation)
    cloudStoreDescription.configuration = "Cloud"
cloudStoreDescription.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: “com.BevvyOfFun.LandonsHopeQuest.container”)
     let options = NSPersistentCloudKitContainerSchemaInitializationOptions()
    try? container.initializeCloudKitSchema(options: options)
return container
}

+ (void)performCloudKitOperation {
    lazy var persistentContainer: NSPersistentCloudKitContainer = {
   let container = NSPersistentCloudKitContainer(name: “iCloud.com.BevvyOfFun.LandonsHopeQuest”)
    
   container.loadPersistentStores(completionHandler: { })
    
    let options = NSPersistentCloudKitContainerSchemaInitializationOptions()
    try? container.initializeCloudKitSchema(options: options)
            
    return container
}()

}

@end
if(container != null)
{
container.initializeCloudKitSchema(options: options)
return container
}

CloudKit plugin.h:

tyCloudKitPlugin.h
@import Foundation
@import CloudKit

@interface CloudKitPlugin : NSObject

+ (void)initCloudKit;
+ (void)performCloudKitOperation;

@end

CloudKit Wrapper:

// CloudKitWrapper.cs
using UnityEngine;
using System.Runtime.InteropServices;

public class CloudKitWrapper : MonoBehaviour
{

    [DllImport("__Internal")]
    private static extern void initCloudKit();

    [DllImport("__Internal")]
    private static extern void performCloudKitOperation();

    public static void InitCloudKit()
    {
#if UNITY_IOS && !UNITY_EDITOR
        initCloudKit();
#endif
    }

    public static void PerformCloudKitOperation()
    {
#if UNITY_IOS && !UNITY_EDITOR
        performCloudKitOperation();
#endif
    }
}

I have already set up the CloudKit Container and added it to Xcode. I expected the project to save to iCloud but this did not happen. Help!

0

There are 0 best solutions below