11
votes

Utilisation de STARTMONORINGINGEventWithType: Erreur: dans l'effort de détection du changement de SSID WiFi

Apple semble introduire tout un changement de Yosemite et cadre CoreWLAN. Je voudrais utiliser sa nouvelle API, citant le fichier d'en-tête:

Error Domain=com.apple.wifi.request.error Code=4 "The operation couldn’t be completed. (com.apple.wifi.request.error error 4.)"


3 commentaires

Cwwificlient semble avoir des problèmes: forums.developer.apple.com/thread/11307 mai avoir recours à l'API obsolète pour le moment :(


Merci @jvmk pour ce lien. Peut-être devriez-vous envisager de l'afficher comme une réponse.


suivi vos conseils et avez posté une réponse. Je m'abstiens de la publier comme une réponse au début car il n'aura pas de valeur à long terme, c'est-à-dire que le bogue sera corrigé bientôt :).


3 Réponses :


3
votes

Cela fait le même travail ce que vous voulez réaliser dans ci-dessus. Il vous avère chaque fois que SSID change

Pour que vous puissiez obtenir ces notifications que vous devez tenir à une instance de CWINTERFACE. Votre .h ressemblerait à ceci xxx

puis dans votre fichier .m ressemblerait à ce xxx

Prenez soin de toi Utilisation du nom de l'interface EN1 ou EN0. Vérifiez votre système SysyTem en vous voyant à quelle interface IP est présent en donnant IFCONFIG


3 commentaires

Merci @Syammala pour la réponse. Ces notifications sont obsolètes dans le système d'exploitation X 10.10. Je cherche à utiliser la nouvelle API qui est suggérée dans la note de dépréciation en Xcode. Je me souviens de faire face à cette question sur 10.10.1, je n'ai pas vérifié si 10.10.3 incluait une solution pour cela, mais je pense que cela fait.


Non @Synamala Votre réponse n'a pas aidé. Ma question était concernant une API spécifique. S'il vous plaît prenez un autre regard sur le titre. En outre, dans la première phrase de l'organe de la question, j'étais clair et dit: "Je veux utiliser la nouvelle API".


Je reçois le même problème sur 10.10.3. Erreur de signature de code lorsque j'ajouterais com.apple.wifi.events aux droits et aux droits CWSSidDidChangénotification maintenant amortissés ...



4
votes

Il semble qu'il y ait actuellement le (31 juillet 2015) un bogue dans cwwificlient : les droits ne sont pas correctement accordés. Cela s'étend même aux applications non sandulaires. Voir Cette question sur les forums de développeurs Apple pour plus d'informations.

En conséquence, nous devrons peut-être recourir à l'API obsolète pour le moment. Syammala fournit un Bon exemple de Comment utiliser l'API obsolète.


0 commentaires

3
votes

Vous devez utiliser CweventDelegate avec StartmonitoringEventwithType, selon le document de CweventDelegate: https://developer.apple.com/documentation/corewlan/cweventdelegate

L'ensemble du code est: p>

p>

- (void)testDelegateMethod{
    [CWWiFiClient sharedWiFiClient].delegate = self;
    
    NSError *error;
    [[CWWiFiClient sharedWiFiClient] startMonitoringEventWithType:CWEventTypePowerDidChange error:&error];
    [[CWWiFiClient sharedWiFiClient] startMonitoringEventWithType:CWEventTypeSSIDDidChange error:&error];
    [[CWWiFiClient sharedWiFiClient] startMonitoringEventWithType:CWEventTypePowerDidChange error:&error];
    [[CWWiFiClient sharedWiFiClient] startMonitoringEventWithType:CWEventTypeLinkDidChange error:&error];
    [[CWWiFiClient sharedWiFiClient] startMonitoringEventWithType:CWEventTypeNone error:&error];
    
    if (error) {
        NSLog(@"error : %@",error);
    }
}

#pragma mark - CWEventDelegate
- (void)clientConnectionInterrupted{
    NSLog(@"-- clientConnectionInterrupted");
}

- (void)clientConnectionInvalidated{
    
    NSLog(@"-- clientConnectionInvalidated");
}


- (void)powerStateDidChangeForWiFiInterfaceWithName:(NSString *)interfaceName{
    NSLog(@"-- %@ powerStateDidChange  ",interfaceName);
}

- (void)ssidDidChangeForWiFiInterfaceWithName:(NSString *)interfaceName{
    NSLog(@"-- %@ ssidDidChange",interfaceName);
}


1 commentaires

Merci @melissa. Je ne travaille plus sur ce projet, mais je pense que c'est génial que vous ayez ajouté cette réponse mise à jour. J'espère que cette information sera utile pour quelqu'un d'autre.