Allow testers access to a specific build in iTunes Connect, without sending an invite - app-store-connect

We have about 100 testers in our iTunes Connect in total, without about 20-30 of them on each of our apps. When we push a new build (sometimes just with bug-fixes for specific people), we'd like to be able to give access to all our testers, but either send no emails at all, or just emails to the specific people that are affected by that update.
Case in point, unfortunately one of our old keys expired yesterday, and someone was trying to get the app today. So we sorted our key issue, up the version, re-sign the ipa and re-upload to iTunes Connect. We don't want to prevent access to any of our previous testers, and we don't want to email all our users, because it's not a new build, just a re-signed old build.
Currently, and extremely frustratingly, we can't see any way to currently do that, despite that being exactly how it worked when TestFlight was TestFlight.

Related

Country restriction iTunes connect

Our Apple account have multiple apps(25), for multiple countries (15). I want to share all those apps with a colleague. But this colleague can't download the apps because of the country restrictions. I also don't want to build 25 apps (which some need old xcode versions and old sdk's)
I tried if you are a admin in your iTunes Connect account to download this app, but it failed. Also I tried to send a existing app by TestFlightApp in ITC, but this is also not possible. Also promo codes is not working.
Any suggestions?

iTunes Connect - Prerelease - Beta testing with Internal testers says 31 days left, what does this mean?

iTunes Connect - Prerelease - Beta testing with Internal testers says 31 days left, what does this mean?
Will the app uninstall itself after 30 days? Will it become inactive or unusable? What happens?
From some months' experience, I find that my original answer(guess) is not right. If an application has expired on iTunes Connect Beta Testing. It will very soon(in one or two days after the expiration) stop working from the device that has it installed.
Original answer:
Short answer: when the testing period end, testers will no longer be able to accept invites and install builds. Testers that already have builds installed will not be affected.
In this document,
https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/BetaTestingTheApp.html#//apple_ref/doc/uid/TP40011225-CH35-SW2
Apple says:
“After the 30 day testing period has ended, the build status changes to Expired"
"To continue testing after the 30-day period expires, upload another build. Internal testers will automatically receive an update notification when the new build is available. To distribute the new build to external testers, you must submit it to Beta App Review. Once it is approved, you can send the external testers an update email by clicking Send Invites from the External Testers column on Builds, as shown above."
Apple doesn't describe clearly the behaviors on the tester side when a build expired.
But when I try to turn off the "TestFlight Beta Testing" on an app,
the prompt says:
"Are you sure you want to stop testing?
Testers will no longer be able to accept invites and install builds. Testers that already have builds installed will not be affected."
So I guess the behaviors on the tester side when a build expired are going to be the same
as that when the testing is shut down by turning off the "TestFlight Beta Testing" option.
In my experience with Internal testing, after 30 days, the build changes to Expired, and will no longer launch on devices where it has already been installed. Trying to launch the app will show the splash screen, and then it immediately quits and you're back on the home screen.
I've also found that uploading a new build does NOT automatically send out the update to existing internal testers. Although iTunes Connect will say the build is available, you have to manually toggle TestFlight testing off and then on again to get it to recognize the new build and send out the update emails to existing internal testers.

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.

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.

Determine whether app has been previously installed

I'm about to implement some unlock-functionality In-App-Purchase in an app. The client would like the functionality to be available the first two weeks after installing the app, and then go away until the user pays up.
I need the app to determine whether it has been previously installed, deleted, and installed again. If I can't do that users can just reinstall the app and get two more weeks for free.
Any ideas?
It seems all data is deleted when the app itself is deleted, which kind of limits my options. There is a server backend to the app. Is my best option to log something there or is there another way?
You can make use of the keychain in iOS. It will not be removed even if you uninstall the app. But you have to make sure you use the same provisioning profile across different versions of your application.
And, have a look at this utility