{"id":58318,"date":"2023-08-07T12:29:26","date_gmt":"2023-08-07T10:29:26","guid":{"rendered":"https:\/\/ar3dp.de\/docs\/programmieren\/net-maui-basis-applikation-app-template\/bereitstellen-fuer-ios\/"},"modified":"2023-08-07T12:29:26","modified_gmt":"2023-08-07T10:29:26","slug":"bereitstellen-fuer-ios","status":"publish","type":"docs","link":"https:\/\/ar3dp.de\/en\/docs\/programmieren\/net-maui-basis-applikation-app-template\/bereitstellen-fuer-ios\/","title":{"rendered":"Bereitstellen f\u00fcr iOS"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Um die App unter iOS bereitzustellen bzw. zu ver\u00f6ffentlichen, sind folgende Schritte n\u00f6tig<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Info.plist<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die <code>Info.plist<\/code> Datei enth\u00e4lt alle wichtigen Informationen zu deiner iOS-App, wie die <code>BundleId<\/code>. Die Datei findest du im Projekt unter:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;Shell&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">..\\Platforms\\iOS\\Info.plist<\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Unterst\u00fctzte Sprachen<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Zu erst solltest du hier deine unterst\u00fctzen Sprachen definieren.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;swift&quot;,&quot;mime&quot;:&quot;text\/x-swift&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;Swift&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;swift&quot;}\">&lt;key&gt;CFBundleLocalizations&lt;\/key&gt;\n&lt;array&gt;\n\t&lt;string&gt;en&lt;\/string&gt;\n\t&lt;string&gt;de&lt;\/string&gt;\n&lt;\/array&gt;<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Standardm\u00e4\u00dfig unterst\u00fctzt unser Template Deutsch und Englisch, wobei Englisch die Standardsprache ist. Sollte deine sp\u00e4tere App mehr Sprachen unterst\u00fctzen, so kannst du diese hier hinzuf\u00fcgen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Verwendungsbeschreibungen<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Die App ben\u00f6tigt standardm\u00e4\u00dfig Zugriff auf gewisse Elemente, wie den Foto-Bibliothek (zum Auswahlen und \/ oder speichern von Daten). All diese Verwendungen m\u00fcssen in der <code>info.plist<\/code> Datei beschrieben werden, da die App sonst von Apple abgelehnt wird. Beispiele findest du folgend.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;swift&quot;,&quot;mime&quot;:&quot;text\/x-swift&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;Swift&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;swift&quot;}\">&lt;key&gt;NSUserTrackingUsageDescription&lt;\/key&gt;\n\t&lt;string&gt;This is needed to track crash and anonymous analytics data.&lt;\/string&gt;\n\n&lt;key&gt;NSPhotoLibraryAddUsageDescription&lt;\/key&gt;\n\t&lt;string&gt;This app needs access to the photo gallery for picking photos.&lt;\/string&gt;\n\n&lt;key&gt;NSPhotoLibraryUsageDescription&lt;\/key&gt;\n\t&lt;string&gt;This app needs access to photos gallery for picking photos.&lt;\/string&gt;\n\n&lt;key&gt;NSCameraUsageDescription&lt;\/key&gt;\n\t&lt;string&gt;This app needs access to the camera to take photos of the printer or scan barcodes.&lt;\/string&gt;<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Entitlements.plist<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die <code>Entitlements.plist<\/code> Datei enth\u00e4lt alle zus\u00e4tzlichen Informationen zu deinen genutzten F\u00e4higkeiten, welche du bei deinem App-Identifizier (<a href=\"https:\/\/developer.apple.com\/account\/resources\/identifiers\/list\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/developer.apple.com\/account\/resources\/identifiers\/list<\/a>) angegeben hast. Die <code>Entitlements.plist<\/code> Datei muss dabei genau den F\u00e4higkeiten entsprechen, da die App sonst sp\u00e4ter nicht auf einem physikalischen Ger\u00e4t installiert werden kann.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wichtig!<\/strong> Aktuell ist es empfohlen, die Datei mit einem Texteditor zu bearbeiten, und nicht \u00fcber Visual Studio!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Folgend eine Auflistung von Funktionen, welche f\u00fcr das App-Template n\u00f6tig sind.<\/p>\n\n\n\n<div class=\"alert-box alert text-center font-size-1 rounded-0 mb-0 bg-warning\"><span class=\"text\"><strong class=\"text-uppercase\">Achtung!<\/strong> Wird eine Entitlements.plist verwenden, muss bei der Bundle-Signierung ein passendes  Provisioning Profil erstellt werden! Die automatische Bereitstellung funktioniert hier dann nicht mehr!<\/span><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Keychain<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Damit Einstellungen als &#8220;sicher&#8221; gespeichert werden k\u00f6nnen, ben\u00f6tigt unser <code>MauiSettings<\/code> Nuget Zugriff auf die <code>Keychain<\/code>. So lange keine Einstellungen als &#8220;sicher&#8221; gespeichert werden sollen, ist auch der Zugriff auf die <code>Keychain<\/code> optional. Wird <code>Firebase<\/code> genutzt, da diese Einstellungen sicher gespeichert werden, dann ist die Verwendung der <code>Keychain<\/code> verpflichtend.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">\/\/ SettingsApp.cs\n#region Firebase\n\n[MauiSetting(Name = nameof(Firebase_Username), DefaultValue = &quot;&quot;, Secure = true)]\npublic static string Firebase_Username { get; set; }\n\n[MauiSetting(Name = nameof(Firebase_Password), DefaultValue = &quot;&quot;, Secure = true)]\npublic static string Firebase_Password { get; set; }\n#endregion<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Um die <code>Keychain<\/code> zu aktivieren, kopiere folgenden Teil in deine <code>Entitlements.plist<\/code> Datei. <\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;swift&quot;,&quot;mime&quot;:&quot;text\/x-swift&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;Swift&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;swift&quot;}\">&lt;key&gt;com.apple.developer.ubiquity-kvstore-identifier&lt;\/key&gt;\n\t&lt;string&gt;$(AppIdentifierPrefix)$(CFBundleIdentifier)&lt;\/string&gt;\n&lt;key&gt;keychain-access-groups&lt;\/key&gt;\n&lt;array&gt;\n\t&lt;string&gt;$(AppIdentifierPrefix)YOUR.BUNDLEID&lt;\/string&gt;\n&lt;\/array&gt;<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">AppGroups (optional)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn deine App sp\u00e4ter auf eine geteilte Gruppe zugreifen soll, dann ist dies wie folgt in der <code>Entitlements.plist<\/code> Datei zu konfigurieren.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;swift&quot;,&quot;mime&quot;:&quot;text\/x-swift&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;Swift&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;swift&quot;}\">&lt;key&gt;com.apple.security.application-groups&lt;\/key&gt;\n&lt;array&gt;\n\t&lt;string&gt;group.YOUR.GROUP&lt;\/string&gt;\n&lt;\/array&gt;<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">iCloud (optional)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn sp\u00e4ter Einstellungen der App \u00fcber die iCloud gesichert bzw. synchronisiert werden sollen, so muss dies ebenfalls angegeben werden.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;swift&quot;,&quot;mime&quot;:&quot;text\/x-swift&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;Swift&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;swift&quot;}\">&lt;key&gt;com.apple.developer.icloud-container-identifiers&lt;\/key&gt;\n&lt;array&gt;\n\t&lt;string&gt;iCloud.YOUR.BUNDLEID\/string&gt;\n&lt;\/array&gt;<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ver\u00f6ffentlichung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Um die App im AppStore zu ver\u00f6ffentlichen, folge bitte der offiziellen <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/maui\/ios\/deployment\/publish-app-store?tabs=vs\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Anleitung f\u00fcr .NET MAUI iOS-Applikationen<\/a>. Du ben\u00f6tigst dazu ein physikalisches Apple-Ger\u00e4t (iPhone oder iPad) und einen MAC-Computer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um die App unter iOS bereitzustellen bzw. zu ver\u00f6ffentlichen, sind folgende Schritte n\u00f6tig Info.plist Die Info.plist Datei enth\u00e4lt alle wichtigen Informationen zu deiner iOS-App, wie die BundleId. Die Datei findest du im Projekt unter: Unterst\u00fctzte Sprachen Zu erst solltest du hier deine unterst\u00fctzen Sprachen definieren. Standardm\u00e4\u00dfig unterst\u00fctzt unser Template Deutsch und Englisch, wobei Englisch die&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"parent":57992,"menu_order":12,"comment_status":"open","ping_status":"closed","template":"","meta":{"_featured":false,"_is_vendor_doc":"0","footnotes":""},"doc_tag":[],"class_list":["post-58318","docs","type-docs","status-publish","hentry"],"comment_count":0,"_links":{"self":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/comments?post=58318"}],"version-history":[{"count":1,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58318\/revisions"}],"predecessor-version":[{"id":58966,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58318\/revisions\/58966"}],"up":[{"embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/57992"}],"next":[{"title":"Bereitstellen f\u00fcr Android","link":"https:\/\/ar3dp.de\/en\/docs\/programmieren\/net-maui-basis-applikation-app-template\/bereitstellen-fuer-android\/","href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58319"}],"prev":[{"title":"Biometrische Authentifizierung","link":"https:\/\/ar3dp.de\/en\/docs\/programmieren\/net-maui-basis-applikation-app-template\/biometrische-authentifizierung\/","href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58960"}],"wp:attachment":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/media?parent=58318"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/doc_tag?post=58318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}