{ "id": "116845", "key": "TIMOB-16259", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "7", "description": "", "name": "Invalid" }, "resolutiondate": "2016-09-02T06:47:41.000+0000", "created": "2013-07-03T16:05:18.000+0000", "priority": { "name": "Low", "id": "4" }, "labels": [ "alloy", "identifierforvendor", "ios", "provisioning" ], "versions": [], "issuelinks": [], "assignee": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-23T21:35:38.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "I have several iPad Apps distributed via an Enterprise Provisioning Profile. We use the IdentifierForVendor as a means to determine if the iPad has been authenticated to run our apps.\r\nWe have however, run into a snag with our first Alloy (3.1.0 GA) project. When signed with the same Provisioning Profile for Enterprise distribution, the installed app generates a different IdentifierForVendor.\r\nIn order to be certain that this is as a result of using an Alloy project, I created a simple hello world Alloy app to install via ad-hoc means to see what it's vendor id would be. The id of the hello world app turned out to be the same as the other Alloy Project App.\r\nHas anyone else encountered this issue? And if so, is there anything that can be done to get the ids to be the same for both kinds of projects?\r\n\r\nQ&A: http://developer.appcelerator.com/question/154425/different-identifierforvendor-with-alloy-project-versus-titanium-project", "attachment": [], "flagged": false, "summary": "iOS: Alloy Project has a different IdentifierForVendor than a Titanium Classic project", "creator": { "name": "todd.brandys@peak10.com", "key": "todd.brandys@peak10.com", "displayName": "Todd Brandys", "active": true, "timeZone": "America/New_York" }, "subtasks": [], "reporter": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "260967", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Forgive my ignorance, but how do you actually set this IdentifierForVendor value? I know Alloy certainly does nothing specific that would impact this. It may be a simple matter of how the files are processed during compilation, but I need to know a little more about how its used.", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-07-08T16:58:15.000+0000", "updated": "2013-07-08T16:58:15.000+0000" }, { "id": "260974", "author": { "name": "todd.brandys@peak10.com", "key": "todd.brandys@peak10.com", "displayName": "Todd Brandys", "active": true, "timeZone": "America/New_York" }, "body": "Tony, since Apple is now blocking the use of the UDID, we have started using the IdentifierForVendor call in iOS to get an automagically generated vendor id. It is based on the provisioning profile used to sign the app for distribution. It is not directly set. We authored a Titanium module to provide access to the iOS IdentifierForVendor function. In my case, I have one app developed using the general Titanium environment and another using Alloy. Each app has a different vendor id, which should not be possible.\r\n\r\nHowever, if I create a second general Titanium App, the vendor Id matches any other standard app. If I create a second Alloy app, the vendor id matches any other Alloy app. However, the vendor id for all apps should be the same. Below I have included the actual iOS code that can be added to a newly created Module to yield the same module that we have built.\r\n\r\n{code}\r\n-(id)deviceId\r\n{\r\n return [[[UIDevice currentDevice]identifierForVendor] UUIDString];\r\n}\r\n\r\n-(id)deviceName\r\n{\r\n return [[UIDevice currentDevice]name];\r\n}\r\n{code}", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-07-08T17:48:38.000+0000", "updated": "2013-07-08T20:50:46.000+0000" }, { "id": "395183", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "According to Apple's docs https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/#//apple_ref/occ/instp/UIDevice/identifierForVendor:\r\n\r\n{quote}\r\nIf the app was not installed from the app store (such as enterprise apps and apps still in development), then a vendor identifier is calculated based on the app’s bundle ID. The bundle ID is assumed to be in reverse-DNS format.\r\n{quote}\r\n\r\nIn other words, that's the way it's suppose to work.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-09-02T06:47:42.000+0000", "updated": "2016-09-02T06:47:42.000+0000" }, { "id": "415409", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as invalid with reference to the previous comments.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-23T21:35:38.000+0000", "updated": "2017-03-23T21:35:38.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }