I just went to submit my first app involving iAds, and in the beginning of the app submissions process there is a new button to "Enable iAds". I click and get the following error:
"You have no eligible bundle identifiers. Please register one here."
So i went to my provisioning portal, expecting to see a configure iAds option similar to GameKit, in app purchase, etc; but no dice. What gives?
Btw, my iAds network contract is in place with the nice green checkmark of completitude. Can anyone tell me what I'm missing?
You need to create a unique App Id in this case to add iAd functionality, like com.yourcompany.yourappname in the dev provisioning centre. Look up creating unique App Id there are many resources. This will give you the necessary bundle identifier.
Make sure your AppID is not using a wild-card bundle. While the provisioning portal does not mention iAds explicitly, it does mention that wild-card App IDs can't be used for push notifications or in-app purchases, and I do have the sneaking suspicion the same limitation applies to the iAd network as well.
I' having the same issue with a new app I'm trying to upload today. But here are my inputs:
1 - I have a family suite of apps (about 48) called "You Know You Are" (ie: You know You Are a Guy, You Know You Are from Miami, etc). Each have their own unique appID. Out of those 48 only ONE of those appear in ENABLE iAD section.
2 - I have another set of app call "How Long Can You" (ie: How Long Can You Tap It and How Long Can You Turn It). I never created a unique appID for these. The app bundle DOES have each of them unique(com.site.tapit, com.site.turnit) and the Distribution profile I sign it with with the wildcard profile. When I went to update those apps yesterday, they DID show up. No typo here, I double checked, YES I did say that I WAS able to enable iAd for those two apps.
I was reading a bit on why only one my other family apps appear in the list. I came across this thread and decided to add my 2-cents, more like 1-and-a-half-cents since I feel none of this makes sense ;)
Also, I decided to follow instructions and I just added a new AppID for a new app I want to upload and I still do not see it in the list.
Hope this sheds some light to help fix/diagnose what is going on.
Related
I have an iphone app. I want to upload this app 2 times in itune with different name.
is it possible?
You can, but you should also change Bundle ID and maybe you'll have to desribe the reason of it for Apple guys.
Quote from App Store Review Guidelines
2.11 Apps that duplicate Apps already in the App Store may be rejected,
particularly if there are many of them, such as fart, burp,
flashlight, and Kama Sutra Apps
Pay attention to the phrase "may be rejected". As someone experienced told me, this rule exists to prevent cluttering App Store with apps where, for example, only a color of the background changes. If you provide different content, than it's different user experience and as a result - different app.
You can upload an application more than 2 times in itunes. Your applications must have own unique Bundle Identifier to Upload or you already can't see your app in Application Loader.
But there is a point, if you will not describe why you upload the same application with different name in itunes (with different Bundle Identifier), Apple will going to reject your application with description "App Duplication"..
There's no way to be sure if it'll be rejected. But I highly doubt that it'll get caught with a different name. We have done it before, to transfer an app to a different account. (Before app transfer was introduced.)
Just remember to change the your bundle identifier - and the provisioning file of course. :-)
I'm trying to understand app ID's and provisioning profiles here, I'm quite lost.
I am a registered Apple Developer as an individual under my full name, and I have 2 applications currently in the works, and 2 device UDID's ready for testing.
I'd like to be able to build IPA's for these two apps, upload them to TestFlight, and use them on either of the UDIDs I have on me.
I have several questions (if I should ask separate questions, I'd be happy to unless someone happens to be willing to answer them, I'd appreciate it):
1) Because I have 2 (or more in the future) applications, do I need a wildcard app ID?
2) If I have the app ID ET9WC78H9Q.com.mydevname.* listed in the portal - WHAT is the actual appID - ET9WC78H9Q.com.mydevname.*, ET9WC78H9Q.com.mydevname, or *?
3) Why can't you delete an AppID in the portal?
4) I've read that this must match the name Bundle Identifier. Currently it sits at ${PRODUCT_NAME:rfc1034identifier}. What specifically needs to go here to 'match'?
5) Do I need to create separate distribution profiles for each app, or can I tell each new app to use the wildcard identifier?
6) How do I tie a specific target to a specific provisioning profile in XCode 4? (TestFlight suggests to use the distribution profile)
Thank you,
You have to either have a wildcard app id, or 2 separate (specific, non-wildcard) app ids, one each.
That is a wildcard app id, so the app id is *
No idea.
Your PRODUCT_ NAME, which you specify in the Packaging section of the Build Settings screen.
A single distribution profile will work with multiple apps if the app ID for that profile is a wild-card app id. If they are specific app IDs, yes, you need a profile for each app.
You specify the provisioning profile in the Code Signing section of Settings, under CODE_SIGN_IDENTITY.
Because I have 2 (or more in the future) applications, do I need a wildcard app ID?
You don't. In fact, I recommend against it, since it's probably only going to give you problems with the App Store in the future.
If I have the app ID ET9WC78H9Q.com.mydevname.* listed in the portal - WHAT is the actual appID - ET9WC78H9Q.com.mydevname.*, ET9WC78H9Q.com.mydevname, or *?
That depends on the application. The first part is the Keychain space, which determines which applications can access the things you put in the Keychain. Then comes the actual application identifier, which is generally company.projectname. It would probably be ET9WC78H9Q.com.mydevname.myapplication in your case.
Why can't you delete an AppID in the portal?
On Mac and iOS, the AppID is very important for applications like the App Store. They have to be unique, since having two of them could mean that applications get installed in the wrong place. This means that even if you could remove them you couldn't ever add them again, which means there's no point in deleting them.
I've read that this must match the name Bundle Identifier. Currently it sits at ${PRODUCT_NAME:rfc1034identifier}. What specifically needs to go here to 'match'?
Wouldn't worry too much about that - simply look at the target summary page (click the solution then click the target and finally go to the summary tab) and it'll tell you the name it automatically picked for you.
Do I need to create separate distribution profiles for each app, or can I tell each new app to use the wildcard identifier?
You can definitely use the wildcard identifier, but the App Store will not necessarily like that.
How do I tie a specific target to a specific provisioning profile in XCode 4? (TestFlight suggests to use the distribution profile)
Wouldn't worry too much about that. If you got the code signing set up correctly (look at the build settings, then pick the development and deployment certificates) then you have nothing to worry about.
Can't say much more in here since most App Store things are guarded by an NDA. Consider asking this on https://devforums.apple.com instead.
So I already have 2 versions out on appstore..
One app is a free but limited version.
The other is a paid unlimited. The basic layout..
I have had questions from companies wanting to buy the app and give to their employees. So they don't have to buy the app with their personal accounts..
So I was thinking of releasing a 3rd version that prompts the user for a license key on first start, if the key is valid the app starts and works until reinstalled or w/e. If the key is invalid the app just keeps prompting for a valid license.
Now I remembered reading somewhere that apple wouldn't allow apps that had no public function or something like that. Which this app wont have unless u have a valid license..
But since I do also provide a valid public version of the app, will this one get accepted? Or have they removed theese rules?
Any insight in the matter would be helpful!
Edit:
Forgot to mention that the reason im looking to use the license is because i have the same app for android and want the companies to be able to buy for both device types, not just apple devices.
Thanks
I believe you should use the B2B functionality in ITunes Connect: http://developer.apple.com/support/ios/volume-purchase-program.html
Also check: https://developer.apple.com/appstore/resources/volume/
I did something very similar to this some time ago, they seemed ok with it (then at least), they just asked for a license key in the complementary info (during the app submission) to go through all their usual validation tests.
Klassmating has an app in the app store that has no public functionality unless you are a student at a specific university. So it seems like you can have apps like that.
Without knowing exactly, I would assume Apple would reject such an app from the store (mainly because it would allow you to sell applications "behind their back" - i.e. sell licence keys and not using in-app purchase) :-)
However, there are two possible solutions to your problem that come to my mind:
Create and distribute gift codes (would be a problem if you had to give out too many of them).
Do an ad-hoc distribution of your app to the companies. Basically they would need your application bundle and an ad-hoc mobile provision file. Then they can simply install your application by dragging it to iTunes.
There are different official iPhone application distribution methods.
In which for your current requirement,I suppose you can use the Custom B2B Apps,where you can deliver apps directly to your business customers who have a Volume Purchase Program account.You can get more information from the link provided above.
cheers!
Yes, I too have had an app in the app store which works like this. You have to provide them with a key/licence to access the app functionality so they can test it fully.
I've had an app rejected for this very reason - required a username and password, not a licence key, but was free. They said in contravened the licence terms regarding in app purchases.
Mine allowed time limited free trials from within the app, but full functionality was restricted to purchases outside the app. Apple wanted their 30% cut of the subscription cost so it was no dice for us.
On the other hand, the app store review process is seemingly entirely random, so who knows.
I want to reserve an app name that I intend to build out over the next 90 days, how do I do this in apple's web developer portal?
Update 2015:
The limit of 180 days is now gone, Apple dropped the cap this year -
You can read the full licence here, gone.
Also, you may have noticed that the app name expiring topic is gone from the contact us question tree in iTunes Connect.
That being said, as you can see in the declaration:
You will not, directly or indirectly, commit ... (e.g., submitting
fraudulent reviews of Your own Application or any third party
application, choosing a name for Your Application that is
substantially similar to the name of a third party application in
order to create consumer confusion, or squatting on application names
to prevent legitimate third party use.
This lets us suppose that if you haven't updated your binary for a looong time and someone wants to use the same name, chances are that if they ask for it, they will get it, but yeah, technically speaking, you don't need to worry about this anymore.
Update 2014:
As stated in the iOS Developer Library, the limit is now 180 days:
Note: After you create your app and assign it a name, you have 180
days to deliver a binary or else your app will be deleted from iTunes
Connect so that the app name is free for use by the developer
community. Per section 3.2 of the iOS Developer Program License
Agreement, squatting on an app name to prevent legitimate third-party
use is prohibited. For information about email alerts you will receive
to remind you of this policy, see “App Name Expiry.”
90 days you say? This wouldn't be the first project that was supposed to take 90 days but needed more.
Once you fill in the information in itunes connect you have 120 days. After these 120 days your app name will become available for other developers. Yes, others, you can't take it again.
So you better make sure that you have your app ready for sale in 120 days.
You should read the itunes connect developer guide. It explains the process in detail. It's too complicated to answer this in a 5 minute stackoverflow answer. But the others outlined it, and I just wanted to mention = the 120 day limit. Happy squatting.
You don't do it in the Developer Portal, you do it in iTunes Connect.
Log in using your developer credentials
Click Manage Applications
Click Add New Application
Complete the basic information, including the app name
This resources implies that app names no longer expire.
TUTORIAL: RESERVE YOUR APP NAME FOREVER
Log in to https://itunesconnect.apple.com
Click Manage Your Apps
Click Add New Application
Complete the basic information, including the app name
Upload temporary icons and screenshots (for iPhone 4 & iPhone 5)
Change the app status to “Waiting for Upload”
Create a very simple app and use the new bundle ID
Submit the App to the App Store for Review (as you normally would)
After the status has changed to “Waiting for Review” go into iTunes Connect
Click Manage Your Apps > View Details > Binary Details
Click Reject this Binary
This will set the status of your application to “Developer Rejected”. Since you have successfully submitted a binary and had a “Waiting for Review” status it can sit in that status forever, therefore your app name is parked forever! Apple considers it a “real” app since it was officially submitted. So now sit on your great app name until you’re ready to finish development.
(Source 1, Source 2)
In iTunes Connect, go to Manage Your Apps and then Add New App. You can choose a name and enter other relevant information, but not upload binaries at this point. You'll also be able to set a release date in the future.
Go to iTunes Connect, then Manage Your Apps, then Add New App.
Create an App with placeholder data (you'll need screenshots, real or temporary).
If you don't upload an associated production [App Store] distribution App within 90 days, you'll lose the right to use that name forever.
Cyber-squatting on an App name you don't make use of is bad form.
If you decide you don't want to use the name, please delete it and free it up to someone who will.
You can add the application as suggested above. And about app name reservation here is my answer.
After creating your app and it is in the state Prepare For Upload or Waiting For Upload, you have 180 days (6 months) from your creation date in iTunes Connect to deliver a binary to Apple. If you do not deliver a binary before the 180-day deadline, your app is deleted from iTunes Connect. As a result of this deletion, your app name can be used by another developer and you cannot reuse the app name, SKU or bundle ID.
I got this information from apple documentation and the link is
http://developer.apple.com/library/ios/#documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/8_AddingNewApps/AddingNewApps.html#//apple_ref/doc/uid/TP40011225-CH13-SW1
Search for "App Name Expiry" and it leads you to the required page.
I hope this helps all of us.
I'm trying to test In App Purchase within the sandbox environment.
In order to test the code I did the following:
Created an In App Purchase Test User account under 'Manage Users' in iTunes Connect
Created some in app purchase products under 'Manage Your In App Purchases'. I used numeric values and alpha-numeric values for the Product IDs.
Loaded the app onto the iPhone, went to Settings->Store and logged out of the regular store and into the test account created in step 1
Set a breakpoint in the
(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
callback
All the submitted Product ID's are in the response.invalidProductIdentifiers property.
When submitting the request I first tried the exact Product IDs created during step 2. I also tried prefixing them with the Bundle ID:
NSString *id2 = #"com.super.duper.8";
NSSet *productList = [NSSet setWithObjects:id2, #"8", nil];
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:productList];
Am I missing something obvious?
Any help is appreciated.
Achim
If you are still getting invalid product ids, I've been accumulating a checklist of all of the various causes:
http://troybrant.net/blog/2010/01/invalid-product-ids/
I spent two days struggling with all my productsRequest (for AppID) ended up in response.invalidProductIdentifiers list, instead of in response.products list. Apple definitely did an F grade job in dealing with their storekit. It is confusing, intertwined and complex.
I did finally resolved it. One very important lesson I learned as indicated by few in the forums: It may take many hours for what you entered on the itunesconnect.apple.com to take affect.
There are two parts: application name and AppID in your xcode and what you entered in itunesconnection, they have to match exactly (case sensitive). If you registered or modified your in-App AppleID (I also completed all my contracts and bank information as suggested by some that the purchase actions won't work without getting this part done), you may as well go to bed before testing it again because it really takes hours in my case to take affect. I was so frustrated battling with this issue before my 9 year old dragged me for bed time story then surprised to find the issue disappeared when I woke up.
I found the suggestions by Eddy71 in http://www.iphonedevsdk.com/forum/iphone-sdk-development/21035-problems-creating-test-user-app-purchase.html really helpful. Before resolving it I did everything I possibly could do in Eddy's check list and still got zero products, one of my fears was that whether without uploading the binary code to complete the application registration in itunesconnect was ok (no need to go live as taught in http://blog.mugunthkumar.com/coding/iphone-tutorial-%E2%80%93-in-app-purchases/). It is indeed ok. Make sure the "cleared for sale" is check and in the icon is green (you need an extra step to approve it after filling out the form). The other fear was that whether I can use developer provisional (not distribution provisional) in debug mode, it is also indeed ok. I hope this may help some of you. Good luck and have faith. It will work eventually.
Our issue was the last bullet point from Apple's FAQ, "Why are my product identifiers being returned in the invalidProductIdentifiers array?":
You did not complete all the financial requirements (see the "Contracts, Tax, and Banking Information" section of this document).
You did not use an explicit App ID.
You did not use the Provisioning Profile associated with your explicit App ID.
You did not use the correct product identifier in your code. See Technical Q&A, QA1329, 'In App Purchase Product Identifiers' for more information about product identifiers.
You did not clear your In App Purchase products for sale in iTunes Connect.
You might have modified your products, but these changes are not yet available to all the App Store servers.
If you or App Review rejected your most recent binary in iTunes Connect.
I changed the most recent version (which had been rejected) to "Waiting for Upload" by clicking "Ready to Upload Binary" in iTunes Connect and the problem was resolved after about 10 minutes.
it's OK that the phone is jailbroken, you just have to uninstall appSync in Cydia, then it works
Apple has a fantastic document which is not well known that covers this at the end. It also dispels some myths about things that don't help (eg. submitting a binary).
Technote 2259 "Adding In-App Purchase to your iOS and Mac Applications"
We ended up creating a new provisioning profile, there was a line somewhere (can't recall where, not in the docs for in app purchase) that stated that you have to enable in app purchase in the provisioning profile. We couldn't do that with our existing profile, so we created a new one and then we could enable it.
Try resetting the iphone settings and delete the app from iphone and use the request product id directly without the Bundle ID
For anyone else that has these issues, I highly recommend reading this thread on the Apple Forum.
I tried everything suggested in the Apple forums and here, and still couldn't get it to work. Found the solution - your app needs to be transferred by Xcode for the sandbox to be enabled.
Obvious, right? Well, if you are working with an update to an existing application, the device will still treat it as an App Store-installed app.
So delete the app from your device. Then install the app back onto the device using Build & Run with your device tethered to your Mac. It should work now :)
In my case, I didn't complete the bank info, tax info, and contact info.Once I finish this, I can get my productID, hope this will help someone.
This is where you are going wrong, you need this in your code:
NSSet *productList = [NSSet setWithObjects:product id]
You can get this product id from iTunes connect.
And you need to make sure that you have created a test user, and have signed out of your original iTunes account. Please see do not sign in with test user account, regardless of what apple documentation says, just use it when a pop up appears.
What's that #"8" for? your product is named as com.super.duper.8 right?
http://blog.mugunthkumar.com/coding/iphone-tutorial-%e2%80%93-in-app-purchases/
Another issue I had was that I had to go to Window > Organizer in Xcode and delete my app and the provisioning profile(s) and re-add my development provisioning profile. I restarted the device and xcode as an extra measure.
I have tried every solution that available on the internet, and nothing worked, absolutely nothing. My problem: My device was jailbroken and had Cydia on it. I restored the device to factory defaults (Not jailbroken) and it worked the first time and returned the product ID no problem.
For me the problem was that I had chosen "Turn on Content Hosting" when set up the In-App purchase. So I had to turn it off and the problem was resolved.
It takes the store some time to make the products available to all server (see documentation). So you might experience a delay between creating a product in iTunes Connect and seeing that product id as a valid one when testing on device. For me it took around 12 hours till my products showed up.
A note for others: do not use an NSMutableSet for the product IDs. It has to be an NSSet!
If you want to keep your app data but you want to try deleting your app to fix this issue, sync your device first. Then delete your app and reinstall from Xcode -- this fixed the issue for me. Once it's working, you can restore your device from its backup -- this only takes a few minutes and the product requests still work after the restore.
Not exactly sure why, but when I changed the request's product ID from 'com.mycompany.myapp.product' to 'product' it started working. Maybe it's because of how I have the product configured in iTunes Connect.
Give it a try, might work for some of you...
replace:
NSSet *productList = [NSSet setWithObjects:id2, #"8", nil];
with:
NSSet *productList = [NSSet setWithObjects:#"8", nil];
Another problem that might be. If the name of your xCode project is not written of English, or has other characters in it, bundle ID will have "------" where the name of your app should be. I thought it is just a convention for bundle id, to have this in xCode. Turns out, this was my problem, so name your xCode project on English ) I know this is not the case for the most, but anyway)
I tried everything everyone is talking about. I ended up making a guest account first to see if the product ID could be found.... It was. So then I started quitting everything in activity monitor and found the problem. I had to quit the "store" processes below. All of a sudden I stopped getting the invalid product ID. Hope that helps someone out there.