Obtenir le numéro de téléphone des appelants d'un appel entrant sur iPhone

J'essaie d'get l'identification de l'appelant (numéro de téléphone) au moment de l'appel entrant. TrueCaller a implémenté ceci et ils obtiennent le numéro de téléphone de l'appelant entrant.

J'ai trouvé cette information: 1. CoreTelephony Framework (Il ne donne que les états d'appel) 2. Mise à jour 9.0 d'Apple: "Peut-être" la synchronisation des contacts. avec l'application de messagerie et détecte le numéro de téléphone entrant.

    ###MODIFIER###

    iOS 10 et plus:

    Utilisez Callkit , jetez un oeil à l'extension du directory des appels

    Selon la documentation,

    Identifier les appelants entrants

    Lorsqu'un téléphone reçoit un appel entrant, le système consulte d'abord les contacts de l'user pour find un numéro de téléphone correspondant. Si aucune correspondance n'est trouvée, le système consulte l'extension Call Directory de votre application pour searchr une input correspondante permettant d'identifier le numéro de téléphone. Ceci est utile pour les applications qui maintiennent une list de contacts séparée des contacts du système, comme un réseau social, ou pour identifier les appels entrants qui peuvent être initiés à partir de l'application, par exemple pour le service client ou une notification de livraison .

    Par exemple, considérez un user qui est ami avec Jane dans une application de réseau social, mais qui n'a pas son numéro de téléphone dans ses contacts. L'application de réseau social a une extension d'annuaire d'appel, qui télécharge et ajoute les numéros de téléphone de tous les amis de l'user. Pour cette raison, lorsque l'user reçoit un appel entrant de Jane, le système affiche quelque chose comme "(App Name) Caller ID: Jane Appleseed" plutôt que "Unknown Caller".

    Pour fournir des informations d'identification sur les appelants entrants, vous utilisez la méthode addIdentificationEntry (withNextSequentialPhoneNumber: label 🙂 dans l'implémentation de beginRequest (avec :).

    class CustomCallDirectoryProvider: CXCallDirectoryProvider { override func beginRequest(with context: CXCallDirectoryExtensionContext) { let labelsKeyedByPhoneNumber: [CXCallDirectoryPhoneNumber: Ssortingng] = [ … ] for (phoneNumber, label) in labelsKeyedByPhoneNumber.sorted(by: <) { context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label) } context.completeRequest() } } 

    Étant donné que cette méthode est appelée uniquement lorsque le système lance l'extension d'application et non pour chaque appel individuel, vous devez spécifier les informations d'identification d'appel en une seule fois. Vous ne pouvez pas, par exemple, requestr à un service Web de searchr des informations sur un appel entrant.

    iOS 9 et plus tôt:

    Comme Kakshil l'a mentionné, l'identification de l'appelant n'est pas possible sur les appareils non jailbreakés.

    Et je vais vous donner quelques résultats sur la façon dont le véritable appelant fonctionne,

    1. Il ne lit pas l'historique des appels, ils ont effectivement créé l' extension Action , où que vous essayiez de partager un contact, il affiche l'extension de l'application truecaller, qui code pour afficher les détails de contact récupérés sur leur server

    2. Vous pourriez également être confondu avec la notification push reçue pour quelques appels, en disant "Certains X vous appelle". C'est là que Truecaller a utilisé un truc. Si vous avez remarqué clairement, cette notification push ne sera reçue que lorsque vous recevez un appel d'un user android avec truecaller installé. Laissez-moi vous expliquer en détails,

    X (user android avec truecaller installé), appelant Y (user ios avec truecaller installé), la version Android notifier le server que X faisant appel à Y. Et le server enverra une notification push à l'iPhone de Y.

    L'identification de l'appelant n'est pas possible sur les appareils non jailbreakés.

    Cependant, il existe un moyen, dans lequel vous pouvez savoir quel user appelle, mais pas sûr si cela vous sera utile.

    Si vous avez un appareil bluetooth, connecté à l'iPhone, il recevra toutes les notifications, y compris les appels entrants, pour lesquels vous pourrez alors get l'identifiant de l'appelant.

    En dehors de cela, il n'y a actuellement aucun autre moyen de connaître l'identité appelée.