Tipps für eine erfolgreiche App-ÜbermittlungTips for a successful app submission

In diesem Artikel werden häufige Gründe für die Überprüfung von apps-Fehlern behandelt.This article addresses common reasons submitted apps fail validation. Es ist zwar nicht beabsichtigt, eine erschöpfende Liste aller potenziellen Probleme mit Ihrer APP zu sein, aber im Anschluss an dieses Handbuch wird die Wahrscheinlichkeit erhöht, dass Ihre APP-Übermittlung das erste Mal übergeben wird.While it's not intended to be an exhaustive list of all potential issues with your app, following this guide will increase the likelihood that your app submission will pass the first time. Eine umfassende Liste der Validierungsrichtlinien finden Sie unter Commercial Marketplace Certification Policies .See Commercial marketplace certification policies for an extensive list of validation policies.

Hinweis

Abschnitt 1140 ist spezifisch für Microsoft Teams und unter Abschnitt 1140,4 , in dem die Funktionalitätsanforderungen für Teams-apps behandelt werden.Section 1140 is specific to Microsoft Teams and sub-section 1140.4 addresses functionality requirements for Teams apps.

ValidierungsrichtlinienValidation guidelines

✅ allgemeine Überlegungen✅ General considerations

Siehe auch Abschnitt 100 – allgemeinSee also Section 100 — General

  • Stellen Sie sicher, dass Sie die Version 1.4.1 oder höher des Microsoft Teams SDKverwenden.Ensure you are using version 1.4.1 or later of the Microsoft Teams SDK.
  • Nehmen Sie keine Änderungen an Ihrer APP vor, während der Validierungsprozess ausgeführt wird.Don't make changes to your app while the validation process is in progress. Auf diese Weise ist eine vollständige Revalidierung Ihrer APP erforderlich.Doing so will require a complete revalidation of your app.
  • Ihre APP darf nicht mehr reagieren, unerwartet beenden oder Programmierfehler enthalten.Your app must not stop responding, end unexpectedly, or contain programming errors. Wenn ein Problem auftritt, sollte Ihre APP ordnungsgemäß fehlschlagen und dem Benutzer eine gültige-Weg-weiter-Nachricht bereitstellen.If an issue is encountered, your app should fail gracefully and provide a valid-way-forward message to the user.
  • Ihre APP darf keinen ausführbaren Code in der Benutzerumgebung automatisch herunterladen, installieren oder starten.Your app must not automatically download, install, or launch any executable code in the user environment. Alle Downloads sollten eine explizite Berechtigung des Benutzers suchen.All downloads should seek explicit permission from the user.
  • Jedes Material, das Sie Ihrer Erfahrung zuordnen, wie Beschreibungen und Support Dokumentationen, muss genau sein.Any material that you associate with your experience, such as descriptions and support documentation, must be accurate. Achten Sie in diesen Materialien auf Rechtschreibung, Zeichensetzung und Grammatik.Use correct spelling, capitalization, punctuation, and grammar in your descriptions and materials.
  • Bereitstellen von Hilfe-und SupportinformationenProvide help and support information. Es wird dringend empfohlen, dass Ihre APP einen Link zu Hilfe/FAQ für die Benutzeroberfläche mit der ersten Ausführung enthält.It's highly recommended that your app include a help/FAQ link for the first-run user experience. Für alle persönlichen apps wird empfohlen, ihre Hilfeseite als persönliche Registerkarte bereitzustellen, um eine bessere Benutzerfreundlichkeit zu erreichen.For all personal apps, we recommend providing your help page as a personal tab for a better user experience.
  • Erhöhen Sie Ihre APP-Versionsnummer im Manifest, wenn Sie an ihrer Übermittlung Manifeste Änderungen vornehmen.Increment your app version number in the manifest if you make any manifest changes to your submission.

✅ bieten eine klare und einfache Anmeldung/abmelden und Anmelde Erfahrung✅ Provide a clear and simple sign in/sign out and sign-up experience

Siehe auch Abschnitt 1100,5 – Kunden SteuerungSee also Section 1100.5 — Customer control

  • Wenn Ihre APP oder Ihr Add-in von externen Konten oder Diensten abhängt, muss die Anmelde-und Anmelde Erfahrung offensichtlich sein und über alle Funktionen in Ihrer APP erreichbar sein.If your app or add-in depends on external accounts or services, the sign in/sign out and sign-up experience must be apparent and reachable across all capabilities in your app.

  • Wenn dem Benutzer eine explizite Anmeldeoption zur Verfügung gestellt wird, muss eine entsprechende Abmeldeoption vorhanden sein (auch dann, wenn die APP die SSO/Silent-Authentifizierungverwendet).If there is an explicit sign-in option provided to the user, there must be a corresponding sign-out option (even if the app is using SSO/silent authentication).

  • Die Abmeldeoption darf den Benutzer nur aus der App-Funktion und nicht aus dem Microsoft Teams-Client signieren.The sign-out option must only sign the user out of your app's capability and not out of the Teams client.

  • Die Abmeldeoption muss den Benutzer mindestens aus denselben Funktionen signieren, auf die mit der Anmeldeoption zugegriffen wird.At a minimum, the sign-out option must sign the user out of the same capabilities accessed with the sign-in option. Wenn beispielsweise die Anmeldeoption sowohl eine Messaging Erweiterung als auch eine Registerkarte enthält, muss die Abmeldeoption sowohl die Messaging Erweiterung als auch die Registerkarte einschließen.For example, if the sign-in option includes both a messaging extension and tab, then the sign-out option must include both the messaging extension and tab.

  • Stellen Sie sicher, dass es immer eine Möglichkeit gibt, das folgende (oder ähnliche) Verhalten umzukehren:Make sure there is always a way to reverse the following (or similar) behaviors:

    • Anmelden => abmelden.Sign-in => sign-out.
    • Verknüpfen eines Kontos/Diensts => Aufheben der Verknüpfung mit einem Konto/Dienst.Link an account/service => unlink an account/service.
    • Verbinden eines Kontos/Diensts => Trennen eines Kontos/Diensts.Connect an account/service => disconnect an account/service.
    • Autorisieren eines Kontos/Diensts => deaktivieren/verweigern eines Kontos/Diensts.Authorize an account/service => deauthorize/deny an account/service.
    • Registrieren eines Kontos/Diensts => Aufheben der Registrierung/kündigen eines Kontos/Diensts.Register an account/service => unregister/unsubscribe an account/service.
  • Wenn Ihre APP ein Konto oder einen Dienst benötigt, müssen Sie eine Möglichkeit für den Benutzer bereitstellen, sich anzumelden oder eine Anmeldeanforderung zu erstellen.If your app requires an account or service, you must provide a way for the user to sign up or to create a sign-up request. Eine Ausnahme wird möglicherweise erteilt, wenn Ihre APP eine Unternehmensanwendung ist.An exception may be granted if your app is an Enterprise application.

  • Die Funktion "Anmelden/Abmelden" muss auf mobilen Clients funktionieren.Sign in/sign out functionality must work on mobile clients. Stellen Sie sicher, dass Sie das Microsoft Teams SDK Version 1.4.1 oder höher verwenden.Ensure you're using the Microsoft Teams SDK version 1.4.1 or later.

Weitere Informationen zur Authentifizierung finden Sie unter:For additional information on authentication see:

✅ Antwortzeiten müssen angemessen sein✅ Response times must be reasonable

  • Registerkarten.Tabs. Wenn eine Antwort auf eine Aktion mehr als drei Sekunden dauert, müssen Sie eine Lade Nachricht oder eine Warnung angeben.If a response to an action takes more than three seconds, you must provide a loading message or warning.
  • Bots.Bots. Eine Antwort auf einen Benutzer Befehl muss innerhalb von zwei Sekunden auftreten.A response to a user command must occur within two seconds. Wenn eine längere Verarbeitung erforderlich ist, muss Ihre APP einen Eingabe Indikator anzeigen.If longer processing is required, your app must display a typing indicator.
  • Verfassen von Erweiterungen.Compose extensions. Eine Antwort auf einen Benutzer Befehl muss innerhalb von fünf Sekunden auftreten.A response to a user command must occur within five seconds.

Tipp

Stellen Sie sicher, dass Ihre APP einen Lade Indikator oder eine Form von Warnung anzeigt, wenn Ihre APP länger als erwartet reagiert.Make sure your app displays a loading indicator or some form of warning when your app is taking longer than expected to respond.

✅ Registerkarteninhalt sollte keine übermäßige Chrom-oder mehrstufige Navigation aufweisen✅ Tab content should not have excessive chrome or layered navigation

  • Registerkarten sollten fokussierten Inhalt bereitstellen und unnötige Benutzeroberflächenelemente vermeiden.Tabs should provide focused content and avoid needless UI elements. Im Allgemeinen bezieht sich dies in der Regel auf unnötige geschachtelte/schichtige Navigation, auf eine externe oder irrelevante Benutzeroberfläche neben dem Inhalt oder auf Links, die den Benutzer zu nicht verwandten Inhalten führen.In general, this usually refers to unnecessary nested/layered navigation, an extraneous or irrelevant UI next to the content, or any links that take the user to unrelated content. Unten sehen Sie beispielsweise eine Registerkartenansicht, in der Navigationsmenüs ausgelassen werden und nur der Hauptinhalt präsentiert wird:For example, below is a tab view that omits navigation menus and only showcases the main content:

SharePoint-Webansicht
SharePoint-Registerkartenansicht

  • Registerkarten sollten leicht in der Natur sein und keine komplexe Navigation umfassen.Tabs should be light in nature and not include complex navigation .
  • Wenn mehrere Ansichtsoptionen vorhanden sind, sollten Sie ein Tab-Konfigurationsmenü für den Benutzer auswählen.If there are multiple view options, consider having a tab config menu for the user to choose from. Anstatt beispielsweise ein Menü in die Registerkarte einzubetten, legen Sie das Menü auf der Konfigurationsseite so fest, dass die tatsächliche Registerkartenansicht sauber und fokussiert ist.For example, instead of embedding a menu inside the tab, put the menu in the configuration page so the actual tab view is clean and focused.

Seite "Wide idea-Konfiguration"

Auf dem Konfigurationsbildschirm muss ✅-Registerkarte konfiguriert sein.✅ Tab configuration must happen in the configuration screen

  • Auf dem Konfigurationsbildschirm sollte der Wert der Benutzeroberfläche eindeutig erläutert und die Registerkarte konfiguriert werden.The configuration screen should clearly explain the value of the experience and how to configure the tab.
  • Der Konfigurationsprozess sollte immer eine Möglichkeit für Benutzer bieten, die Benutzerfreundlichkeit weiterhin nicht zu beenden.The configuration process should always provide a way for users to continue not dead-end the user experience. Zeigen Sie beispielsweise nicht eine leere Platine an, nachdem der Benutzer die Registerkarte konfiguriert hat.For example, do not show an empty board after the user has configured the tab
  • Der Benutzeranmeldeprozess muss Teil des Konfigurationsprozesses sein und in der Registerkarten-Benutzeroberfläche abgeschlossen sein.The user sign-in process must be part of the configuration process and should complete in the Tab UI. Nachdem der Benutzer die Konfiguration abgeschlossen und die Registerkarte geladen hat, sollte keine weitere Aktion erforderlich sein.After the user has completed configuration and loaded your tab, no further action should be required.
  • Zeigen Sie die gesamte Webseite nicht im Popupfenster der Anmeldekonfiguration an.Don't show your entire webpage within the sign-in configuration pop-up window.
  • Ein Benutzer sollte die Konfigurationsumgebung immer fertig stellen können, auch wenn er nicht sofort den gesuchten Inhalt finden kann.A user should always be able to finish the configuration experience, even if they can’t immediately find the content they’re looking for.
  • Die Konfigurationsumgebung sollte Optionen für den Benutzer bieten, um den Inhalt zu finden, eine URL zu fixieren oder neue Inhalte zu erstellen, falls diese nicht vorhanden sind.The configuration experience should provide options for the user to find their content, pin a URL, or create new content if it doesn’t exist.
  • Die Konfigurations Erfahrung muss innerhalb des Teams-Kontexts verbleiben.The configuration experience must remain within the Teams context. Der Benutzer sollte die Konfigurationsoberfläche nicht verlassen müssen, um Inhalte zu erstellen und dann zu Microsoft Teams zurückzukehren, um es zu fixieren.The user shouldn’t have to leave the configuration experience to create content and then return to Teams to pin it.
  • Effizientes Verwenden des Bereichs "verfügbare Viewports"Use the available viewport area efficiently. Verschwenden Sie es nicht bei der Verwendung von großen Logos innerhalb der Konfiguration Pop-upDo not waste it on using huge logos inside the configuration pop up

OneNote ermöglicht Benutzern das Einfügen eines OneNote-Links, falls Notizen nicht gefunden werden können.

Benutzer können immer einen neuen Plan für den Planer erstellen, falls keines vorhanden sind

SharePoint ermöglicht es dem Benutzer auch, eine SharePoint-Verknüpfung direkt einzufügen.

✅-Bots müssen immer reaktionsfähig sein und ordnungsgemäß fehlschlagen✅ Bots must always be responsive and fail gracefully

Ihr bot sollte auf alle Befehle reagieren und nicht auf den Endbenutzer.Your bot should be responsive to any command and not dead-end the user. Hier sind einige Tipps, die Ihrem bot helfen, intelligent auf Benutzer zu reagieren:Here are some tips to help your bot intelligently respond to users:

  • Verwenden Sie Befehlslisten.Use command lists. Das Analysieren von Benutzereingaben oder das Vorhersagen der Benutzerabsicht ist schwierig.Analyzing user input or predicting user intent is hard. Anstatt Benutzer erraten zu lassen, was Ihr bot tun kann, geben Sie eine Liste von Befehlen an, die ihr bot versteht.Instead of letting users guess what your bot can do, provide a list of commands your bot understands.

Fluss Befehlsliste

  • Einschließen eines Hilfebefehls.Include a help command. Benutzer werden wahrscheinlich "Hilfe" eingeben, wenn Sie verloren gehen oder wenn Ihr bot nicht wie erwartet reagiert.Users are likely to type "Help" when they are lost or when your bot doesn't respond as expected. Fügen Sie einen Hilfebefehl ein, der beschreibt, wie der Wert Ihrer APP zusammen mit allen gültigen Befehlen erfahren wird.Include a help command that describes how your app's value will be experienced along with all valid commands.

Befehl "Flow Help"

  • Fügen Sie Hilfeinhalte oder Anleitungen hinzu, wenn Ihr bot verloren geht.Include help content or guidance when your bot is lost. Wenn Ihr bot die Benutzereingabe nicht verstehen kann, sollte er eine alternative Aktion vorschlagen.When your bot can't understand the user input, it should suggest an alternative action. Zum Beispiel: "es tut mir leid, ich verstehe nicht. Geben Sie "Hilfe" ein, um weitere Informationen zu erhalten. "For example, "I'm sorry, I don't understand. Type "help" for more information." Reagieren Sie nicht mit einer Fehlermeldung oder einfach: "Ich verstehe nicht".Don't respond with an error message or simply, "I don't understand". Nutzen Sie diese Möglichkeit, um Ihre Benutzer zu unterrichten.Use this chance to teach your users.

  • Verwenden Sie Adaptive Karten und Aufgaben Module, um Ihre bot-Antwort übersichtlicher und Umsetz barer zu machen. Adaptive Karten mit Schaltflächen, die Aufgaben Module aufrufen , verbessern die bot-Benutzeroberfläche.Use adaptive cards and task modules to make your bot response clear and actionable Adaptive cards with buttons invoking task modules enhance the bot user experience. Diese Karten und Schaltflächen sind auf einem mobilen Gerät einfacher zu verwenden, im Gegensatz zu Ihrem Benutzer, der die Befehle tippt.These cards and buttons are easier to use in a mobile device as opposed to your user typing the commands

  • Überdenken Sie alle Bereiche.Think through all scopes. Stellen Sie sicher, dass Ihr bot geeignete Antworten bereitstellt, wenn Sie @*botname* in einem Kanal und in persönlichen Unterhaltungen erwähnt werden.Be sure that your bot provides appropriate responses when mentioned (@*botname*) in a channel and in personal conversations. Wenn Ihr bot keinen sinnvollen Kontext innerhalb des Bereichs Personal oder Teams bereitstellt, deaktivieren Sie diesen Bereich über das Manifest.If your bot does not provide meaningful context within the personal or teams scope, disable that scope via the manifest. (Weitere Informationen finden Sie unter bots Block in der Microsoft Teams Manifest-Schemareferenz.)(See the bots block in the Microsoft Teams manifest schema reference.)

✅ persönliche Bots müssen beim ersten Start eine Willkommensnachricht senden✅ Personal bots must send a welcome message on first launch

Eine Willkommensnachricht ist die beste Möglichkeit, um den Ton für Ihren persönlichen/Chat-bot festzulegen.A welcome messages is the best way to set the tone for your personal/chat bot. Dies ist die erste Interaktion, die ein Benutzer mit dem Bot hat.This is the first interaction a user has with the bot. Eine gute Willkommensnachricht kann den Benutzer ermutigen, die APP weiterhin zu erkunden.A good welcome message can encourage the user to keep exploring the app. Wenn die Begrüßung oder einleitende Nachricht verwirrend oder unklar ist, sehen Benutzer den Wert der APP nicht sofort und verlieren ihre Interessen.If the welcome or introductory message is confusing or unclear, users won't see the value of the app immediately and lose interests.

Hinweis

Eine Willkommensnachricht ist optional für einen Kanal-bot.A welcome message is optional for a channel bot.

Anforderungen für WillkommensnachrichtenWelcome message requirements

  • Fügen Sie einen Wert Vorschlag mit der Willkommens Tour ein.Include a value proposition with the welcome tour.
  • Bereitstellen von Anleitungen für die Verwendung des bot.Provide way-forward guidance for using the bot.
  • Präsentieren Sie einfach lesbaren Text und einfachen Dialog – vorzugsweise eine Karte mit einer Aktions baren Willkommens Tour-Schaltfläche, die einen Aufgabenmodul lädt.Present easy-to-read text and straightforward dialogue — preferably a card with an actionable welcome tour button that loads a task module.
  • Halten Sie es einfach, vermeiden Sie den Dialog mit Wörtern/Chats.Keep it simple, avoid wordy/chatty dialogue.
  • Integrieren Sie Adaptive Karten und Schaltflächen, um die Begrüßungsnachricht nutzbar zu machen.Include adaptive cards and buttons to make the welcome message more usable.
  • Rufen Sie die Willkommensnachricht mit einem Ping-Befehl auf, nicht mit mindestens zwei gleichzeitigen Pings.Invoke the welcome message with one ping, not two or more simultaneous pings.
  • Eine Willkommensnachricht darf nur dem Benutzer angezeigt werden, der die APP konfiguriert hat, vorzugsweise in einem 1:1 persönlichen Chat.A welcome message must only be shown to the user who configured the app, preferably in a 1:1 personal chat.
  • Senden Sie niemals einen persönlichen Chat an alle Mitglieder des Teams.Never send a personal chat to every member in the team.
  • Senden Sie die Willkommensnachricht niemals mehrmals.Never send the welcome message more than once. Das Wiederholen derselben Willkommensnachricht über regelmäßige Intervalle ist nicht zulässig und wird als Spam betrachtet.Repeating the same welcome message over regular intervals is not allowed and is considered spamming.

Vermeiden von Begrüßungsnachrichten-SpamAvoid welcome message spamming

  • Kanal Nachricht von bot.Channel message by bot. Keine Spam-Benutzer durch Erstellen separater neuer Chat Beiträge.Don't spam users by creating separate new chat posts. Erstellen Sie einen einzelnen Thread Beitrag mit Antworten im gleichen Thread.Create a single thread post with replies in the same thread.
  • Persönlicher Chat von bot.Personal chat by bot. Senden Sie keine mehrere Nachrichten.Don't send multiple messages. Senden Sie eine Nachricht mit vollständigen Informationen.Send one message with complete information.

Willkommens Meldungen nur für BenachrichtigungenNotification-only bot welcome messages

Nur Benachrichtigungs Bots müssen eine Willkommensnachricht senden, die eine Nachricht mit dem Hinweis "Ich bin ein nur-Benachrichtigungs-bot" ist und nicht auf Ihre Chats Antwortenkann.Notification-only bots must send a welcome message that includes a message conveying, "I am a notification-only bot and will not be able to reply to your chats".

Begrüßungsnachrichten im persönlichen BereichWelcome messages in the personal scope

  • Machen Sie Ihre Nachricht prägnant und informativ.Make your message concise and informative. Höchstwahrscheinlich sind die Benutzerfreundlichkeit und das Wissen über Ihre APP unterschiedlich.Most likely, user experience with and knowledge of your app will vary. Ein Benutzer hat Ihre APP möglicherweise auf einer anderen Plattform verwendet oder hat nichts über Ihre App erfahren.A user may have used your app on another platform or know nothing about your app. Sie möchten Ihre Nachricht an alle Zielgruppen anpassen und in einigen Sätzen erklären, was Ihr bot tut und wie er mit ihm interagieren kann.You want to tailor your message to all audiences and in a couple sentences explain what your bot does and the ways to interact with it. Sie sollten auch den Wert der APP erläutern und erfahren, wie die Benutzer davon profitieren.You should also explain the value of the app and how the users will benefit from using it. Cafe und ESS-botCafe and Dinning bot

  • Machen Sie Ihre Nachricht Handlungsbereit.Make your message actionable. Denken Sie an das erste, was Benutzer nach der Installation Ihrer APP tun sollen.Think about the first thing you want users to do after installing your app. Gibt es einen coolen Befehl, den Sie ausprobieren sollten?Is there a cool command they should try? Gibt es eine weitere Onboarding-Erfahrung, die Sie kennen sollten?Is there another onboarding experience they should know about? Müssen die Benutzer sich anmelden?Do they need to sign in? Sie können Aktionen auf einer adaptiven Karte hinzufügen oder bestimmte Beispiele wie "versuchen Sie Fragen....", "Dies ist, was ich tun kann..." bereitstellen.You can add actions on an adaptive card or provide specific examples such as “Try asking….”, “This is what I can do…”.

Begrüßungsnachrichten im Team/Kanal-BereichWelcome messages in the team/channel scope

Die Dinge sind ein bisschen anders, wenn der bot zum ersten Mal einem Kanal hinzugefügt wird.Things are a little bit different when the bot is first added to a channel. Normalerweise sollten Sie keine 1:1-Nachricht an alle Benutzer im Team senden, aber der Bot kann eine Willkommensnachricht im Kanal senden.Normally, you shouldn't send a 1:1 message to everyone on the team, but the bot can send a welcome message in the channel.