MAS submission help

So I submitted my first MAS app, and it got rejected. I wasn’t surprised after hearing this is not uncommon. I’m happy to see they provide some comments on the errors. Apple apparently has found a bug. Trouble is, when I test the app out myself, I cannot recreate it.

First time the app runs, it will create an empty db and copy over a filled db into a folder in the Application Support folder. If the empty db is empty, a Setup Profile screen comes up first. If it contains data, the user is taken right to the program, bypassing the profile screen since there is already a profile. The Apple tester is saying after he created the initial user profile, restarted the computer, and opened the program again, it is asking to create the user profile again. I tried this on my own, but everytime I get back into the program, it bypasses the Profile screen as expected. Does anyone know what’s happening on Apple’s side? It sounds like for some reason, the db file is getting wiped after the app closes.

Two things that I wonder could be a culprit:

  1. I am creating the empty db file and adding the prefilled db file at App.Open. In the past, I’ve done this on my splashscreen.open. Is there a preferred method?
  2. I am wrapping and distributing the app via App Wrapper 3. When I first take the app.tar file and ‘unwrap’ it, and try running the program, I take a look in the ~/library/Application Support folder, and my new folder is created with the dbs added as expected. When I prepare the app in App Wrapper and test the .pkg file, the program still runs perfectly and happens to save data into the empty db. Discovered by adding data, closing the app, and reopening. However, when looking for the new folder and files that were created, they’re not showing in App Support. Where are they now being stored? Could this be a reason why the Apple tech was asked to create a new profile again after restarting?

Hoping someone could help!
Thank you!
Ryan

[quote=144903:@Ryan Hartz] However, when looking for the new folder and files that were created, they’re not showing in App Support. Where are they now being stored? Could this be a reason why the Apple tech was asked to create a new profile again after restarting?
[/quote]

Sandboxed apps do not store files in the same place as non sandboxed apps. For instance, on my machine, non sandboxed is in

/Users/Mitch/Library/Application Support

sandboxed is in

/Users/Mitch/Library/Containers/com.matchsoftware.myapp/Data/Library/Application Support

The app support folder of a sandboxed app is different fom a non- sandboxed one. As long as you use SpecialFolder.ApplicationData.Child(“whatever”), the path will be handled for you. If, either in creating or looking fr your file, you are using an absolute path, that could be your trouble.

Thank you both. Roger - yes, I am using the SpecialFolder.ApplicationData.Child(“whatever”) path in code.

With sandboxed vs… nonsandboxed, could this data be wiped out by chance for the Apple tester when he restarts the computer? Biggest issue here I’m trying to resolve is fixing the bug Apple found. I need to be able to have the app save data to the tables, not only for the profile setup process but also to save the user’s test results so they can review at a later time. If there is an issue with emptying the dbs upon restart, how can this be resolved?

If that were the case, I think it highly unlikely that the tech would not have recognized that as the problem as nearly all of the apps he tests, if they follow Apple guidelines, store persistent data there. Beyond that, I can’t begin to guess what is causing that file to be lost. I would be happy to have a look at your app on my system if you’d like.

Thanks Roger. I made a couple changes per their recommendations and am going to try resubmit. Going to see if they identify the same problem with the data. I may explore your help if it comes back again.

It sounds like the reviewer might be running this as a guest on their computer, where all the settings get deleted when logging out.

It wouldn’t surprise me either.

Is that normal? I mean Apple running as guest. If that is the case while running as guest, then yes the files will get wiped, recreated, and the need to make up another user profile. How normal is this in the real world with Mac users restarting their computers and losing App Support data?

In anyone’s experience, should I not bother having users make a profile? It’s really just name and email address, which get populated in certain features of the program (when sending an email to me through the program, ratings on the product, etc). It may not seem that necessary, but kind of is. Any guidance is appreciated

Nothing prevents you from insisting in the box destined to communicate with the reviewer to insist that the app must be run as a user and not a guest to insure continuity of the database and settings. So if indeed the turkey who ran the program as guest before may take the time to run this time as a user.

But, and it is still a possibility, be prepared for the reviewer to still reject, if the cause of the data loss is elsewhere.

It is legitimate to expect settings be safe from deletion.

[quote=145087:@Ryan Hartz]Is that normal? I mean Apple running as guest. If that is the case while running as guest, then yes the files will get wiped, recreated, and the need to make up another user profile. How normal is this in the real world with Mac users restarting their computers and losing App Support data?

In anyone’s experience, should I not bother having users make a profile? It’s really just name and email address, which get populated in certain features of the program (when sending an email to me through the program, ratings on the product, etc). It may not seem that necessary, but kind of is. Any guidance is appreciated[/quote]
No this is not normal, but I’ve been rejected before because the reviewer is an idiot and doesn’t understand things.

One time it was because there reviewer was watching what files get created in the filing system, I happened to be using Apple’s CGImageDestination functions to save pictures (which uses atomic saving) and got rejected because it created temporary files. I had to appeal this as the reviewer insisted it was a bug with my application. When I appealed I wrote a scathing review of the reviewer, especially with his attitude, ignorance and unwillingness to accept that I WAS DOING IT RIGHT!. The app was then approved.

Haha if someone in your way, write a letter to his boss. Works everywhere :wink:

What email address should you send a reviewer complaint to?

tcook@apple.com

Ha Ha

You appeal the rejection, using the form in iTunes Connect… If you can find it!

Thanks everyone. I am still waiting in line for the next review. If it comes back rejected, I’ll be sure to try to appeal it with their form. I appreciate the help on this topic. As a newbie to MAS, I want to make sure I am doing everything correct within my power. Nice to see there is an opportunity to appeal

You might check that you have a ‘commit’ on the database that you are using. It is possible that on your machine this works but on the reviewer’s machine it doesn’t. That will mean that the db will not hold any data when they close the program and on restart there is no data in the db.

Good point Simon. Just checked, and yes already calling Commit

dbRegister.InsertRecord "register", dr dbRegister.Commit

Worth a shot!

The other thing is to ask the reviewer to confirm he’s not using the guest account and to mail you a copy of the application container.