You should understand that Mobile Push handles both Unknown and Identified mobile contacts.
First, start from your Use cases and decide if you want to target only Identified contacts or more widely also Unknown contacts (called also devices / app holders / mobile prospects).
After installing your mobile application and before logging into it, a contact is still unknown. You will have to choose if you want to have him in your MobilePush contact list.
If yes, intilializing the SDK will create a new mobile push contact with a random
GUID generated automatically.
If no, you will have to delay Registration Until a Contact Key is set.
When this contact logs in your application, you will have to retrieve the
PersonContactId and register it using the SDK.
If you choosed to have Unknown contacts, they will be converted into an identified contact after registration ( the
GUID will be updated by
PersonContactId for the same
In order to retrieve the
PersonContactID, I believe that you already have it as part of your authentication Service. If not, you will have to implement an API Call to the Salesforce Platform prior to registering the contact in MobilePush SDK.