Adding a new provisioning profile to an existing TestFlight build - ios

So I've been using TestFlight with an app that's in development. And up until now, the Beta users haven't been changing that quickly, so it's been pretty easy to just add a new device to the provisioning file and post a new build whenever needed. But, we've recently started to quickly expand the pool of Beta users and posting a new build to TestFlight every time we want to add a new user doesn't seem like the ideal solution any longer. So I know they have the feature which lets you upload a new profile with a new device(s) in the new profile, which I'm trying to use. So at that point I then have the new user attempt to install the app and the TestFlight WebClip asks the user to install the new profile (since it's no longer embedded in the app like with the initial build/provisioning file). The user successfully installs the new profile but when going back to the TestFlight app/webclip, just repeatedly gets asked to install the profile again without being able to actually install the app.
OK, a complete walk through of the details:
I build an app with the testUsers1.mobileprovision file and upload it
to TestFlight.
At some point later I add UserX to a new mobile provisioning file,
testUsers2.mobileprovision.
Under the permissions section of the old build, I use "Update
profile" to load testUsers2 up to TestFlight.
UserX then starts up the TestFlight webclip/app on their device.
Rather than installing/downloading the app, TestFlight asks them to
install the new testUsers2 provisioning file and the user does
install the file.
UserX then restarts TestFlight on the device and it again asks them
to install the new profile instead of actually installing/downloading
the app.
I've written to TestFlight asking for any ideas of what could be going wrong with this, but haven't received an answer yet. Anyone see what I'm doing wrong here? Or am I hitting a bug of some sort in the TestFlight Webclip on the device?
Update:
I've traded a couple of emails with TestFlight and they've replied with "While we troubleshoot this issue, the best thing we can recommend is to re-upload the same build with the new provisioning profile associated with it. It will not create a new version, but will update the most current version in TestFlight."
So, hopefully they'll have an answer shortly.
Thanks,
Will

This is not possible anymore since the launch of iOS 8, check their support page Adding more testers to a build?:
Due to the changes in iOS 8, it's no longer possible for testers to install provisioning profiles from the iOS Settings app. App developers will now need to rebuild their Ad Hoc beta apps to update the embedded provisioning profile in the app's IPA file.
You will need to add a new build with the updated provisioning profile.

You don't need to create a new build each time the provisioning profile changes - all you have to do is download the updated provisioning profile from the the Provising Portal, then go to the selected build's page on TestFlight, click "Permissions", then click "Update Profile" and select the new provisioning profile file.
The problem you described is probably not related to the build's provisioning profie, but the WebClip itself - try deleting it in Settings -> General -> Profiles -> TestFlight WebClip, and install it again.

Related

Firebase App Distribution - "Waiting for developer" message

I'm developing an iOS application and using App Distribution to distribute my test releases to QA Team, I didn't had any problem before, everything was smooth and pretty (estrange considering iOS development hehe)... but recently I face a problem that I can't resolve and I didn't found any documentation about it.
I constantly adds new Testing devices to the project (as the QA team grows) and follow the same steps...
Adds the new account to my tester list in Firebase.
Get the register attempt with the UDID of the new device.
Register the new device UDID in the Apple Developer Console
Distribute a new release of the app through App Distribution.
Install the certificate in the device
And voila, download the new distribution.
But this case is different... because in this iPhone XS Max with the latest iOS version, the download button never appears, and we just can see the following message: "Waiting for developer".
I try a lot of different solutions, redownload and import the Profile, to redistribute the app, create new profiles, force new devices in Fastlane, delete and readd the UDID in developer console... dammit... I create new certificates in my rage hahaha... but the problem persist, anyone face this problem before?
Update
I sent a ticket to Firebase support center, and they told me that the UDID wasn't in the distribution profile, so my solution was recreate the profile, because download and import the ad-hoc profile didn't work.
This issue isn't a Firebase problem, it was a classic issue related to iOS signing hell.
I had the same problem when tried to add device for Firebase Testing.
I made all instructions from Firebase troubleshooting.
If you're installing an Ad Hoc distribution, the Waiting for developer
button appears when the developer hasn't yet configured their app to
run on your test device. To make their app available to you, the
developer must complete the following steps:
Add the test device's UDID in the Apple Developer portal (the UDID is emailed to the developer when you register the device to
Firebase).
Include the device in the app's provisioning profile.
Build the app using the updated provisioning profile.
Distribute the new build using the Firebase console, the CLI, or fastlane.
https://firebase.google.com/docs/app-distribution/troubleshooting?platform=ios#waiting-dev-ios
Than I noticed that all of my provision files (for me it was folder /Users/user/Library/MobileDevice/Provisioning Profiles) not include UDID of new device. Every file can be previewed if you will choose view mode or right click on it, select "Get Info" and expand "Preview" block. If you will scroll to bottom you will see block "PROVISIONED DEVICES" with codes of your devices.
For me the problem solved when I found files which descriptions had "IOS Team Provisioning Profile: my.bundle.name" and "Developer Profile Name: my.bundle.name" ("Developer Profile Name" is profile name which you see in your Profiles list at https://developer.apple.com/account/resources/profiles/list).
I moved 2 files (which descriptions started from "IOS Team Provisioning Profile: my.bundle.name" and "Developer Profile Name: my.bundle.name") from /Users/user/Library/MobileDevice/Provisioning Profiles to another folder (I was afraid to lose it and not removed, just moved)
Opened XCode
Selected menu XCode -> Preferences
Selected Accounts
Chose my e-mail account name
Selected MyTeamName and clicked button "Download Manual Profiles"
Selected my Personal Profile and clicked button "Download Manual Profiles"
After it in the folder "Provisioning Profiles" appeared two new provision files and I found the name of my device in the bottom of their descriptions.
Than i cleaned project rebuild app-file and distributed it on test and all worked.

Add new device for an existing tester on Crashlytics

How can I add a new UDID in Crashlytics for an existing tester? The UDID is on the distribution profile but because it's not listed in Crashlytics the user cannot open the app
I didn't know this about using Fabric. I thought you just enter an email address and the tester can install your app but that ONLY works for enterprise Apple Dev Accounts. If you have a personal account, how you get your app on a new tester's device is:
1) Archive/distribute your app, add their email to the tester list in crashlytics. They get an email to register.
2) Then you (as the distributer) will receive an email that says they registered and it has their device UDID in it.
3) You need to then go to the app dev website and add this UDID to your device list.
4) Then you need to go to your Xcode preferences and refresh your dev account profile to make sure it's aware of the new device ids (Xcode/ Preferences/Accounts/ Download Manual Profiles).
5) Then you need to re-archive/re-distribute the app again.
On this second email, they can finally install the app.
You have to open the link in the invite emails on the new device. The original invite will say "Let Me In" and new build emails will say "Check It Out". Then it'll take you to the page where you can register your new device.
After the device is registered with Crashlytics you should be able to do open the app, seeing that your UDID is already in the provisioning profile.
I've also had a similar problem.
It took some time but I realized that Crashyltics wasn't using the provisioning profile I was expecting. I had to change my build settings for the Provisioning Profile to not use the Automatic setting but to use my Ad Hoc Profile.
Here is a through guide for this:
https://docs.fabric.io/ios/beta/introduction.html
Hemal from Crashlytics here. Once you added the UDID in the provisioning profile, did you redistribute the app again? Also, be sure to double check that the updated provisioning profile is the selected profile of choice in Xcode (and shows up in the top of the Mac app when you build). This way, the latest distribution will pick the most up to date permissions!
I had this issue and I ended up having to go into XCode > Preferences > Accounts > [my dev team], and I manually right clicked on each profile and hit "move to trash". I then emptied the trash, cleaned (cmd+shift+k), cleaned build folder (cmd+alt+shift+K), deleted DerivedData (google this one), restarted my OS, and finally downloaded all provisioning profiles using the "Download All" button in the same place in XCode after restarting and it worked :)
(not all of these steps might be necessary, but just to be safe...)
If you distribute your app internally with enterprise signing, adding a new device can be tricky, especially if it's a test device that you don't want to setup your email/password manager on. What I've done is open the original invite link from email on my laptop and it will say to open on your device to start testing. (I used an email from months ago, so they don't seem to expire.) From this page, you can AirDrop the link to your new testing device. In the past, I've manually typed the invite link and this is much, much easier.

Testflight doesn't show "Update Profile" Option anymore

I often had to change the provisioning profiles for my ios builds due to new testers/udids.
I had no problems following this guide Adding more testers to a build?
I updated my profile in the devcenter and made the upload, everything works perfect. But from today on I miss this option completely, the Update Profile Button and the complete row is just gone.
I googled changes regarding testflight but couldn't find anything.
Someone has a clue?
iOS 8 doesn't support installing provisioning profiles individually any longer. So this doesn't work on iOS 8 devices any more and you have to create a new build using the updated profile to add new devices.
I emailed TestFlight about that this morning and this was their response. Looks like it's for iOS8 as others have pointed out :
"Due to the changes in iOS 8, it's no longer possible for testers to install provisioning profiles from the iOS Settings app. App developers will now need to rebuild their Ad Hoc beta apps to update the embedded provisioning profile in the app's IPA file. If you need any help with this process, please let us know.
You can also find more information about updating provisioning profiles from the link below:
http://help.testflightapp.com/customer/portal/articles/829818"
I was able to change a particular build's embedded provisioning profile manually. Here's how I did it.
Download the build's IPA file from the testflightapp website. You can download it by accessing the build's share address in your browser. That's the https://www.testflightapp.com/install/BUILD_ID link that's shown on the Build Permission page.
Change the ipa file's extension to zip and unzip the archive.
Right-click and Show Package Contents on the single file inside the Payload folder.
Replace the embedded.mobileprovision file with your updated provisioning profile.
Recreate the zip archive and change its extension to ipa.
Upload that ipa file to test flight.
The option has dissappeared for me as well. I was also using the option frequently.
However, I did notice problems and the feature was no longer working once the iOS 8 GM was released on iOS 8 devices.
Even though I updated the profile, the build failed to install every time. (And now that you asked I noticed it's gone).
I also browsed through all the settings/permissions/etc, but it seems they removed the feature.
Since Apple acquired TestFlight, they changed the whole process for iOS 8:
No more provisionning profiles, only Apple ID's email.
1,000 beta testers and 25 internal testers per application.
https://itunesconnect.apple.com/ is the new testflightapp.com/dashboard/
I have successfully replaced my old process following this one: http://code.tutsplus.com/tutorials/ios-8-beta-testing-with-testflight--cms-22224

How to update provisioning profile that has expired (in testflight)

We have an ios app managed through testflight which has an expired provisioning profile. We have generated a new profile in the apple developer portal, downloaded it, and uploaded to testflight, under the specific build (using permissions, add/update profile.) The uploaded profile is saved, and appears in a green notification in testflight. However, when trying to open the app from a device, a message is shown stating that the provisioning profile for this build has expired.
Is it necessary to re-compile the app and upload a new build to testflight? Or is it possible to somehow have the app utilize the new provisioning profile without a new build?
It is possible to do this without recompiling. Not directly through Testflight though.
All you need is the old build (.ipa) and check this answer: https://stackoverflow.com/a/10905855/3619504 . It shows everything you may need. When you download the scripts sources, there's an example in Readme.md file on how to use ipa_sign script.
After resigning you will be able to reupload the newly signed build to Testflight.
Yes it's necessary to recompile unfortunatelly.

Testflight Workflow

I am trying to understand the testflight App distribution workflow
1.
When a new tester wants to join my testing team - I ask them to create an account on test flight.
2.
Next they need to give me their device UUID so that I can add that UUID to the Distribution profile.
Question - What is the best way to get the UUID from the tester. I do not want them to email it to me or give me the UUID over the phone. Since they have the testflight account and the iPhone - Can they upload their device UUID from the iPhone to the testflight account so that I can see that tester JohnDoe has UUID xyz - If so how? What do they(The tester) need to run on the iPhone so that their UUID shows up when I (The App Developer) log into TestFlight.
3.
When I (The App Developer) have the newly Added UUID - I need to update the Distribution Provisioning Profile on my Apple Provisioning Portal with the new UUID - Save the updated Profile and then upload it back to Testflight.
Question - Can this (adding the new UUID to a profile) be done via Testflight itself? - i.e. can Testflight update my Profile with a new UUID or can this only be done via the Apple provisioning portal and then be brought back into Testflight
There are similar questions but none answer exactly the two questions I am looking for.
Best way to get UUID - is copy it from testers TestFlight profile when he will register device for testing.
You can update provisioning profile only at Developer Apple portal. But you can update provisioning profile for existing build by pressing Update Profile on build page.
1) You can always export device ID-s from your TestFlight users - exported file is
ready to be directly imported in your Apple Developer Portal.
And you always get an automatic email when new user (or new device) is added to you
TestFlight account.
As for what is the best way: who knows, it's really a matter of choice.
2) No. TestFlight can't create a new provisioning profile with devices added.
You have to create it by yourself (Apple Developer Portal):
add new devices to your developer account
add this devices to provisioning profile
regenerate and download provisioning profile
update provisioning profile for TestFlight build (https://stackoverflow.com/a/14265876/653513)
It's really much simpler:
Create team
Invite people by email
When they signup, they automatically email you their device UDID
Here's what TestFlight FAQ says about it: How does it work?
Step 4 is to manually add device id's into Apple site, generate new provision files, download and install, rebuild (hopefully using jenkins or something similar) and upload a new build to TestFlight (did I mention jenkins :))
1>Go to Project,Archive app.
2>In archive,click on distribute.
3>Click on save for enterprise or ad hoc deployment and save ipa file to your desktop
4>open https://testflightapp.com/dashboard/ and login
5>After login,click on upload your build button
6>Next click on drop your ipa file.Select .ipa file from desktop and upload it.
7>Selct provisioning profile by tick check mark and click update and notify button.
8>After clicking update and notify,Please click on share build button below update and notify.
9>Also you can see this share option by clicking permission on right hand menu.
10>After clicking share button,you need to provide your email id for showing testflight app in your mail inbox.
11>open test flight mail into your device and click on install button.
12>app automatically open testflight in your device,Please login with testflight,click on install profile button
13>After all click on app just you upload,click on install button. app will automatically install in your device.
Please tell me in case of any query regarding this.
Thanks
try TestFlight.top
Simple to invite testers
When a user requests to participate in your application test, you do not need to do any operation. Applicants only need to click on the download link in the page to directly download the test application. It is as simple as using the App Store

Resources