Post

Replies

Boosts

Views

Activity

The recommended way of handling CoreData+CloudKit errors
What is the recommended way of intercepting and processing errors? As far as I know, there are 4 main areas: iCloud account status - this can be checked and intercepted via notifications exceptions from fetch/execute/save - it can be a simple do..catch, but what exceptions can we expect here, what should be handled, and how? there could be some asynchronous issues with synchronization. How should we intercept them and how should they be handled? issues with iCloud storage - quota exceeded, etc. How to intercept & handle those? I'm trying to achieve production-ready implementation, but there are many pitfalls and hidden issues that are not well documented. Could you provide some advice on how to handle properly all these situations?
3
0
771
Aug ’24
Prevent wiping out all records when user disables iCloud sync for the app
Hello, I'm using NSPersistentCloudKitContainer. If the user disables iCloud sync for my app in the system settings and opens the app, all records are immediately wiped out, even if there are unsynced changes (like records added offline). Disabling iCloud sync doesn't even show any warning, so the user may lose all data (if it's not already synced to Cloud). Is it possible to intercept that the store will be wiped out when the app is launching? I would copy all records to the local storage then to avoid losing data by the user.
1
0
677
Aug ’24
CoreData + CloudKit synchronization is very unstable & unreliable
CloudKit sync is very unstable. Sometimes it just stops syncing for no reason, other times it works almost instantly. The core issue with synchronization is that CoreData relies mostly on two things: silent push notifications, which are by design unreliable and can be throttled user interactions, I noticed that the local database is updated most likely periodically and also based on some app events like entering the foreground. Unfortunately, there is no SDK function that allows us to force sync with CloudKit, which basically prevents us from providing some features to recover if a user encounters problems. After thousands of tests, I finally discovered what was wrong and how to make the synchronization stable. Basically, I noticed that at some point CoreData decides that it won't synchronize data unless you deactivate and activate the application, which is crazy. It's getting even worse if we talk about extensions like the keyboard extension on iOS. The same happens on all platforms. Therefore, knowing that I implemented a trick that happened to work perfectly. The workaround requires to periodically sending an event pretending that the app is going foreground. macOS: var cancellable = Set<AnyCancellable>() // ... Timer.publish(every: 20.0, on: RunLoop.main, in: .common) .autoconnect() .sink { _ in NotificationCenter.default.post(.init(name: NSApplication.willBecomeActiveNotification)) } .store(in: &cancellable) iOS: var cancellable = Set<AnyCancellable>() // ... Timer.publish(every: 20.0, on: RunLoop.main, in: .common) .autoconnect() .sink { _ in NotificationCenter.default.post(.init(name: UIApplication.didBecomeActiveNotification)) } .store(in: &cancellable) After that, everything works perfectly. Pitty that the solution mostly meant for enterprise is so unstable and there is not even a single SDK function to recover from that (force sync). Any plans to fix CoreData+CloudKit? I also created a ticket: #FB14531806.
2
5
1.6k
Aug ’24
How to ensure fast synchronization between devices using iCloud Database?
For a long time, I've been using just a shared file via iCloud to ensure synchronization between devices. It works very well, everything is synchronized within seconds. However, I started encountering issues with race conditions, especially if there are more than 2 devices updating data. It's easy then to override the database accidentally. That's why I decided to try with the tool that is designed for that: iCloud Database. However, I quickly realized that the performance was extremely low. As I understand, the recommended approach to listen to changes in the database is to create a subscription, and I did that. However, during my tests, I discovered that it can take even 10 or more minutes to get that notification. It's unacceptable, some user could be waiting for new changes on their device. I could of course spam with fetch every 10 seconds (using changeToken), but I'm not sure if it's a good idea. I could also provide manual fetch like pull to refresh or something like that, but automatic synchronization would be much better for the user.
2
0
777
Jul ’24
I can't update macOS Sequoia Beta installed on SSD to the latest release
I installed macOS Sequoia Beta 1 on external SSD and I boot it on my MacBook Pro. I changed my startup disk in Settings to point SSD and I install update via "Software Update". The file is downloaded then my computer restarts and it takes around ~20 seconds to install everything, but once the macOS is started, I see that I've got still Beta 1. I tried also to download the full installer and repeat the process but with the same result. It looks like everything is installed correctly, but once the system is launched, it's still the old macOS version. Any idea how to update the system on my SSD?
0
2
1.2k
Jul ’24
Incorrect macOS app icon size
I created my macOS app icon using the resources provided on the website for macOS Sonoma (Production Templates): https://developer.apple.com/design/resources/ However, when I check my app icon on the App Store, it has an incorrect size. Although, it is presented correctly in the Dock. Any ideas on how to fix that? Should I export the icon without padding that is by default set for the export? I used the Sketch template. I also reported it using Feedback Assistant: #FB13811586
3
0
1.2k
May ’24
Why is it not possible to provide a free trial for paid apps?
My application uses "paid" monetization model. I think in the productivity category it works quite well. However, when I advertise my application, 50% of the questions are: "is there a free trial?" and I would love to provide a free trial to potential customers, but the App Store doesn't allow me to do that. I don't understand why this feature is not available. I even started considering migration to in-app purchases, but it's quite a big deal. I managed to establish quite a good profit and I'm worried how it would affect my positioning and results. On top of that, I really like the paid up-front model, because it solves many issues and doesn't need any extra implementation on my side. I'm starting this thread to hear what you think about that and how many people are looking for this feature. I also created a feature request in Feedback Assistant: #FB13810170
1
0
940
May ’24
The recommended way of handling CoreData+CloudKit errors
What is the recommended way of intercepting and processing errors? As far as I know, there are 4 main areas: iCloud account status - this can be checked and intercepted via notifications exceptions from fetch/execute/save - it can be a simple do..catch, but what exceptions can we expect here, what should be handled, and how? there could be some asynchronous issues with synchronization. How should we intercept them and how should they be handled? issues with iCloud storage - quota exceeded, etc. How to intercept & handle those? I'm trying to achieve production-ready implementation, but there are many pitfalls and hidden issues that are not well documented. Could you provide some advice on how to handle properly all these situations?
Replies
3
Boosts
0
Views
771
Activity
Aug ’24
Prevent wiping out all records when user disables iCloud sync for the app
Hello, I'm using NSPersistentCloudKitContainer. If the user disables iCloud sync for my app in the system settings and opens the app, all records are immediately wiped out, even if there are unsynced changes (like records added offline). Disabling iCloud sync doesn't even show any warning, so the user may lose all data (if it's not already synced to Cloud). Is it possible to intercept that the store will be wiped out when the app is launching? I would copy all records to the local storage then to avoid losing data by the user.
Replies
1
Boosts
0
Views
677
Activity
Aug ’24
UICloudSharingController for macOS?
Is there any version of UICloudSharingController available on macOS or do we need to handle it manually? How to manually configure a share and send an invitation from macOS?
Replies
0
Boosts
0
Views
610
Activity
Aug ’24
CoreData + CloudKit synchronization is very unstable & unreliable
CloudKit sync is very unstable. Sometimes it just stops syncing for no reason, other times it works almost instantly. The core issue with synchronization is that CoreData relies mostly on two things: silent push notifications, which are by design unreliable and can be throttled user interactions, I noticed that the local database is updated most likely periodically and also based on some app events like entering the foreground. Unfortunately, there is no SDK function that allows us to force sync with CloudKit, which basically prevents us from providing some features to recover if a user encounters problems. After thousands of tests, I finally discovered what was wrong and how to make the synchronization stable. Basically, I noticed that at some point CoreData decides that it won't synchronize data unless you deactivate and activate the application, which is crazy. It's getting even worse if we talk about extensions like the keyboard extension on iOS. The same happens on all platforms. Therefore, knowing that I implemented a trick that happened to work perfectly. The workaround requires to periodically sending an event pretending that the app is going foreground. macOS: var cancellable = Set<AnyCancellable>() // ... Timer.publish(every: 20.0, on: RunLoop.main, in: .common) .autoconnect() .sink { _ in NotificationCenter.default.post(.init(name: NSApplication.willBecomeActiveNotification)) } .store(in: &cancellable) iOS: var cancellable = Set<AnyCancellable>() // ... Timer.publish(every: 20.0, on: RunLoop.main, in: .common) .autoconnect() .sink { _ in NotificationCenter.default.post(.init(name: UIApplication.didBecomeActiveNotification)) } .store(in: &cancellable) After that, everything works perfectly. Pitty that the solution mostly meant for enterprise is so unstable and there is not even a single SDK function to recover from that (force sync). Any plans to fix CoreData+CloudKit? I also created a ticket: #FB14531806.
Replies
2
Boosts
5
Views
1.6k
Activity
Aug ’24
How to ensure fast synchronization between devices using iCloud Database?
For a long time, I've been using just a shared file via iCloud to ensure synchronization between devices. It works very well, everything is synchronized within seconds. However, I started encountering issues with race conditions, especially if there are more than 2 devices updating data. It's easy then to override the database accidentally. That's why I decided to try with the tool that is designed for that: iCloud Database. However, I quickly realized that the performance was extremely low. As I understand, the recommended approach to listen to changes in the database is to create a subscription, and I did that. However, during my tests, I discovered that it can take even 10 or more minutes to get that notification. It's unacceptable, some user could be waiting for new changes on their device. I could of course spam with fetch every 10 seconds (using changeToken), but I'm not sure if it's a good idea. I could also provide manual fetch like pull to refresh or something like that, but automatic synchronization would be much better for the user.
Replies
2
Boosts
0
Views
777
Activity
Jul ’24
I can't update macOS Sequoia Beta installed on SSD to the latest release
I installed macOS Sequoia Beta 1 on external SSD and I boot it on my MacBook Pro. I changed my startup disk in Settings to point SSD and I install update via "Software Update". The file is downloaded then my computer restarts and it takes around ~20 seconds to install everything, but once the macOS is started, I see that I've got still Beta 1. I tried also to download the full installer and repeat the process but with the same result. It looks like everything is installed correctly, but once the system is launched, it's still the old macOS version. Any idea how to update the system on my SSD?
Replies
0
Boosts
2
Views
1.2k
Activity
Jul ’24
Incorrect macOS app icon size
I created my macOS app icon using the resources provided on the website for macOS Sonoma (Production Templates): https://developer.apple.com/design/resources/ However, when I check my app icon on the App Store, it has an incorrect size. Although, it is presented correctly in the Dock. Any ideas on how to fix that? Should I export the icon without padding that is by default set for the export? I used the Sketch template. I also reported it using Feedback Assistant: #FB13811586
Replies
3
Boosts
0
Views
1.2k
Activity
May ’24
Why is it not possible to provide a free trial for paid apps?
My application uses "paid" monetization model. I think in the productivity category it works quite well. However, when I advertise my application, 50% of the questions are: "is there a free trial?" and I would love to provide a free trial to potential customers, but the App Store doesn't allow me to do that. I don't understand why this feature is not available. I even started considering migration to in-app purchases, but it's quite a big deal. I managed to establish quite a good profit and I'm worried how it would affect my positioning and results. On top of that, I really like the paid up-front model, because it solves many issues and doesn't need any extra implementation on my side. I'm starting this thread to hear what you think about that and how many people are looking for this feature. I also created a feature request in Feedback Assistant: #FB13810170
Replies
1
Boosts
0
Views
940
Activity
May ’24
Xcode Cloud - machines
What machines are used for Xcode Cloud builds? I couldn't find any information on that in the documentation. Is Xcode Cloud using M1/M2? Or is it going to use Apple CPU in the future?
Replies
4
Boosts
1
Views
3.1k
Activity
Sep ’23
Xcode Cloud - Bitbucket connection stopped working
Xcode Cloud is experiencing many problems with repository connection lately. Previously I had some issues with GitHub which disappeared after some time. And yesterday suddenly it stopped working with my Bitbucket repository. Now even if I try to add the repository again I always get 504 error: Why it is so unstable :(?
Replies
2
Boosts
1
Views
1k
Activity
Jun ’22