iOS 11 Development Woes – Core Data Transformable Attribute Bug

I had to issue a warning for iOS 11, currently a serious bug in core data prevents my app from being used, and while trying to deal with it, it shows some serious problems with Apple’s developer support.

As with most things, I started blaming myself, I thought I’d made some error in the code somewhere so started out with a clean XCode project and tried to replicate the problem.

With the default Core Data setup, everything was working fine.So I spent many hours pulling my hair out till I identified the very specific problem causing my bug. And oh boy is it Apple’s fault, clearly documented supported feature not working. Reproducible in an XCode project barely modified from one of their templates.

I put the project on Github.

During all this I used the Apple developer forums, which are practically dead, my initial question brought no response, hardly unusual for apple dev forums, I always have better luck with stack overflow.

The question on Stackoverflow.

At least on stack overflow someone else confirms the problem, and gives some useful feedback, unlike the Apple dev forums, which have been almost zero help for me in the past apart from one openGL problem some kind Apple guy fixed for me.

After identifying the problem I raise a Bug Report with Apple, and this is where things get really frustrating. Apple do not ever acknowledge receiving bug reports, has it been looked at? I don’t know, has it been buried somewhere? Apple will not give any status.

I desperately need to escalate the bug, as all my users could lose their data, I call that a major bug. But there’s no way to contact dev support. They have a facility to get in depth code support, but guess what, pre release software is not supported, there’s support centres for your standard apple products, but no facility to contact Apple dev support. Apple reps are supposed to roam the Dev forums, but seem to studiously avoid commenting on any bugs users find.

So now I’m here getting increasingly worried, I keep trying to raise my question to the top of the dev forums, I tweet at Apple, I complain on the dev forums, my complaint gets moderated. This is a major issue for me, my app is well liked by users and Apple is going to wipe it off the store because they can’t fix a bug.

Even if I remodel my database to not use the supported feature, I still can’t open the previously supported and working datastores to migrate them. Even if I do it’s a huge amount of hassle to avoid using a supported feature!

Ugh, I’m working on solutions… More soon.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestShare on RedditEmail this to someone

Version 1.16 Out

Hope you all like the new update! I untethered you from the projector. The lock screen seemed like a good idea at the start, partly because I didn’t know how Apple would deal with my app for review, and I wanted to make it clear what the app did, and how it wouldn’t really work without a projector.

It does a lot more now than just simply projecting videos that it makes sense to be able to work without being connected to the projector, also I kept getting frustrated trying to show the app to people being interested in it, and not having a projector handy. Another issue is that people are buying it, and I’m so glad you are, and I it makes me feel apple will take it a little bit more seriously. The Reality Augmenter is a continually evolving app and I would love to hear your feedback BTW.

The layer geometry screen still needs some work, I’ll change it so you get full animation when not connected to the projector in the next couple of weeks. Currently it is still geared towards having the projector, and is deliberately low resource to draw quickly when connected and interfer as little as possible with the projected view. Obviously, if no projector is connected, that’s not an issue, just redoing the OpenGL for that part was going to need a rethink, and I figured you’d still like the new feature.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestShare on RedditEmail this to someone

Testing development completed and new version now out

Well it took a while but I finally completed testing development, not that such a thing is always complete, but now my app is covered by many, many more tests. Split into UI and unit tests, it should cover nearly all the functionality of the app, meaning I’m less likely to forget some aspect of my app before releasing to everyone.

This all became necessary as my app grew more and more complex from it’s initial basic functions, and I have even more complex features to come, it’s important that all the basics work with every release, and as a developer, I’m always more excited about my new features and it’s easy to forget some of my earlier work!

You can see my automated GUI tests in this video, covering nearly all the functions available to the user tested in various ways. The video has been sped up 3x as the full GUI test run currently takes about 1/2 an hour.

I’m already working on the new version, I’m going to get rid of the lock screen that blocks access to the app without a projector connected. There’s so much more we can do without the projector now, it seems unnecessarily inconvenient. It’s a little more work than expected, the app has to respond to a projector being connected and disconnected in many more states, and how it reacts in each situation has to be considered.

Check back for more updates!

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestShare on RedditEmail this to someone

Testing continues

XCode screenshot

Testing continues, after finally getting my testing environment in a good state, I’ve added over 100 tests in the last week alone, significantly increasing code coverage.

I reckon I’ve probably got a week left to cover the rest of the code and we can get releasing new features again.

All this is necessary as I gain users, I want to ensure you all get the best product you can get, and that I don’t accidentally break features you use. It will also cut down time between releases as each change catches potential bugs at every step.

It’s been quite a big job, as well as setting up an automated environment, I’ve had to do quite a bit of code refactoring to expose more of the application to proper testing standards.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestShare on RedditEmail this to someone

Testing, testing, testing…..

I’ve been updating my testing environment to automate as much testing as possible, to eliminate simple bugs that have slipped through in the past, and make sure new features don’t interfere with existing functionality.

However, this is turning out to be a bigger job than I imagined, not so much writing the tests, but getting XCodes development environment work in tandem with the iOS simulator to setup different scenarios.

I’ve recently discovered simctl, which allows setting up custom simulators and adding media to a simulator, this is very useful as the default iOS simulator contains no videos to test with, and it used to require adding one manually, which is useless for automated testing. Now at least we can create simulators through the command line with preconfigured media, allowing me to better test videos for example, so that’s progress…. But I still have to remember and resurrect my command line and scripting skills, which have long been neglected. It’s been slow progress.

I run into other problems too, starting with what data the app starts with, what user defaults have been set etc, basically to replicate the app in any state and test it properly, none of it is easy to setuup in xcode and requires some rather ingenious hacks.

All in all, writing the tests is supported well in xcode, setting up the test environment is less than ideal though. I’m plodding through it, the next release will contain some minor bug fixes, then we’ll get stuck into some big new features.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestShare on RedditEmail this to someone

No posts for a while

Uhm, haven’t written anything here for a while, the last update seems pretty stable so in the run up to christmas I’ve been winding down a little. I’ve been improving testing, but nothing really significant has turned up so far, I’ll be improving the testing environment over the next couple of weeks to prepare the ground for more updates in the future. I doubt I’ll get a significant update out before Christmas so that’s it for the year, but plenty of new stuff to look forward to in the new year!

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestShare on RedditEmail this to someone

Latest update delay

Well, combination of things, summer’s been around so I’ve been taking a few days off by the lake, and I also went to the Zurich Open Air festival to see a bunch of bands I wanted to see for ages.

On top of that, I’m learning all about how to use web based APIs to add some functionality (you’ll be able to directly download vids from dropbox), it’s all a bit unfamiliar at the moment as I’m not dealt much with web based queried and JSON, but I’m picking it up quick, still I run into some unexpected problems here and there.

Rest assured, a new release will be released as soon as it’s ready, hopefully in the next week or two.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestShare on RedditEmail this to someone

Dev updates

I’m working on some new features, but it’s in an area I’m unfamiliar with, so I’m having to do a bit of learning and been down a few blind alleys. Once I get over the first hurdles I’ll be back in familiar territory, new updates soon.

EDIT: Further to this, I finally figured out how to get my OAuth tokens and am now figuring out the whole web APIs and JSON stuff for online cloud services. I found getting the token to be very confusing and poorly documented, but once I got access, using the APIs seems much simpler.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestShare on RedditEmail this to someone

Dev Update

Been a bit quiet the last couple of weeks haven’t I? Took some time off for the local Blue Balls festival here in Luzern (That is the real name, I’m unsure if the swiss were aware of the double entendre…).

Anyway, back to work this week and working on a new feature which should be pretty exciting, keep checking for updates!

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestShare on RedditEmail this to someone