In-App-Purchase does not work anymore - objective-c

I've recently (2 weeks ago) tested successfully the In-App Pruchase functionality with some iPad products.
After Apple has updated its License Agreement, it didn't work anymore on my iPad.
Even after agreeing this agreement, the functionality doesn't work. I read some posts (post1, post2, post3) and found out, that others came across this issue too. I tried everything described in the posts but nothing worked for me. I hard-resetted the ipad (Settings -> reset settings & data), i rebuild it a few times, i looked at the developer forum, if there where any issues posted, ..
It can successfully retrieve the product data, but when a payment will be added to the default payment queue following error is being returned in the TransactionObserver:
Error Domain=SKErrorDomain Code=0 UserInfo=0x2e09e0 "Cannot connect to itunes store"
I tested the same functionality on other iPhones and it worked (simply copied the classes from the iPad project to the iPhone project and created the dev. prov. profile).
To completely understand my situation, i had to renew my dev account and there i accidently renewed my certificate. So i created a new prov. profiles for my apps.
I than tested it on another iPad but it also didn't work. I also created a new provi. profile and a new product, cleard all and rebuilt it to test it on the ipad, but it always keeps returning the same error.
So it seems that the problem is in my iPad project, but what can i do? I copied the source code from Apples StoreKit Guide and modified it (a little bit) so it can manage the purchases with our server. I also changed the code sign identity (project and target) to build it with the correct dev. prov. profile. But what else can i do?
Please help!
Thanks & BR
Nic

Your provisoning profile is made for inapp ?
Sometimes the Apple sandbox server respons error but not during long period.
Are you unlog from your iTunes account in the iPad setting befor buy in your sandbox?

Now it works! It was a little bit unusual but it works!
I reviewed the provisioning profile. The certivicate was unchecked, so I rechecked it, downloaded it and installed (double clicked) it
Deleted the app and all installed porvisioning profiles from my ipad
Set the code signing identifier (in the target and the project setting) in the last hand in project (prev. version of the app) and rebuilt (clear all, build) it
Set the code signing identifier of the current project and rebuilt it
And the test in app purchase worked.
Hope it helps anyone!
BR
Nic

Related

How do you check if your signing identity is installed on another Mac? (Error: Your Account already has a valid iOS Distribution Certificate)

I have an error when trying to upload an app to TestFlight. It says I have a valid iOS certificate on developer website but that it is not installed locally
I did get a new MacBook recently and I think this might be causing my issue. How do I check if my singing identity is installed on another Mac and if so, how to I install it locally on my new MacBook?
Really lost here at the mo.
Here are the Steps for solving this issue :
Go to Xcode Prefrence and Remove all developer account
Clean And Build ( in Simulator ) and Restart Xcode .
Go To Apple Developer Account ( developer.apple.com)
Download Certificate , provisioning profile already created
After Downloading , click each one to add in Keychain
Now Again Go To XCode Preference -> Account and Add Apple Account
After Adding Apple Account , There is a button to Check View
Details
Go To view Details and just make sure everything is correct
Now Go to XCode and Set Automatically Managing Signing
10.And Run app on Device , if successful then Archive and Enjoy.
This way recently i solved one my friend issue and Hope it works for you also.
Feel free to comment . Thanks

Mac App crashes when I add a Distribution Profile

I've created a Mac App for Mavericks that uses MapKit. It works fine during development and testing on Xcode 5.1. Now I'd like to submit it to the App Store and I need a Distribution Profile which I've created successfully. Trouble is, as soon as I add it to my project, the app doesn't run anymore - it crashes every time without fail with this error message:
When I change back to "no provisioning profile", or to the profile that Xcode created during development, the app runs again.
My question: Is this expected behaviour, or will the app be rejected by the review team? I know that iOS apps don't run with their distribution profiles, but I'm new to Mac Development. Any insights into this way too complex topic are appreciated!
My app was approved - and the crash was indeed no issue for the app review team.
I had a chat with Apple about this who were kind enough to call me back and explain the issue. Looks like this phenomenon is "kind of" expected behaviour: Mac Apps may or may not crash when run with a Distribution Profile.
To avoid this problem, we can add both a Development AND a Distribution Profile to our app, without one having to replace the other. This was news to me. Had I however opened my tired eyes a bit wider I would have perhaps spotted the little disclosure triangle myself:
Perhaps this helps those with the same issue.

How to remove code signing in Xcode?

I've created an iOS7 project in Xcode 5. It's a very simple app. I zipped it and sent it to another developer. When they open it, they get these messages:
No matching code signing identity found
No code signing identities (i.e.certificate and private key pairs)
matching "iPhone Developer" were found. Xcode can resolve this issue
by downloading a new provisioning profile from the Member Center.
How do they get around this? The app isn't going to be submitted to the app store.
Is this happening because they have not linked Xcode to their online developer account? Isn't an online developer account free?
The other developer can ignore that message if the intention is to run the app on the Simulator. But you must use code signing in order to run an app from Xcode on a device, even for testing purposes, even if the app is never going to be submitted to the App Store. And that costs $99/year. End of story.
You could turn your account into a Company account and put this developer on your company; that way the developer is covered under your $99.
Or, if you just want to send the app to someone for testing and you don't need them to run the app directly from Xcode on a device, you can create an Ad Hoc build targeted to their device.
And of course the developer can look at your code, test on the simulator, and run your previously built Ad Hoc build on the device - but not run from Xcode on the device, i.e. the developer can not build for a device without someone paying that $99/year fee.

App Wireless Distribution not working in iOS7. Internet Connection needed?

In iOS6 I used to install some of my apps over an adhoc network without internet sharing. So the iPad had no internet connection. Therefore I use a typical html and plist file. Everything was alright.
Now, in iOS7 the installation is not working anymore. It is just stuck in "Waiting" and nothing more happens. (Note: It is still working on my iOS6 iPad)
First I thought something might be wrong with my plist, but then I copied the files to my IIS Server and installed it from there. Here I had a internet connection on my iPad and everything worked out.
Is it possible that the wireless distribution now needs an internet connection in iOS7 e.g. to check the ipa in the app store or something like that? Because this is the only difference I can see.
The app is signed with a valid distribution profile.
Thanks for your help.
It turned out the installation of apps over the air in iOS 7 really needs an internet connection now. The iPad tries to contact at least the following URLs before installing the app.
ax.init.itunes.apple.com: The device obtains the current file-size limit for downloading apps over the cellular network.
ocsp.apple.com: The device contacts this site to check the status of the distribution certificate used to sign the provisioning profile.
It seems in iOS6 it was ok if those URLs were not reachable and now in iOS 7 they have to be reachable.
Well i just had the same problem and I figured it out. At least on my xcode this is what happened. Turns out the application target release code siging identities auto set to developer and not their current state, from xcode 4.x, which is distribution. So when I went to distribute my application I kept getting the same error you had. So Click on your project name in your project explorer then click on the application target, not the project, and make sure the code signing identity is not set to developer for your releases. I have no idea why the code signing identities were automatically set to the developer profile, maybe there was some sort of bug when updating from xcdoe 4.x to xcode 5 that caused this. But now other devices are able to install the program. Hope this helps.

Provisioning Profiles, certificates and such

I'm trying to understand the whole provisioning-proccess, but I just don't get it..
I have tried to read up, but it's too weird and difficult for me to understand, especially when English is neither my primary or secondary language..
I have been developing for a while, and I remember stressing alot when setting up my iphone for development the first time. When I go into Settings->General on my phone I have 17 profiles, but at least I got it working in the end.
Now, I'm porting my app to iPad, and I'm trying to add my iPad to the table.
This is what I did:
I went to developer.apple.com, added my udid in devices, I then went to provisioning on the same webpage, and saw three profiles, one uneditable(controlled by xcode), one connected to my app's AppID, and one connected to myself as an AppID.
I added my new iPad-device to all three of them to be sure, and downloaded them again.
I dragged the .mobileprovisions to iTunes and to Xcode, and I went into organizer and clicked Refresh to update them. I clicked Use for development on my iPad, and it says it contains those profiles. They're also in Settings->General on my iPad.
In my XCode project, I go under Targets->Build Settings->Code Signing, and set one of my new profiles to Debug, and one of the other to Any iOS Sdk inside it. I've tried multiple combinations. I also went to Project->Build Settings->Code Signing and did the same thing.
When I run my app on my device, it pops up two of the same error message saying A valid provisioning profile for this executable was not found.
When I now connect my iPhone, which has been working perfectly fine all along, the exact same thing happens. Two of the same error message.
The question:
Which profiles goes where? What is the difference between the profile containing myself as an AppID and the one containing my actual app's ID as AppID? What is the difference between Target->Build Settings and Project->Build Settings when it comes to Code Signing?
Also, we spent a lot of time making push work, and out app is on AppStore rigth now, so I don't want to start deleting profiles and ID's, cause I think I read somewhere that that could make the notification stop working.
Oh, and I downloaded a new certificate as well at some point, containing the new profiles, and it ended up in keychain named along with 1000 others..
Help :( ?
Sorry for long and extremely boring/noobish question.
I think that your code doesn't build because of a certificate issue - like you said at the end of your question - you "downloaded a new certificate at some point containing the profiles..." You need to understand that a certificate does not 'contain' profiles, but profiles are created and signed using a specific certificate. Check that you have the private key of this certificate - if the signing request was not issued by you, it will require someone else exporting this certificate for you from his own keychain. Keep in mind that downloading the certificate available in your developer account will not suffice.
As for everything else:
Which profiles goes where?
Make sure you're creating relevant profiles with correct bundle IDs for your apps. Distribution profiles should include AdHoc and AppStore profiles, while Development profiles are, well, for development :)
What is the difference between the profile containing myself as an AppID and the one containing my actual app's ID as AppID?
Not sure what you mean here. Myself as an AppID? Each profile is linked to a specific App ID that has a bundle ID - it can be used to compile any app that has this bundle or any sub-domain of it in the info.plist of the project.
What is the difference between Target->Build Settings and Project->Build Settings when it comes to Code Signing?
You can think of your Project->Build Settings as the global settings and the Target->Build Settings as the target-specific settings. If XCode can't figure out which profile to use from the target settings, it will go and fetch it from the project settings.
The problem was that after we had released our app to the AppStore, we forgot to put the "Edit Scheme->Run" back to Debug from Release. This had no effect on my iPhone because I have added it to the release-provisioning-test thing.