2013-04-30 2 views
2

Je développe une application simple qui est utilisée pour lire le code QR vCard et afficher les détails des informations de contact dans le code QR vCard. Je suis capable de scanner la carte de visite et obtenir les détails sur le contact comme suitiPhone: Comment obtenir chaque élément du code QR vCard?

BEGIN:VCARD 
VERSION:2.1 
N:XX;XXXXXXXX 
FN:XXXXXXXXX XX 
TEL;WORK;VOICE:91999999999 
EMAIL;WORK;INTERNET:[email protected] 
END:VCARD 

Mais je dois analyser chaque élément en elle. Comment analyser les détails et quelles sont les façons d'analyser?

+0

nous avons besoin du code comment récupérer cette information signifie le code QR code fo que vous utilisez. –

+0

@SAMIRRATHOD J'utilise Zbar sdk pour ça. – sachi

Répondre

1

Les points de documentation à cette méthode:

- (void) imagePickerController: (UIImagePickerController*) reader 
didFinishPickingMediaWithInfo: (NSDictionary*) info 
{ 
    id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults]; 

    ZBarSymbol *symbol = nil; 

    for(symbol in results){ 

     NSString *upcString = symbol.data; 

     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Scanned UPC" message:[NSString stringWithFormat:@"The UPC read was: %@", upcString] delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil]; 

     [alert show]; 

     [reader dismissModalViewControllerAnimated: YES];  
    }  

}

je voudrais d'abord voir ce qu'il retourne peut-être essayer en boucle le dictionnaire des données supplémentaires

+1

Il montrera même que j'ai dit dans ma question. BEGIN: VCARD VERSION: 2.1 N: XX; XXXXXXXX FN: XXXXXXXXX XX TEL; TRAVAIL; VOICE: 91999999999 EMAIL; TRAVAIL; INTERNET: [email protected] END: VCARD – sachi

+0

BEGIN: VCARD VERSION: 3.0 N : Peter ;;;; FN: Peter TITRE: CEO ORG: qrd ° par URL; WORK: qrd.by EMAIL; INTERNET: [email protected] END: VCARD Au-dessus de la chaîne get quand je scanne QRCode. Maintenant je dois montrer le formulaire de contact rempli automatiquement comme ceci. voir l'URL. https://blog.qrd.by/wp-content/uploads/2017/09/vcard-qr-code.jpg S'il vous plaît, aidez-nous – Ashu

0

vous pouvez utiliser l'encodeur de QRCode

Encoder

1

Eh bien, il est assez long que cette question est posée. Mais répondre maintenant pourrait aussi aider quelqu'un à naviguer sur cette page. Vous pouvez utiliser la méthode ci-dessous comme référence pour analyser les données VCF.

NSString *str = [NSString stringWithString:response.vcfString]; 
    NSArray *subStrings = [str componentsSeparatedByCharactersInSet:[NSCharacterSet  characterSetWithCharactersInString:@"\n"]]; 
    NSArray *getData = [[NSArray alloc]init]; 

    NSString *arr = @""; 

    for (int i=0;i<[subStrings count];i++) 
    { 
     arr = [subStrings objectAtIndex:i]; 

     NSArray *abc = [arr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@";"]]; 

     if([[abc objectAtIndex:0] isEqualToString:@"FN"]) 
     { 
      getData=[[abc objectAtIndex:1] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"] ]; 

      if([getData count] > 1) 
      fullName = [getData objectAtIndex:1]; 
     } 
     else if([[abc objectAtIndex:0] isEqualToString:@"N"]) 
     { 
      getData=[[abc objectAtIndex:1] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

      if([getData count] > 1) 
      lastName = [getData objectAtIndex:1]; 
      FirstName = [abc objectAtIndex:2]; 
     } 
     else if([[abc objectAtIndex:0] isEqualToString:@"TITLE"]) 
     { 
      getData=[[abc objectAtIndex:1] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

      if([getData count] > 1) 
      title = [getData objectAtIndex:1]; 
     } 
     else if([[abc objectAtIndex:0] isEqualToString:@"TEL"]) 
     { 
      NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
      if([abc count] == 3) 
      { 
       getData=[[abc objectAtIndex:2] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

       if([[abc objectAtIndex:1] isEqualToString:@"WORK"]) 
       { 
        if([getData count] > 1) 
         [dict setObject:[getData objectAtIndex:1] forKey:@"Tel"]; 
       } 
       else if([[abc objectAtIndex:1] isEqualToString:@"CELL"]) 
       { 
        if([getData count] > 1) 
         [dict setObject:[getData objectAtIndex:1] forKey:@"Tel"]; 
       } 
      } 
      else if([abc count] == 4) 
      { 
       getData=[[abc objectAtIndex:3] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

       if([[abc objectAtIndex:1] isEqualToString:@"WORK"] && [[abc objectAtIndex:2] isEqualToString:@"FAX"]) 
       { 
        if([getData count] > 1) 
         [dict setObject:[getData objectAtIndex:1] forKey:@"Tel"]; 
       } 
      } 
      else 
      { 
       getData=[[abc objectAtIndex:1] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

       if([[getData objectAtIndex:0] isEqualToString:@"WORK"]) 
       { 
        if([getData count] > 1) 
         [dict setObject:[getData objectAtIndex:1] forKey:@"Tel"]; 
       } 
       else if([[getData objectAtIndex:0] isEqualToString:@"FAX"]) 
       { 
        if([getData count] > 1) 
         [dict setObject:[getData objectAtIndex:1] forKey:@"Tel"]; 
       } 
      } 
      [_telList addObject:dict]; 
     } 
     else if([[abc objectAtIndex:0] isEqualToString:@"EMAIL"]) 
     { 
      NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 

      if([abc count] == 3) 
      { 
       getData=[[abc objectAtIndex:2] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

       if([[abc objectAtIndex:1] isEqualToString:@"WORK"]) 
       { 
        if([getData count] > 1) 
         [dict setObject:[getData objectAtIndex:1] forKey:@"Email"]; 
       } 
      } 
      else 
      { 
       getData=[[abc objectAtIndex:1] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

       if([getData count] > 1) 
        [dict setObject:[getData objectAtIndex:1] forKey:@"Email"]; 
      } 
      [_emailList addObject:dict]; 
     } 
     else if([[abc objectAtIndex:0] isEqualToString:@"ORG"]) 
     { 
      NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 

      if([abc count] == 5) 
      { 
       getData=[[abc objectAtIndex:2] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

       if([[abc objectAtIndex:1] isEqualToString:@"WORK"]) 
       { 
        NSString *orgStr = @""; 
        if([getData count] > 1) 
        { 
         orgStr = [getData objectAtIndex:1]; 
        } 
        [dict setObject:[orgStr stringByAppendingString:[abc objectAtIndex:4]] forKey:@"Org"]; 
       } 
      } 
      else 
      { 
       getData=[[abc objectAtIndex:1] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

       if([getData count] > 1) 
        [dict setObject:[getData objectAtIndex:1] forKey:@"Org"]; 
      } 
      [_orgList addObject:dict]; 
     } 
     else if([[abc objectAtIndex:0] isEqualToString:@"ADR"]) 
     { 
      NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 
      if([abc count] == 9) 
      { 
       [dict setObject:[abc objectAtIndex:4] forKey:@"Add"]; 
       [dict setObject:[abc objectAtIndex:8] forKey:@"Country"]; 
       [dict setObject:[abc objectAtIndex:7] forKey:@"Zip"]; 
       [dict setObject:[abc objectAtIndex:5] forKey:@"City"]; 
      } 
      else 
      { 

      } 

      [_addrList addObject:dict]; 
     } 
     else if([[abc objectAtIndex:0] isEqualToString:@"URL"]) 
     { 
      NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 
      if([abc count] == 3) 
      { 
       getData=[[abc objectAtIndex:2] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

       if([getData count] > 1) 
        [dict setObject:[getData objectAtIndex:1] forKey:@"Url"]; 
      } 
      else 
      { 
       getData=[[abc objectAtIndex:1] componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":"]]; 

       if([getData count] > 1) 
        [dict setObject:[getData objectAtIndex:1] forKey:@"Url"]; 
      } 

      [_urlList addObject:dict]; 
     } 
     else 
     { 

     } 
    } 


    NSLog(@"Details: \nFull Name - %@\nLast Name - %@\nFirst Name - %@\ntitle - %@\nEmail - %@\norg - %@\nAddress - %@\nUrl - %@", fullName,lastName,FirstName,title,[[_emailList valueForKey:@"description"] componentsJoinedByString:@""],[_orgList description],[_addrList description],[_urlList description]); 
0

Vous pouvez utiliser CNContactVCardSerialization pour obtenir CNContact objet à partir des données

import Contacts 
    if let data = str.data(using: .utf8) { 
     do { 
      let contacts = try CNContactVCardSerialization.contacts(with: data) 
      let contact = contacts.first 
      print("\(String(describing: contact?.familyName))") 
      return contact 
     } catch { 
      print("Contact Error: \(error.localizedDescription)") 
     } 
    } 
+0

COMMENCER: VCARD VERSION: 3.0 N: Peter ;;;; FN: Peter : PDG ORG: QRD ° par URL; TRAVAIL: https: //qrd.by EMAIL; INTERNET: [email protected] END: VCARD Au-dessus de la chaîne obtenez lorsque je scanne QRCode. Maintenant je dois montrer le formulaire de contact rempli automatiquement comme ceci. voir l'URL. https://blog.qrd.by/wp-content/uploads/2017/09/vcard-qr-code.jpg S'il vous plaît aider – Ashu

+0

@Ashu. Je pense qu'Apple ne fournit aucune API publique pour afficher le formulaire de contact par défaut. Actuellement, nous devons le créer manuellement. –

+0

Mais une autre application le fait également – Ashu