Mobile application distribution services for iOS. Part 2: HockeyApp


    The second part of the review will be devoted to the HockeyApp service , the first part of the review can be found here .

    Apparently, Miscrosoft decided to keep up with Apple, as a result of which the acquisition of HockeyApp was announced in early December (more on the HockeyApp blog and Microsoft website ). Unlike Apple, Microsoft did not reduce the functionality of the service or limit the list of supported platforms. The press release says that the service will continue its work unchanged, and in the future will receive development, the details of which we will learn later.

    Evaluation system: services are evaluated on a 10-point scale for each of the sections (Registration and Integration, Basic Functionality, Additional Functionality, Continuous Integration). The total score will determine the winner (the final conclusion will be included in the last part of the review).


    Registration and integration

    Registration in the service is simple, with mandatory confirmation by e-mail. A free account does not allow full use of the service - only participation as a tester is available, or the use of the service without restrictions as part of another team (organization’s account). In order to evaluate the service, it is possible to enable the Trial mode - for 1 month (moreover, the trial period will begin only from the moment the profile of the first application is created, and not from the day of registration). The cost of a paid account starts at $ 10 per month, more details can be found here. Of the advantages, it can be noted that for any type of paid accounts there are no restrictions on the size of the stored data and the number of users associated with the account. The difference between different tariff plans in the number of applications and the number of accounts with the “Owner” type (only for tariff plans of the “Business” category).

    The only wish for the account creation process is to make the result of choosing the “I'm developer" option clearer:

    Now that it is not selected by default, the following explanation can be interpreted as a list of features that are already available, and if you select an option, something else is expected to appear. In fact, the default account only allows you to view the list of available applications (and, of course, install them), add your devices and leave feedback.

    Separately, I would like to note that the service website has a special guide for those developers who need to migrate a project using TestFlight of the old version (before switching to Apple): .

    Integration with the SDK is also quite simple, but of course far from ideal, which, in my opinion, is currently the solution used by Fabric( Crashlytics ) - we will talk about it in the final - fourth - part of the review.

    Rating: 7/10.

    Main functionality

    Note (updated June 15, 2015): when talking about the distribution of iOS apps, you need to remember that at the moment, all services except Apple’s TestFlight should still consider the number of devices available when using AdHoc provision profiles. Therefore, the maximum number of devices used is 100 per device family (this condition was changed on June 8, 2015, after the announcement at WWDC that all developers programs were merged into one), which includes devices used directly by developers. The biggest limitation is that the list of registered devices can be “reset” only once a year, after renewing the subscription to the iOS Developer Program (possibly in the future this condition will be changed).

    The next step after activating a new HockeyApp account (of any type) is to register a device that will be used to install test versions of applications: The

    service offers several ways:
    • Follow the link in a mobile browser on the device
    • reading a QR code (in which the same link is encoded)
    • manual id adding

    An interesting point: during the initial registration of the test device, I did not receive a notification by mail that a new device was added and is available for use. However, in the future, when registering a new device to another account, the service automatically determined that a device with such a UDID was already included in the provision profile of the application and a notification was sent to my mail with the ability to invite a new user to my team:

    Another general comment: site HockeyApp often uses special “popups” to report the result of an action. For example, after inviting a new user, a new (temporary) block will appear at the top of the page with a message:

    This method can be considered convenient (there is no need to manually close the pop-up windows with notifications), but you need to get used to it, since the notification block is inserted inside the container with the main content of the page and when you scroll it, the block can hide under the navigation panel, i.e. become invisible.

    The service also allows you to import a list of users from a text file:

    The contents of the file can be either minimal (only an email address), or with additional data (name and role).

    Note. The role is encoded as follows:
    • “1” means Developer
    • “2” - Member
    • “3” - Tester

    You can assign the role of “Owner” (or any other) on the user management page. Learn more about the roles here and here .

    A new build can be sent either manually through the service website:

    Or in semi-automatic mode, if a desktop application is installed - in this case it will be enough to archive the project (Product-Archive) - then select Upload in the pop-up that appears:

    And then finish the publication, if necessary, specify additional settings in the window that appears:

    Note: Release type - it may be Store - in this case only debugging symbols are uploaded to the service website - the application itself cannot be downloaded from the service client, but the collection and analysis of crash reports will be produced.

    Important: the build number should always increase! Since, even if the version is changed, the assembly number cannot be used in a value less than what was used before. If you still violate this rule, then the new build will be considered “old” and, as a result, the automatic notification about the availability of a new version will not work and the “incorrect” build will not appear at the top of the list in the information about the application version history ( more ) .

    Even if the desktop application was not running at the time of preparing the archive, you can download all archived versions from the “Upload New Build” section:

    Release notes can be in plain text or with additional formatting using the common Markdown markup language .

    When downloading a new version of an application through the service website, it is possible to restrict access to this version (using the Restrict downloads option - this option is inactive in a desktop application).

    You can also choose to notify all users (to whom this version of the application will be available) or notify only individual users (when using the desktop application, you can only choose between two options: send a notification or not send):

    Note: a possible bug: after downloading a new version without notification, the Notify button (Manage version, Status tab) does not lead to any action.

    Also, when downloading, you can specify that this version is mandatory - in this case, the user will not be able to continue using the older version of the application - a notification about the availability of an update will be displayed every time and you cannot refuse it (provided that the application uses the service framework).

    The initial installation of the HockeyApp web application on a mobile device is carried out in several steps:

    Icon of the installed HockeyApp web application:

    There is an opportunity to install previous versions of the application, but this functionality is not very convenient. It is not available from the application page on the History tab, and in order to use it, you need to go to the Overview section through the menu (top right), select the Versions subsection there, find the version you need in it, open the page with detailed information and the installation will be available only there .

    The functionality of sending feedback in HockeyApp is somewhat better than that implemented in Apple TestFlight, since it allows you to attach up to three attachments to the message (but this option is available only on tablets):

    The attachments themselves are placed in AWS cloud storage, so theoretically there is the ability to send as video -files and simple screenshots with no file size restrictions.

    Important:switching between the Details and Feedback tabs on the feedback sending page causes it to reload. Keep this in mind so as not to lose the text of the typed message.

    Immediately after sending a review, it is displayed on the Feedback tab, but it is saved there only temporarily, on mobile devices all messages can be viewed:
    • on iPad: Dashboard - Feedback tab
    • on iPhone / iPod Touch: detailed application information - upper right menu - Overview - Feedback

    Note: The ability to view sent messages also depends on the user role and device type.

    The existing differences in the functional for devices of various types, I attribute to the shortcomings of the service. Perhaps this shortcoming is temporary and in the future the functionality and interface will be maximally unified.

    The disadvantages of the current implementation include the inability to track changes in the revocation status (Open / Waiting / Resolved / Ignored) for all users except those who are members of the Owner group. This functionality is available to them in the regular / "desktop" version of the website - for users of other groups, the service does not even provide notification by e-mail.

    Important:the biggest drawback, in my opinion, is the fact that reviews are not associated with the version of the application, so you must specify it manually, if that matters.

    Finally, as a plus, I note the ability to leave comments on reviews (again, with support for attachments when working with the service on a tablet).

    Rating: 8/10.

    Additional functionality

    I think that all developers will agree with the thesis “it’s better to see once than hear a hundred times” in relation to the software testing process. Indeed, often the information provided by testers is either incomplete or erroneous, as it is partially based on guesses. Therefore, ordinary reviews can be insufficient and in this case, additional functionality comes to the aid of developers, in particular, “symbolization” of reports about the crash of the application.

    Similar functionality in HockeyApp is implemented at a very good level. Sending crash reports works right out of the box (naturally, if the application uses the service framework). Reports can be sent in fully automatic mode (after restarting the application), or with a request for sending with confirmation by the user (the mode is selected once and it can be reset by reinstalling the application).

    If you used a desktop application when sending the new version, or debugging symbols (* .dSYM) were downloaded additionally from * .ipa, then the service automatically carries out “symbolization”, allowing you to uniquely identify the class, method and line number that caused the error:

    Also, the service grouping the received reports, helping to assess the scale / frequency of the problem and therefore determine the priority in correcting the identified errors (in the screenshot above, the number of reports in the group can be seen in the Count column, more about Grouping principles can be found here ).

    Moreover, if access to the project repository is configured in the desktop application of the service, in the detailed information for the crash report you can immediately see the “quote” with the code, and also open the class in Xcode:

    Additionally, it is possible to download the crash report manually, but this can only be done on the service website:

    Note: recommendations for resolving problems with “symbolization” can be found here .

    In addition, the service provides the ability to integrate with the error tracking system (for example, Basecamp or JIRA, the full list is here ).

    After the connection with such a system is established, the service can add new entries (tickets) in automatic mode:

    Note: by default, the automatic creation option is disabled. It is also possible to set the minimum number of reports received in a group, after which automation is triggered.

    Manually creating a new ticket based on error data is possible only on the service website:

    As analytical data, the service offers a graphical representation of information about the number of crash reports, downloads, installations, as well as statistics on the use of a particular version of the application:

    Source code for the client part The SDK is accessible to all comers - this way the service demonstrates its transparency for Enterprise clients.

    Additional links:

    Rating: 9/10.

    Continuous integration


    1. The nuances of using the services described below as part of continuous integration in this review imply that it will be made on the basis of the solution offered by Apple. That is, with the help of Mac OS X Server and Xcode bots - I will not dwell on the organization of such integration in detail, perhaps this will be the topic for a separate article. Those who wish can familiarize themselves with the topic on their own, for example, by contacting Apple's official guide .

    2. Unfortunately, at the moment, Apple's CI setup does not always go smoothly. As a rule, problems arise with signing identity and provision profiles, in order to solve them, in the simple case it is enough to install the latest version of OS X Server (at the time of publication 4.0.3 for OS X Yosemite) and add the Apple Developer account in the Xcode settings. If the problems remain, then in my case it was required:
    • add the used certificate and key to keychain System
    • copy the used provision profile to the folder “/ Library / Developer / XcodeServer / ProvisioningProfiles /” (error message “No provisioning profiles containing one of the following signing identities was found”)
    • add an exception for codesign in the properties for the key (otherwise, if the bot is configured to create an archive, integration will not be able to complete and will stop with the error “Creating archive failed: xcodebuild exited with status 15”, more )

    The script for use with Xcode bots can be in two versions: using curl or using the special puck utility (it can be installed together with the desktop version of the HockeyApp client, more details ):

    In the second case, you need to create a symlink for puck: “sudo ln -s / usr / local / bin / puck / usr / bin / puck ”, otherwise the bot will not be able to execute the necessary script.

    The script itself is added at the last step of the bot creation / configuration wizard:

    puck -download=true -notify=true -force=true -submit=auto -app_id=APP_ID -api_token=API_TOKEN "${XCS_ARCHIVE}"
    APP_ID - можно найти на странице приложения
    API_TOKEN - создается в настройках аккаунта на вкладке “API Tokens”

    As additional parameters, you can specify (including):

    -notes=                             release notes text (single line only!)
    -notes_path=                        absolute path to release notes file
    -tags=            restrict version to tags
    -teams=           restrict version to team IDs
    -users=           restrict version to user IDs

    A complete list of options can be obtained by running puck -help.

    Rating: 9/10.

    Total total score for all sections: 33 points.

    Part 1. Apple TestFlight . To be continued...

    Also popular now: