I am about to release an update of my app “Find Any File” in the App Store. I just received a rejection because of this:
Of course, when I install the app on my own Macs, and login with my iTC test account, it installs the receipt, validates and launches just fine. So, the tester has a problem that I do not have here. I am stumped.
I have not changed the receipt checking code in years (it’s the code I publish years ago in the macoslib, with the CertTools).
I am building the code with Xojo 2014r2.1. I believe I have submitted the previous FAF version 1.8.8 with that same Xojo version, and the same build scripts, so I can’t tell that I’ve broken something on my end.
Does anyone know about this problem?
Oh - turns out that I had built the previous version end of 2013, so I could not have used Xojo 2014r2.1 to build that. I guess I’ll try to build my app with the older Xojo 2013r4.1 now and see if that helps.
Exit code 173 is the correct code to say that it’s not been approved by the storeagent. We get the damaged error message from time to time, even had it from other apps that I downloaded from the App Store. I’ve logged several reports with Apple over this as I think the storeagent is getting confused and generating false responses.
Just another bug in the long list of bugs in Yosemite.
Sam, I think you misunderstand what’s happening in my case.
Here’s how I understand it:
- Launch app for the first time - In App.Open it looks for the Receipt file, which is missing -> exit(173)
- The storeagent goes into the mode “app needs re-authentication” and asks user for his iTunes-Login.
- Once logged in, storeagent downloads the Receipt and stores it in the app.
- storeagent goes into mode “app should be authenticated now” and restarts app.
- App checks receipt again but fails to validate it for some unknown reason and exits again with 173.
- At this point, storeagent decides that the app doesn’t accept the valid receipt and gives up, showing the error msg that the app appears to be damaged.
So, step 6 is a safeguard to prevent an endless loop of re-authentications and restarts. In that regard, nothing is wrong with the storeagent.
The question is rather: Why would my receipt validation suddenly fail?
I think I understood…
I’ve seen the store agent complain an app is damaged when it cannot connect to Apple.
I also have an issue right now where the store agent refuses to validate a couple of apps since they’ve been updated. The receipt fails because store agent insists on using the receipt for an older version.
Apple’s only solution to the second issue is to wipe and re-install Yosemite. They refuse to tell me where the store agent is caching the receipt so I can delete it.
Get a copy of RB App Checker Lite, it might be able to tell you why receipt validation fails.
“RB App Checker Lite” didn’t state any issues, either.
I am still suspecting something else. If it was just an issue with the storeagent, I’d expect that the reviewer would be aware of general issues with it and not bother me with false claims.
Well, I have added some debugging output about what’s wrong with the receipt, so I hope the next review round will give me more info on what’s going wrong. I’ll report back.
Don’t assume anything about the competence of App Store reviewers. I’ve been rejected for some stupid reasons.
Onetime a reviewer insisted that the application automatically created files on the desktop. Appeal and it went through.
I got rejected one time for using atomic saving.
I even had an application rejected, because there wasn’t a save option.
I tried to do a paid update of an app, but got rejected because it’s name and functionality were similar to version 1. They made me pull version 1 from the store before they’d let v2 on.
If Steve Jobs were alive… Apple is not the same, it’s, since then, like Microsoft.
MAS is a real PITA. I sometimes think reviewers are simple denying bots
You gotta feel sorry for Reviewers, their job is to find a reason was to why your application should be rejected. Whenever you work negatively, it can’t be good for your soul.
However some are just assholes and I’m sure they just relish in destroying peoples hopes and dreams.
Following up on this thread I have just been rejected for the opposite reason - i.e. that the app does not check for the existence of a purchase receipt. Actually it does, but I put the check in a timer so that it wasn’t closely coupled with the startup code at the beginning (thinking this might help anti-copying). Perhaps the timer was too long for the tester.
My question is therefore, how do you test the app locally prior to submission to MAS if you cannot generate a receipt yourself for testing purposes. I can see how you test what happens when no receipt is present - exit_173. But how do you test your code for a valid receipt?
You need to create a testing account over at the ‘Member Center’ of the developer resources, this testing account will allow you to test the receipt verification code.
I have that for In App Purchases - which works fine as I can restore purchases and get a receipt downloaded - but not sure how to do it for the app which is initially downloaded.
I’m sorry, my brain obviously not fully in gear.
When you build an app locally there is no receipt, that only comes if you can download the app from AppStore. As there is no testFlight for OS X apps, I don’t see how you can properly test the code.
Yes, I can see that the IAP’s are all part of the same receipt, but you only get those in the test account if you do a restore. But if the app is complying with Apples rules, you can’t get that far in the testing because it has already failed when you initially opened the app.
I’m missing something, perhaps not enough gin yet.
Normally, when your application returns code 173 for receipt failed, the App Store agent will then present a dialog asking you to enter in a iTunes/App Store account, in this dialog you enter in the Test account details.
If you’re running 10.9, you may not get the dialog after receipt failure, if the app store agent fails to connect to Apple you won’t get the dialog either.
Once you enter in the test account, the app should then relaunch and work as expected.
Ah, now that makes sense…and yes, that does work.
Thanks once again Sam.
Thomas, I am getting the same rejection from the App Store, did you solve this problem ?