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!