Aller au contenu


Photo

Extension : règle d'activation


  • Please log in to reply
11 réponses à ce sujet

#1 SansFromage

SansFromage

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 18 messages

Posté 17 juillet 2017 - 09:50

Bonjour,

 

je développe un application contenant une extension permettant d'enregistrer un fichier en pièce jointe d'un mail (fichier .klm) dans mon application.

 

Or lorsque j'enlève la Valeur TRUEPREDICATE de mon fichier info.plist et que je la remplace par 

 

<key>NSExtension</key>

<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsAttachmentsWithMinCount</key>
<integer>1</integer>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.ui-services</string>
</dict>
 
elle n'apparait plus.
 
Quelqu'un aurait-il une idée ?
En vous remerciant par avance


#2 SansFromage

SansFromage

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 18 messages

Posté 01 août 2017 - 11:04

Personne n'a d'idée ?  :snif:



#3 Larme

Larme

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 981 messages
  • LocationParis

Posté 01 août 2017 - 11:08

Je n'ai jamais touché à ce genre de features, mais il n'y a aucune référence à "klm" dans ton plist ?


Tant que vous avez des dents, mangez des pommes. Tant que vous avez de l'argent, croquez la Pomme.

#4 SansFromage

SansFromage

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 18 messages

Posté 01 août 2017 - 11:26

Non effectivement car si j'ai bien compris le "NSExtensionActivationSupportsAttachmentsWithMinCount" devrais activer l'extension lorsqu'il y a une pièce jointe au mail quelque soit le format... et ce n'est même pas le cas ^^



#5 Eric P.

Eric P.

    Torréfacteur de fèves

  • Artisan chocolatier
  • PipPipPipPipPip
  • 725 messages
  • LocationTours

Posté 01 août 2017 - 12:37

Bonjour,

 

Si j'ai bien compris tu souhaites utiliser la fonction "Ouvrir dans" ou "Copier dans" depuis d'autres apps vers la tienne.

N'est-ce pas avec les "Document Types" et les "Exported UTIs" que l'on obtient cette fonctionnalité ?

 

Tu ne détailles pas beaucoup ton problème.

Est-ce que ton application n'est pas proposée pour ouvrir ce type de fichier ?

Est-ce l'ouverture même du fichier qui pose problème ?



#6 SansFromage

SansFromage

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 18 messages

Posté 01 août 2017 - 12:52

Bonjour,

 

désolé je vais essayer de détailler un peu plus

 

En gros j'ai une application qui permet de créer des .kml et de les envoyer par mail

 

A cette appli, est liée une extension qui permet dans les mails d'enregistrer un kml dans l'appli de base

 

Le problème est que l'extension n'apparait qu'avec NSExtensionActivationRule = TRUEPREDICATE

 

Du coup j'essaye de faire une règle permettant à l'extension d'apparaitre lorsque il y à une pièce jointe en kml ou au pire lorsqu'il y a une pièce jointe de n'importe quel format

 

Je ne sais pas si je suis plus clair



#7 SansFromage

SansFromage

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 18 messages

Posté 01 août 2017 - 13:17

Petit complément, je met la règle dans le Info.plist de l'extension



#8 Eric P.

Eric P.

    Torréfacteur de fèves

  • Artisan chocolatier
  • PipPipPipPipPip
  • 725 messages
  • LocationTours

Posté 02 août 2017 - 16:40

Mes applications iPocket Draw et iPocket Draw Lite ont la possibilité de recevoir des fichiers d'un format propre depuis Mail ou des diverses apps telles que Dropbox et consorts.

Et également de les envoyer vers ces applications.

Pour cela, j'utilise uniquement les "Document Types" et les "Exported UTIs".



#9 SansFromage

SansFromage

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 18 messages

Posté 02 août 2017 - 19:09

Pour cela, j'utilise uniquement les "Document Types" et les "Exported UTIs".

 

pourrais-tu me donner un exemple si ça ne t'embête pas ?



#10 Eric P.

Eric P.

    Torréfacteur de fèves

  • Artisan chocolatier
  • PipPipPipPipPip
  • 725 messages
  • LocationTours

Posté 03 août 2017 - 09:56

Une fois mes "Document Types" et les "Exported UTIs" déclarés, je vérifie dans l'app delegate lors de l'activation

 

 
- (void)applicationDidBecomeActive:(UIApplication *)application

 si il y a un nouveau document à ouvrir provenant d'une autre app comme cela : (désolé c'est de l'objective C)

		//Test si nouveau fichier à ouvrir dans Inbox
		NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

		NSString *documentsDirectory = [paths objectAtIndex:0];

		NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Inbox"];   //iPhone

		NSFileManager *fileManager = [NSFileManager defaultManager];

		if ([fileManager fileExistsAtPath:path]) {  //Il y a Inbox donc traitement du premier fichier

			NSURL *url = [NSURL fileURLWithPath:path isDirectory:YES];

			NSError *err = nil;

			NSArray *array = [[NSFileManager defaultManager]
							  contentsOfDirectoryAtURL:url
							  includingPropertiesForKeys:[NSArray array]
							  options:0
							  error:&err];

			if ((array != nil) && ([array count] > 0)) {

				NSURL *fileURL = [array objectAtIndex:0];

				//NSLog([fileURL relativePath]);

                //NSLog([fileURL pathExtension]);

                //NSLog([fileURL lastPathComponent]);

                NSString *fileExtension = [fileURL pathExtension];

                if (([fileExtension isEqualToString:@"rcad"]) || ([fileExtension isEqualToString:@"RCAD"])) {

                    [[NSNotificationCenter defaultCenter] postNotificationName:@"do_closeAll" object:self];

                    [activ_FDessin reset_all_data];

                    l_zoomFactor = 0.0f;

                    [file_IO load_file:fileURL inSpace:activ_FDessin delete:TRUE display_view:nil load_Prefs:TRUE];

                    [geometrie calcul_CoefEchelle];
                    [[NSNotificationCenter defaultCenter] postNotificationName:@"needsDisplayNotification" object:self];

                } else {

                    //fichier pdf ou image ou dxf
                    //A copier dans la sandbox pour utilisation ultérieure

                    path = [documentsDirectory stringByAppendingPathComponent:[fileURL lastPathComponent]];   //iPhone

                    if ([fileManager moveItemAtPath:[fileURL relativePath] toPath:path error:&err]) {

                        //Alerte fichier copié
Pour envoyer un fichier via "Ouvrir dans" :

 

 
-(void)openDocumentIn {

    if (documentController != nil) [documentController release];

    documentController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:file_to_Transfer]];

    documentController.delegate = self;

    [documentController retain];

    [documentController presentOpenInMenuFromBarButtonItem:inputButton animated:YES];
}


-(void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application {
    
}


-(void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application {
    
}


-(void)documentInteractionControllerDidDismissOpenInMenu:(UIDocumentInteractionController *)controller {
    
}

Voilà j'espère que cela te sera utile.


Modifié par Joanna Carter, 03 août 2017 - 10:50 .
Ajoute des lignes d'espace pour le rendre plus clair


#11 SansFromage

SansFromage

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 18 messages

Posté 03 août 2017 - 10:06

Merci beaucoup

 

je ne savais pas que l'on pouvait le faire directement dans le code

 

Je vais essayer de suivre cette piste :)



#12 Eric P.

Eric P.

    Torréfacteur de fèves

  • Artisan chocolatier
  • PipPipPipPipPip
  • 725 messages
  • LocationTours

Posté 03 août 2017 - 16:27

Merci Joanna d'être intervenue !

S'il n'y avait que des problèmes d'espaces, ça va...






0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)