Take a look at "Get(PersistentID)." I think that will work for you.
Get( PersistentID )
Returns a unique, unchanging identifier for the computer on which FileMaker Pro is running, the device on which FileMaker Go is running, or the current FileMaker WebDirect session in the form of a 32-digit hexadecimal string. Get(PersistentID) helps you identify devices that access your solution.
I'll try Get(PersistentID) and thanks for the tip -- but it won't solve my problem.
I am working on a solution for someone who is buying quantities of iPads and needs to insure that the only iPads eligible to log in to the solution are those which he has purchased. When Apple gives him the list of serial numbers and IMEI numbers associated with his purchase, he can enter those numbers into a table to validate those who try to access the solution. So I don't know if the Persistent ID will work because it probably isn't known in advance and may expire with the session.
But I'll explore it. thanks again.
The persistentid is "pretty" persistent :-) I made a solution where everynew device that logs into a database gets logged using the persistentID the admin can then authorize the device.
Since one person is "preparing" all the iOS devices with apple contfigurator this works pretty wel. This does require that the "admin" person starts up the iPad and opens the database at least once. But he can at that moment also "assign" the device to a specific user or application.
I was looking at get.udid.io in combo with a webviewer... It installs a profile on your ios device and after that you retrieve UDID, serial, IMEI etc..
The MBS plugin is nice as wel in this regard, but not usable on ios :-(
Guess we should put in a request for a Get(SystemInfo) function :-)
*pretty means not really... Once you assign a new user in Apple Configurator to an iPad it generates a new ID it seems... In webaccess it's just the sessionID.
What you can do is have a Device table of PersistentID and serial number. Enter (import) your serial numbers into this table.
When a user logs in, run a script that:
Finds the Persistent ID on the Device table
If the ID is found, continue as normal.
If the ID is not found, ask the user to enter the serial number.
Do a find on the Device table for the serial number.
If it is not found, show an error message and exit.
If it is found, check to see if it has a Persistent ID. If so, show an error message and exit.
If it is found and has no ID, set the field to the iPad's Persistent ID. You've now authorized that device.
Richie has the workflow right for ensuring that access is limited to approved devices.
iOS 7 made Get ( SystemNICAddress ) useless by refusing to return the correct value as a security feature of the OS. Apple is unlikely to change that in the future. Apple doesn't want apps uniquely identifying devices, except through Apple-approved channels that presumably provide a reasonable firewall between the app vendor and the user, which is exactly what Get ( PersistentID ) does using Apple's identifierForVender. Get ( PersistentID ) will return the same value on the same device all the time, with some caveats. Anything that resets Apple's identifierForVender will reset Get ( PersistentID ): uninstalling all FileMaker apps and reinstalling one, restoring a backup to a new iOS device.
JB has a good point about the Persistent ID reset.
You'll need some ability to clear a Persistent ID from a serial number. Perhaps you ask for an e-mail address with the initial authorization and ask for it again to reset the ID in the Device table (and send an e-mail to the original address as an extra security check).