What is the best way to identify an app-user on different devices

The situation is an app, which stores user data on a server. This data will be processed, so iCloud is not possible for storage.

The actual idea:

If the app is installed for the first time, the identifierForVendor will be stored in a file and backed up on iCloud. So i can access the same (also on new devices or after reinstall) identifier all the time, if iCloud is enabled by the user. 

Some questions about that:

  1. Is it better to use a self created identifier instead the identifierForVendor? Is it really unique and can’t be created twice by different users maybe later?

  2. Is there maybe a complete other better approach.

  3. Some other doubts or suggestions

Thanks!