Deep linking to specific screen
Étiquetté : Dynamics 365, Model-driven, powerapps
-
Deep linking to specific screen
Posté par Lamia sur 24 janvier 2022 à 9h47Hello tout le monde,
Je viens vers vous cra j’aimerais envoyer un lien, via un bouton, d’un écran spécific, à l’époque on utilisait On start mais cette manipulation ne fonctionne plus. Auriez vous une soltuion à ce problème?
Merci à vous et bonne journée 😃PostID=PUQn5fvB5eZ9EWm
Lamia a répondu Il y a 11 mois, 3 semaines 1 Membre · 15 Réponses -
15 Réponses
-
Bonjour Lamia, pour preciser ta question c’est que tu cherches à aller sur un écran spécifique via une URL ? Car le StartScreen est arrivé dernièrement :
CommentID=0dSxObNiDnzi8sd, PostID=PUQn5fvB5eZ9EWm
-
merci d’avoir répondu à ma question ! le seul problème c’est que je n’arrive pas à lier cela à un bouton. Le lien me ramène à chaque fois vers le premier écran de mon application
CommentID=4gqRSXBdDmsgY81, PostID=PUQn5fvB5eZ9EWm
-
Si tu veux cliquer sur un bouton pour ouvrir une url dans un autre onglet, tu peux utiliser la fonction Launch().
Mais je suis pas certain que ce soit ce que tu cherches car tu parles du OnStart. Que faisais-tu exactement dans ton OnStart auparavant et qui ne marche plus maintenant ? Ce lien est censé t’amener où ? Vers un autre site ? S’agit-il vraiment d’un lien ou le terme n’est peut-être pas le bon…
Aide-nous à t’aider… 😉
CommentID=E6tKpYsf0a5N6dl, PostID=PUQn5fvB5eZ9EWm
-
Je vais essayer d’être plus claire haha
J’ai créer un formulaire que les utilisateurs devront compléter et j’aimerais créer un bouton pour les admins afin qu’ils puissent envoyer l’écran où se situe le formulaire, aux autres utilisateurs.
Mais ces utilisateurs là ne doivent avoir accès qu’à cette écran là. J’ai donc chercher différentes manières de faire cela. Avant, il suffisait de le faire via OnStart pour que cela fonctionne. Mais cette fonction ne fonctionne plus, je cherche donc une alternative à cela.J’espère avoir été plus claire cette fois-ci 😅
CommentID=eRiUGNdhP0Mtny2, PostID=PUQn5fvB5eZ9EWm
-
Merci @Lamia. Je vais essayer de reformuler pour voir si j’ai bien compris.
Tu as créé une application Power Apps dans laquelle il y a (au moins) 2 écrans : 1 écran pour les admins, un écran pour les utilisateurs.
Sur l’écran pour les utilisateurs il y a un formulaire qu’ils doivent remplir.
Sur l’écran des Admins il y a un bouton qui permet d’envoyer un email aux utilisateurs avec un lien dans cet email. Lorsqu’un utilisateur clique sur le lien de cet email il doit arriver directement dans l’application sur l’écran du formulaire.
Est-ce que c’est ça ?
CommentID=82eQ2mslQKAEr7A, PostID=PUQn5fvB5eZ9EWm
-
Oui voilà c’est exactement ça !
CommentID=tma2AwVVW1YKf3G, PostID=PUQn5fvB5eZ9EWm
-
D’accord… Alors à ce moment-là la solution décrite par @Pierre Bourdial était la bonne : utiliser le StartScreen pour définir quel est le premier écran que l’application doit afficher.
Mais avant ça il faut que tu aies un moyen pour ton application de différencier un admin d’un utilisateur classique. Par exemple tu peux avoir une liste SharePoint appelée Administrateurs dans laquelle tu as une colonne Admin de type Personne où tu renseigneras les utilisateurs qui sont des administrateurs pour cette application.
A ce moment-là, sur l’objet App de ton application, tu choisis la propriété StartScreen :
Et tu y mets ce code :
If(n IsBlank(n LookUp(n Administrateurs; n Admin.Email = User().Emailn )n 'Ecran Formulaire'n 'Ecran Admin';n)
En gros, avec le LookUp() on recherche dans la liste des Administrateurs s’il y a un utilisateur qui correspond à l’utilisateur actuellement connecté, identifié avec la fonction User(). Si on n’en trouve pas (IsBlank()), c’est que l’utilisateur connecté n’est pas un administrateur et donc le premier écran que l’application va afficher c’est celui du formulaire. Dans le cas contraire, on a trouvé un administrateur dans la liste et donc c’est l’écran des admins qui est affiché.
Est-ce que cela réponds à ton besoin ?
Dis-nous si tu y arrives ou pas… Si tu bloques, pense à nous mettre une capture d’écran du problème en nous donnant le maximum d’informations.
CommentID=6PBeTSfAQeCJ1xF, PostID=PUQn5fvB5eZ9EWm
-
Merci beaucoup pour la solution, ça a l’air de plutot bien fonctionné. Il y a juste un petit problème, lorsque je mets à jour ma liste Admin, les paramètre ne se mettent pas à jour. Donc une personne qui était dans la liste Admin mais qui ne l’est plus, a toujours accès à l’écran Admin, avec le même lien. Comment faire pour que la personne qui n’est plus Admin ne puisse avoir accès qu’à l’écran formulaire?
CommentID=ELTX9epefHdxsah, PostID=PUQn5fvB5eZ9EWm
-
Mmmmh… Etrange. Car l’application recharge la liste des admins à chaque fois qu’elle se lance. Donc entre 2 lancement si tu retires une personne de la liste je ne vois pas pourquoi elle aurait encore accès à l’écran Admin. Peut-être faut-il vérifier le test qui détermine si tu vas sur l’écran utilisateur ou l’écran admin…
Peut-être si tu peux me mettre une capture du code que tu as dans ton App.StartScreen…
CommentID=jmlCC8UGxnp0xlq, PostID=PUQn5fvB5eZ9EWm
-
voici le code !
CommentID=TIQj4JJcGCagQ6y, PostID=PUQn5fvB5eZ9EWm
-
Ca m’a l’air simple, clair et correct… Essaie peut-être de faire un CTRL-F5 sur l’onglet qui exécute ton application après avoir retiré une personne de la liste des admins… Peut-être garde-t-il des données en cache…
CommentID=uiTriHnmI4xoLSn, PostID=PUQn5fvB5eZ9EWm
-
Pour débugger le truc, tu peux peut-être aussi afficher sur les 2 écrans une galerie qui affiche simplement le contenu de ta liste des administrateurs… histoire de voir si effectivement la personne a bien disparu de la liste…
CommentID=f4DJXAYufT9zE66, PostID=PUQn5fvB5eZ9EWm
-
J’ai afficher sur les 2 écrans une galerie qui affiche ma liste Administrateur, et effectivement quand il y a une personne dans la liste il affcihe bien la personne, et lorsque la personne disparait son nom disparait aussi mais pour cela je dois faire une CTRL F5, car il ne le fait pas automatiquement.
Malgré cela, l’affichage du 1er écran de l’application ne change pas
CommentID=7vUN52Ti63qpF3U, PostID=PUQn5fvB5eZ9EWm
-
Alors juste une précision (passke évidemment je ne vois pas exactement la manière dont tu fais le test)…
Si tu fais ceci :
-
dans ta liste tu as un admin TOTO
-
tu lances ton application
-
tu arrives sur l’écran d’admin et dans ta galerie tu vois TOTO
-
tu retires TOTO de la liste des admins
-
tu retournes sur ton application sans rafraîchir la page (ni avec F5 ni avec CTRL-F5)
Alors c’est normal que ça ne marche pas.
Après avoir retiré TOTO de ta liste il te faut à minima faire un F5 sur l’onglet où tu avais ton application pour qu’elle se relance et qu’elle recharge les données depuis ta liste.
Est-ce que ça tu l’avais bien compris ?
Si oui et que même avec un F5 ça ne marche pas et que ça ne marche qu’avec un CTRL-F5 (mais je serais quand même surpris), essaie ceci…
Dans le OnStart de ton App rafraîchi ta source de données :
Refresh(Administrateur)
Puis dans les options de ton application, désactive l’option suivante :
Sauvegarde, publie ton application et reteste (attention il faut toujours attendre environ 15s entre le moment où tu publies ton application et le moment où la nouvelle version s’exécutera lors tu la lanceras -> l’idéal c’est de mettre un petit numéro de version quelque part que tu changes à chaque fois que tu republies ton app ; comme ça tu es sûre lorsque tu vois le numéro de version que tu viens de modifier que c’est la dernière version de ton app qui s’exécute).
Tiens moi au courant…
CommentID=UqGQEMoldnY0DYU, PostID=PUQn5fvB5eZ9EWm
-
-
Tout fonctionne comme sur des roulettes !
Merci beaucoup pour votre aide, !!
CommentID=nHGr9KGt0DGTBO2, PostID=PUQn5fvB5eZ9EWm
Connectez-vous pour répondre.