Refresh Whatsapp contacts programmatically

IosWhatsapp

Ios Problem Overview


I am making a function in iOS where I am adding a new contact to a user's address book programmatically, which is all going fine. The next step is to send that new contact a message via Whatsapp, which is not very hard either. The purpose is to directly show the chat screen with the new contact. The problem is however that Whatsapp does sync it's contacts now and then. I am using the following intent for Whatsapp:

var whatsappUrl = (NSURL(string:"whatsapp://send?text=\(encodedmessage)&abid=\(id)"))      

Where the message is an encoded string and the id is the id from the freshly added contact. When my program opens Whatsapp with that method, everything is going fine when the contact was already in the address book. When that contact is newly added, the Whatsapp screen will not go directly to that screen. Instead it will show the picker for all the contacts.

Long story short, I want to refresh Whatsapp's contacts using my code, in order to send the user directly to the Whatsapp chat screen of the new contact instead of the contact picker screen, which is because Whatsapp's contacts are not synced yet with the new contact.

Ios Solutions


Solution 1 - Ios

It is recommended that you should not interact with other 3rd party apps unless they provide a handle to interact. Which is already given by whatsapp as openurl scheme.

In case you have the contact that is removed or added you should address the issue first in your app so it doesn't/does initiate the action to open App before evening checking with wahtsapp.

You can use a great library that APAddressBook to do the contact add and modified check.

Solution 2 - Ios

Obviously you can't. Since WhatsApp's sync procedure is done inside the app itself, you will not be able to do a sync outside the app. What you could try to do is adding the full number with country code in the URL, then parse it to WhatsApp. WhatsApp should do a presence subscription, and so you will be able to send a message to that number.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNiels RobbenView Question on Stackoverflow
Solution 1 - IosVicky DhasView Answer on Stackoverflow
Solution 2 - Iosgi097View Answer on Stackoverflow