diff --git a/enterprise/register/registerOwncloudApp.rb b/enterprise/register/registerOwncloudApp.rb index 5babab647..2f3ace4bd 100755 --- a/enterprise/register/registerOwncloudApp.rb +++ b/enterprise/register/registerOwncloudApp.rb @@ -1,5 +1,14 @@ #!/usr/bin/env ruby + # Copyright (C) 2023, ownCloud GmbH. + # + # This code is covered by the GNU Public License Version 3. + # + # For distribution utilizing Apple mechanisms please see https://owncloud.org/contribute/iOS-license-exception/ + # You should have received a copy of this license along with this program. If not, see . + + # Version 1.1.0 + require 'spaceship' class AppRegistration @@ -304,3 +313,4 @@ def prepareProfile(bundle_id, profileFilename, cert) register.prepareAppID("File Provider UI", "FileProviderUI.mobileprovision", groups, registrationType, "#{bundlePrefix}.ios-app.ownCloud-File-ProviderUI", cert) register.prepareAppID("Intent", "Intent.mobileprovision", groups, registrationType, "#{bundlePrefix}.ios-app.ownCloud-Intent", cert) register.prepareAppID("ShareExtension", "ShareExtension.mobileprovision", groups, registrationType,"#{bundlePrefix}.ios-app.ownCloud-Share-Extension", cert) +register.prepareAppID("ActionExtension", "ActionExtension.mobileprovision", groups, registrationType,"#{bundlePrefix}.ios-app.ownCloud-Action-Extension", cert) diff --git a/enterprise/resign/README.md b/enterprise/resign/README.md index b26f92855..378a77cfe 100644 --- a/enterprise/resign/README.md +++ b/enterprise/resign/README.md @@ -16,6 +16,8 @@ This script allows you to resign the ownCloud App IPA file with a different Appl - `com.yourcompany.ios-app.ownCloud-Share-Extension` + - `com.yourcompany.ios-app.ownCloud-Action-Extension` + 2. Generate one App Group: - `group.com.yourcompany.ios-app` @@ -51,6 +53,7 @@ Create a text file containing a list of line-break separated domain names (FQN) - `FileProviderUI.mobileprovision` - `Intent.mobileprovision` - `ShareExtension.mobileprovision` + - `ActionExtension.mobileprovision` 5. Execute the script diff --git a/enterprise/resign/resignInspector.sh b/enterprise/resign/resignInspector.sh index 53e8156aa..8edf6581b 100755 --- a/enterprise/resign/resignInspector.sh +++ b/enterprise/resign/resignInspector.sh @@ -7,7 +7,7 @@ # For distribution utilizing Apple mechanisms please see https://owncloud.org/contribute/iOS-license-exception/ # You should have received a copy of this license along with this program. If not, see . - VERSION="1.0.0" + VERSION="1.1.0" #Define output formats BOLD="$(tput bold)" @@ -72,7 +72,7 @@ fi APPPATH="$APPTEMP/Payload/ownCloud.app" fi - declare -a LOCATIONS=( "$APPPATH/" "$APPPATH/PlugIns/ownCloud File Provider.appex" "$APPPATH/PlugIns/ownCloud File Provider UI.appex" "$APPPATH/PlugIns/ownCloud Intents.appex" "$APPPATH/PlugIns/ownCloud Share Extension.appex" ); + declare -a LOCATIONS=( "$APPPATH/" "$APPPATH/PlugIns/ownCloud File Provider.appex" "$APPPATH/PlugIns/ownCloud File Provider UI.appex" "$APPPATH/PlugIns/ownCloud Intents.appex" "$APPPATH/PlugIns/ownCloud Share Extension.appex" "$APPPATH/PlugIns/ownCloud Action Extension.appex" ); echo "${SUCCESS}Checking entitlements…${NC}" echo "" diff --git a/enterprise/resign/resignOwncloudApp b/enterprise/resign/resignOwncloudApp index f2fa208e7..695fa9c67 100755 --- a/enterprise/resign/resignOwncloudApp +++ b/enterprise/resign/resignOwncloudApp @@ -7,7 +7,7 @@ # For distribution utilizing Apple mechanisms please see https://owncloud.org/contribute/iOS-license-exception/ # You should have received a copy of this license along with this program. If not, see . -VERSION="1.2.2" +VERSION="1.3.0" #Define output formats BOLD="$(tput bold)" @@ -64,11 +64,12 @@ FILEPROVIDER_MOBILEPROVISION="$PROVISIONING_DIR/FileProvider.mobileprovision" FILEPROVIDERUI_MOBILEPROVISION="$PROVISIONING_DIR/FileProviderUI.mobileprovision" INTENT_MOBILEPROVISION="$PROVISIONING_DIR/Intent.mobileprovision" SHAREEXTENSION_MOBILEPROVISION="$PROVISIONING_DIR/ShareExtension.mobileprovision" +ACTIONEXTENSION_MOBILEPROVISION="$PROVISIONING_DIR/ActionExtension.mobileprovision" ASSOCIATED_DOMAINS="domains.txt" -declare -a MOBILEPROVISIONS=( "$DISTRIBUTION_MOBILEPROVISION" "$FILEPROVIDER_MOBILEPROVISION" "$FILEPROVIDERUI_MOBILEPROVISION" "$INTENT_MOBILEPROVISION" "$SHAREEXTENSION_MOBILEPROVISION" ); -declare -a ENTITLEMENTS=( "ownCloud.entitlements" "ownCloud_File_Provider.entitlements" "ownCloud_File_Provider_UI.entitlements" "ownCloud_Intents.entitlements" "ownCloud_Share_Extension.entitlements" ); -declare -a LOCATIONS=( "$APPDIR" "$APPDIR/PlugIns/ownCloud File Provider.appex" "$APPDIR/PlugIns/ownCloud File Provider UI.appex" "$APPDIR/PlugIns/ownCloud Intents.appex" "$APPDIR/PlugIns/ownCloud Share Extension.appex" ); +declare -a MOBILEPROVISIONS=( "$DISTRIBUTION_MOBILEPROVISION" "$FILEPROVIDER_MOBILEPROVISION" "$FILEPROVIDERUI_MOBILEPROVISION" "$INTENT_MOBILEPROVISION" "$SHAREEXTENSION_MOBILEPROVISION" "$ACTIONEXTENSION_MOBILEPROVISION" ); +declare -a ENTITLEMENTS=( "ownCloud.entitlements" "ownCloud_File_Provider.entitlements" "ownCloud_File_Provider_UI.entitlements" "ownCloud_Intents.entitlements" "ownCloud_Share_Extension.entitlements" "ownCloud_Action_Extension.entitlements" ); +declare -a LOCATIONS=( "$APPDIR" "$APPDIR/PlugIns/ownCloud File Provider.appex" "$APPDIR/PlugIns/ownCloud File Provider UI.appex" "$APPDIR/PlugIns/ownCloud Intents.appex" "$APPDIR/PlugIns/ownCloud Share Extension.appex" "$APPDIR/PlugIns/ownCloud Action Extension.appex" ); declare -a BUNDLEIDS=(); # Abort script if script is running in a path which contains "Library", because this could cause resource fork problems diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 0aa2a85f8..aa59b132f 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -39,7 +39,8 @@ platform :ios do "com.owncloud.ios-app.ownCloud-File-Provider" => "match AdHoc com.owncloud.ios-app.ownCloud-File-Provider", "com.owncloud.ios-app.ownCloud-File-ProviderUI" => "match AdHoc com.owncloud.ios-app.ownCloud-File-ProviderUI", "com.owncloud.ios-app.ownCloud-Intents" => "match AdHoc com.owncloud.ios-app.ownCloud-Intents", - "com.owncloud.ios-app.ownCloud-Share-Extension" => "match AdHoc com.owncloud.ios-app.ownCloud-Share-Extension" + "com.owncloud.ios-app.ownCloud-Share-Extension" => "match AdHoc com.owncloud.ios-app.ownCloud-Share-Extension", + "com.owncloud.ios-app.ownCloud-Action-Extension" => "match AdHoc com.owncloud.ios-app.ownCloud-Action-Extension" #Add more Provisioning Profiles when extensions are added } } @@ -258,6 +259,8 @@ platform :ios do ENTERPRISE_INTENT_PROFILE: "match AppStore com.owncloud.ios-app.ownCloud-Intents", ENTERPRISE_SHARE_EXTENSION_ID: "com.owncloud.ios-app.ownCloud-Share-Extension", ENTERPRISE_SHARE_EXTENSION_PROFILE: "match AppStore com.owncloud.ios-app.ownCloud-Share-Extension", + ENTERPRISE_ACTION_EXTENSION_ID: "com.owncloud.ios-app.ownCloud-Action-Extension", + ENTERPRISE_ACTION_EXTENSION_PROFILE: "match AppStore com.owncloud.ios-app.ownCloud-Action-Extension", ENTERPRISE_APP_FW_ID: "com.owncloud.ownCloudApp", ENTERPRISE_TEAM: "4AP2STM4H5", ENTERPRISE_IDENTITY: "Apple Distribution: ownCloud GmbH (4AP2STM4H5)", @@ -283,6 +286,8 @@ platform :ios do ENTERPRISE_INTENT_PROFILE: "match AppStore com.owncloud.ios-app.emm.ownCloud-Intents", ENTERPRISE_SHARE_EXTENSION_ID: "com.owncloud.ios-app.emm.ownCloud-Share-Extension", ENTERPRISE_SHARE_EXTENSION_PROFILE: "match AppStore com.owncloud.ios-app.emm.ownCloud-Share-Extension", + ENTERPRISE_ACTION_EXTENSION_ID: "com.owncloud.ios-app.emm.ownCloud-Action-Extension", + ENTERPRISE_ACTION_EXTENSION_PROFILE: "match AppStore com.owncloud.ios-app.emm.ownCloud-Action-Extension", ENTERPRISE_APP_FW_ID: "com.owncloud.ownCloudApp.emm", ENTERPRISE_TEAM: "4AP2STM4H5", ENTERPRISE_IDENTITY: "Apple Distribution: ownCloud GmbH (4AP2STM4H5)", @@ -308,6 +313,8 @@ lane :owncloud_online_build do ENTERPRISE_INTENT_PROFILE: "ownCloud online AppStore Intents", ENTERPRISE_SHARE_EXTENSION_ID: "online.owncloud.ios-app.ShareExtApp", ENTERPRISE_SHARE_EXTENSION_PROFILE: "ownCloud online AppStore Share Ext", + ENTERPRISE_ACTION_EXTENSION_ID: "online.owncloud.ios-app.Action-Extension", + ENTERPRISE_ACTION_EXTENSION_PROFILE: "ownCloud online AppStore Action Extension", ENTERPRISE_APP_FW_ID: "online.owncloud.ios-app.ownCloudApp", ENTERPRISE_TEAM: "4AP2STM4H5", ENTERPRISE_IDENTITY: "Apple Distribution: ownCloud GmbH", @@ -333,6 +340,8 @@ end ENTERPRISE_INTENT_PROFILE: "Adhoc ownCloud iOS App Intents", ENTERPRISE_SHARE_EXTENSION_ID: "com.owncloud.ios-app.ownCloud-Share-Extension", ENTERPRISE_SHARE_EXTENSION_PROFILE: "Adhoc ownCloud iOS App Share Extension", + ENTERPRISE_ACTION_EXTENSION_ID: "com.owncloud.ios-app.ownCloud-Action-Extension", + ENTERPRISE_ACTION_EXTENSION_PROFILE: "Adhoc ownCloud iOS App Action Extension", ENTERPRISE_APP_FW_ID: "com.owncloud.ownCloudApp", ENTERPRISE_TEAM: "4AP2STM4H5", ENTERPRISE_IDENTITY: "Apple Distribution: ownCloud GmbH", @@ -356,6 +365,8 @@ end ENTERPRISE_INTENT_PROFILE: "match AppStore com.owncloud.ios-app.ownCloud-Intents", ENTERPRISE_SHARE_EXTENSION_ID: "com.owncloud.ios-app.ownCloud-Share-Extension", ENTERPRISE_SHARE_EXTENSION_PROFILE: "match AppStore com.owncloud.ios-app.ownCloud-Share-Extension", + ENTERPRISE_ACTION_EXTENSION_ID: "com.owncloud.ios-app.ownCloud-Action-Extension", + ENTERPRISE_ACTION_EXTENSION_PROFILE: "match AppStore com.owncloud.ios-app.ownCloud-Action-Extension", ENTERPRISE_APP_FW_ID: "com.owncloud.ownCloudApp", ENTERPRISE_TEAM: "4AP2STM4H5", ENTERPRISE_IDENTITY: "Apple Distribution: ownCloud GmbH (4AP2STM4H5)", @@ -389,6 +400,8 @@ end ENTERPRISE_INTENT_PROFILE: "Adhoc ownCloud iOS App Intents", ENTERPRISE_SHARE_EXTENSION_ID: "com.owncloud.ios-app.ownCloud-Share-Extension", ENTERPRISE_SHARE_EXTENSION_PROFILE: "Adhoc ownCloud iOS App Share Extension", + ENTERPRISE_ACTION_EXTENSION_ID: "com.owncloud.ios-app.ownCloud-Action-Extension", + ENTERPRISE_ACTION_EXTENSION_PROFILE: "Adhoc ownCloud iOS App Action Extension", ENTERPRISE_APP_FW_ID: "com.owncloud.ownCloudApp", ENTERPRISE_TEAM: "4AP2STM4H5", ENTERPRISE_IDENTITY: "iPhone Distribution: ownCloud GmbH", @@ -426,6 +439,8 @@ end ENTERPRISE_INTENT_PROFILE = values[:ENTERPRISE_INTENT_PROFILE] ENTERPRISE_SHARE_EXTENSION_ID = values[:ENTERPRISE_SHARE_EXTENSION_ID] ENTERPRISE_SHARE_EXTENSION_PROFILE = values[:ENTERPRISE_SHARE_EXTENSION_PROFILE] + ENTERPRISE_ACTION_EXTENSION_ID = values[:ENTERPRISE_ACTION_EXTENSION_ID] + ENTERPRISE_ACTION_EXTENSION_PROFILE = values[:ENTERPRISE_ACTION_EXTENSION_PROFILE] ENTERPRISE_APP_FW_ID = values[:ENTERPRISE_APP_FW_ID] ENTERPRISE_APP_SHARED_ID = "com.owncloud.ownCloudAppShared" ENTERPRISE_TEAM = values[:ENTERPRISE_TEAM] @@ -557,6 +572,7 @@ end set_info_plist_value(path: "ownCloud File Provider/Info.plist", key: "CFBundleShortVersionString", value: customAppVersionNumber) set_info_plist_value(path: "ownCloud File Provider UI/Info.plist", key: "CFBundleShortVersionString", value: customAppVersionNumber) set_info_plist_value(path: "ownCloud Share Extension/Info.plist", key: "CFBundleShortVersionString", value: customAppVersionNumber) + set_info_plist_value(path: "ownCloud Action Extension/Info.plist", key: "CFBundleShortVersionString", value: customAppVersionNumber) set_info_plist_value(path: "ownCloud Intents/Info.plist", key: "CFBundleShortVersionString", value: customAppVersionNumber) end @@ -580,6 +596,7 @@ end set_info_plist_value(path: "ownCloud File Provider/Info.plist", key: "CFBundleVersion", value: BUILD_NUMBER) set_info_plist_value(path: "ownCloud File Provider UI/Info.plist", key: "CFBundleVersion", value: BUILD_NUMBER) set_info_plist_value(path: "ownCloud Share Extension/Info.plist", key: "CFBundleVersion", value: BUILD_NUMBER) + set_info_plist_value(path: "ownCloud Action Extension/Info.plist", key: "CFBundleVersion", value: BUILD_NUMBER) set_info_plist_value(path: "ownCloud Intents/Info.plist", key: "CFBundleVersion", value: BUILD_NUMBER) end @@ -601,6 +618,12 @@ end set_info_plist_value(path: "ownCloud Share Extension/Info.plist", key: "CFBundleDisplayName", value: "Share to " + appName) set_info_plist_value(path: "ownCloud Share Extension/Info.plist", key: "CFBundleName", value: appName) + set_info_plist_value(path: "ownCloud Action Extension/Info.plist", key: "CFBundleDisplayName", value: "Save to " + appName) + set_info_plist_value(path: "ownCloud Action Extension/Info.plist", key: "CFBundleName", value: appName) + + sh("sed -i '' '/\"CFBundleDisplayName\" =/s/ownCloud/#{appName}/' ownCloud\ Action\ Extension/en.lproj/InfoPlist.strings") + sh("sed -i '' '/\"CFBundleDisplayName\" =/s/ownCloud/#{appName}/' ownCloud\ Action\ Extension/de.lproj/InfoPlist.strings") + update_app_identifier( xcodeproj: "ownCloud.xcodeproj", plist_path: "ownCloud/Resources/Info.plist", @@ -637,6 +660,12 @@ end app_identifier: ENTERPRISE_SHARE_EXTENSION_ID ) + update_app_identifier( + xcodeproj: "ownCloud.xcodeproj", + plist_path: "ownCloud Action Extension/Info.plist", + app_identifier: ENTERPRISE_ACTION_EXTENSION_ID + ) + update_app_group_identifiers( entitlements_file: "ownCloud/ownCloud.entitlements", app_group_identifiers: [APP_GROUP_IDENTIFIERS] @@ -682,6 +711,15 @@ end identifiers: [ENTERPRISE_TEAM + "." + APP_GROUP_IDENTIFIERS] ) + update_app_group_identifiers( + entitlements_file: "ownCloud Action Extension/ownCloud Action Extension.entitlements", + app_group_identifiers: [APP_GROUP_IDENTIFIERS] + ) + update_keychain_access_groups( + entitlements_file: "ownCloud Action Extension/ownCloud Action Extension.entitlements", + identifiers: [ENTERPRISE_TEAM + "." + APP_GROUP_IDENTIFIERS] + ) + set_info_plist_value(path: "ownCloud File Provider/Info.plist", key: "OCAppGroupIdentifier", value: OC_APP_GROUP_IDENTIFIERS) set_info_plist_value(path: "ownCloud File Provider/Info.plist", key: "OCKeychainAccessGroupIdentifier", value: OC_APP_GROUP_IDENTIFIERS) set_info_plist_value(path: "ownCloud File Provider/Info.plist", key: "NSExtension", subkey: "NSExtensionFileProviderDocumentGroup", value: APP_GROUP_IDENTIFIERS) @@ -691,6 +729,8 @@ end set_info_plist_value(path: "ownCloud Intents/Info.plist", key: "OCKeychainAccessGroupIdentifier", value: OC_APP_GROUP_IDENTIFIERS) set_info_plist_value(path: "ownCloud Share Extension/Info.plist", key: "OCAppGroupIdentifier", value: OC_APP_GROUP_IDENTIFIERS) set_info_plist_value(path: "ownCloud Share Extension/Info.plist", key: "OCKeychainAccessGroupIdentifier", value: OC_APP_GROUP_IDENTIFIERS) + set_info_plist_value(path: "ownCloud Action Extension/Info.plist", key: "OCAppGroupIdentifier", value: OC_APP_GROUP_IDENTIFIERS) + set_info_plist_value(path: "ownCloud Action Extension/Info.plist", key: "OCKeychainAccessGroupIdentifier", value: OC_APP_GROUP_IDENTIFIERS) set_info_plist_value(path: "ownCloud/Resources/Info.plist", key: "OCAppGroupIdentifier", value: OC_APP_GROUP_IDENTIFIERS) set_info_plist_value(path: "ownCloud/Resources/Info.plist", key: "OCKeychainAccessGroupIdentifier", value: OC_APP_GROUP_IDENTIFIERS) @@ -753,6 +793,16 @@ end targets: ["ownCloud Share Extension"] ) + automatic_code_signing( + path: "ownCloud.xcodeproj", + use_automatic_signing: false, + team_id: ENTERPRISE_TEAM, + code_sign_identity: ENTERPRISE_IDENTITY, + profile_name: ENTERPRISE_ACTION_ACTION_PROFILE, + bundle_identifier: ENTERPRISE_ACTION_EXTENSION_ID, + targets: ["ownCloud Action Extension"] + ) + automatic_code_signing( path: "ownCloud.xcodeproj", use_automatic_signing: false, @@ -820,7 +870,8 @@ end ENTERPRISE_APP_ID => ENTERPRISE_APP_PROFILE, ENTERPRISE_FP_ID => ENTERPRISE_FP_PROFILE, ENTERPRISE_INTENT_ID => ENTERPRISE_INTENT_PROFILE, - ENTERPRISE_SHARE_EXTENSION_ID => ENTERPRISE_SHARE_EXTENSION_PROFILE + ENTERPRISE_SHARE_EXTENSION_ID => ENTERPRISE_SHARE_EXTENSION_PROFILE, + ENTERPRISE_ACTION_EXTENSION_ID => ENTERPRISE_ACTION_EXTENSION_PROFILE } } ) diff --git a/ownCloud Action Extension/Info.plist b/ownCloud Action Extension/Info.plist new file mode 100644 index 000000000..0ff3f9dc5 --- /dev/null +++ b/ownCloud Action Extension/Info.plist @@ -0,0 +1,40 @@ + + + + + OCKeychainAccessGroupIdentifier + group.com.owncloud.ios-app + OCHasFileProvider + + OCAppComponentIdentifier + shareExtension + CFBundleDisplayName + Save to $(APP_PRODUCT_NAME) + OCAppIdentifierPrefix + $(AppIdentifierPrefix) + OCAppGroupIdentifier + group.com.owncloud.ios-app + NSExtension + + NSExtensionAttributes + + NSExtensionActivationRule + SUBQUERY ( + extensionItems, + $extensionItem, + SUBQUERY ( + $extensionItem.attachments, + $attachment, + ( + ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data" + ) + ).@count == $extensionItem.attachments.@count +).@count > 0 + + NSExtensionPrincipalClass + ShareExtensionViewController + NSExtensionPointIdentifier + com.apple.ui-services + + + diff --git a/ownCloud Action Extension/de.lproj/InfoPlist.strings b/ownCloud Action Extension/de.lproj/InfoPlist.strings new file mode 100644 index 000000000..681bcc143 --- /dev/null +++ b/ownCloud Action Extension/de.lproj/InfoPlist.strings @@ -0,0 +1,22 @@ +/* + InfoPlist.strings + ownCloud + + Created by Matthias Hühne on 11/20/2023. + Copyright © 2020 ownCloud GmbH. All rights reserved. +*/ + +/* + * Copyright (C) 2020, ownCloud GmbH. + * + * This code is covered by the GNU Public License Version 3. + * + * For distribution utilizing Apple mechanisms please see https://owncloud.org/contribute/iOS-license-exception/ + * You should have received a copy of this license along with this program. If not, see . + * + */ + +"CFBundleDisplayName" = "Speichern in ownCloud"; + +"The Share Extension is not available on this system." = "Die Erweiterung ist auf diesem System nicht verfügbar."; +"Share Extension unavailable" = "Erweiterung nicht verfügbar"; diff --git a/ownCloud Action Extension/en.lproj/InfoPlist.strings b/ownCloud Action Extension/en.lproj/InfoPlist.strings new file mode 100644 index 000000000..edfd3700d --- /dev/null +++ b/ownCloud Action Extension/en.lproj/InfoPlist.strings @@ -0,0 +1,22 @@ +/* + InfoPlist.strings + ownCloud + + Created by Matthias Hühne on 11/20/2023. + Copyright © 2020 ownCloud GmbH. All rights reserved. +*/ + +/* + * Copyright (C) 2020, ownCloud GmbH. + * + * This code is covered by the GNU Public License Version 3. + * + * For distribution utilizing Apple mechanisms please see https://owncloud.org/contribute/iOS-license-exception/ + * You should have received a copy of this license along with this program. If not, see . + * + */ + +"CFBundleDisplayName" = "Save to ownCloud"; + +"The Share Extension is not available on this system." = "The Share Extension is not available on this system."; +"Share Extension unavailable" = "Share Extension unavailable"; diff --git a/ownCloud Action Extension/ownCloud Action Extension.entitlements b/ownCloud Action Extension/ownCloud Action Extension.entitlements new file mode 100644 index 000000000..988c47786 --- /dev/null +++ b/ownCloud Action Extension/ownCloud Action Extension.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.application-groups + + group.com.owncloud.ios-app + + keychain-access-groups + + $(AppIdentifierPrefix)group.com.owncloud.ios-app + + + diff --git a/ownCloud.xcodeproj/project.pbxproj b/ownCloud.xcodeproj/project.pbxproj index 9b9500cc1..74d0086f2 100644 --- a/ownCloud.xcodeproj/project.pbxproj +++ b/ownCloud.xcodeproj/project.pbxproj @@ -39,6 +39,13 @@ 3912208223436EB80026C290 /* SortMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3912208123436EB80026C290 /* SortMethod.swift */; }; 3912D8AD29958BF400EDCB9A /* OCThemeValues.h in Headers */ = {isa = PBXBuildFile; fileRef = 3912D8AB29958BF400EDCB9A /* OCThemeValues.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3912D8AE29958BF400EDCB9A /* OCThemeValues.m in Sources */ = {isa = PBXBuildFile; fileRef = 3912D8AC29958BF400EDCB9A /* OCThemeValues.m */; }; + 391933C22B0B81DB007DF90B /* ownCloud Action Extension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 391933B42B0B81DB007DF90B /* ownCloud Action Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 391933C62B0B8E5A007DF90B /* ShareExtensionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC9B4FC42940F8D60037F8F8 /* ShareExtensionViewController.swift */; }; + 391933CD2B0B8EBD007DF90B /* ownCloudApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCC0855C2293F1FD008CC05C /* ownCloudApp.framework */; }; + 391933CE2B0B8EC0007DF90B /* ownCloudAppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 394A0AF922EEFC2C00603813 /* ownCloudAppShared.framework */; }; + 391933CF2B0B8EC3007DF90B /* ownCloudSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 239369782076110900BCE21A /* ownCloudSDK.framework */; }; + 391933D02B0B8EC7007DF90B /* ownCloudUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2393697C2076110900BCE21A /* ownCloudUI.framework */; }; + 391933DA2B0B9863007DF90B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 391933DC2B0B9863007DF90B /* InfoPlist.strings */; }; 391C79A824E186DC00CB6333 /* OCBookmark+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC136581208223F000FC0F60 /* OCBookmark+Extension.swift */; }; 392CFEB72705831700631D2B /* LAContext+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392CFEB62705831700631D2B /* LAContext+Extension.swift */; }; 392DDAE624C8923B009E5406 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 233BDEA6204FEFE500C06732 /* Assets.xcassets */; }; @@ -658,6 +665,34 @@ remoteGlobalIDString = DC7E0A77203732B3006111FA; remoteInfo = Ocean; }; + 391933C02B0B81DB007DF90B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 233BDE94204FEFE500C06732 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 391933B32B0B81DB007DF90B; + remoteInfo = "ownCloud Action Extension"; + }; + 391933C72B0B8EA2007DF90B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 233BDE94204FEFE500C06732 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DCC0855B2293F1FD008CC05C; + remoteInfo = ownCloudApp; + }; + 391933C92B0B8EA5007DF90B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 233BDE94204FEFE500C06732 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 394A0AF822EEFC2C00603813; + remoteInfo = ownCloudAppShared; + }; + 391933CB2B0B8EA9007DF90B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 233BDEBF204FEFF300C06732 /* ownCloudSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = DCC8F9AA202852A200EB6701; + remoteInfo = ownCloudSDK; + }; 394A0AFE22EEFC2C00603813 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 233BDE94204FEFE500C06732 /* Project object */; @@ -935,6 +970,7 @@ 39A7138722E79C6700089423 /* ownCloud Intents.appex in Embed Foundation Extensions */, DCE4E47224C1F5610051722F /* ownCloud Share Extension.appex in Embed Foundation Extensions */, DCC6566520C9B7E400110A97 /* ownCloud File Provider.appex in Embed Foundation Extensions */, + 391933C22B0B81DB007DF90B /* ownCloud Action Extension.appex in Embed Foundation Extensions */, 39DC7CD725C2E1570001E08C /* ownCloud File Provider UI.appex in Embed Foundation Extensions */, ); name = "Embed Foundation Extensions"; @@ -990,6 +1026,12 @@ 391220932344C30F0026C290 /* CutAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CutAction.swift; sourceTree = ""; }; 3912D8AB29958BF400EDCB9A /* OCThemeValues.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCThemeValues.h; sourceTree = ""; }; 3912D8AC29958BF400EDCB9A /* OCThemeValues.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCThemeValues.m; sourceTree = ""; }; + 391933B42B0B81DB007DF90B /* ownCloud Action Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "ownCloud Action Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + 391933B52B0B81DB007DF90B /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; }; + 391933BF2B0B81DB007DF90B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 391933D12B0B9577007DF90B /* ownCloud Action Extension.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "ownCloud Action Extension.entitlements"; sourceTree = ""; }; + 391933DB2B0B9863007DF90B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 391933DD2B0B9871007DF90B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; 392CFEB62705831700631D2B /* LAContext+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "LAContext+Extension.swift"; sourceTree = ""; }; 392DDB1324CF024C009E5406 /* ImportFilesController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportFilesController.swift; sourceTree = ""; }; 3931206A2326451900E8DFBA /* Branding.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Branding.plist; path = ownCloud/Resources/Theming/Branding.plist; sourceTree = SOURCE_ROOT; }; @@ -1680,6 +1722,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 391933B12B0B81DB007DF90B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 391933D02B0B8EC7007DF90B /* ownCloudUI.framework in Frameworks */, + 391933CF2B0B8EC3007DF90B /* ownCloudSDK.framework in Frameworks */, + 391933CE2B0B8EC0007DF90B /* ownCloudAppShared.framework in Frameworks */, + 391933CD2B0B8EBD007DF90B /* ownCloudApp.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 394A0AF622EEFC2C00603813 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1790,6 +1843,7 @@ 394A0AFA22EEFC2C00603813 /* ownCloudAppShared */, DCE4E46924C1F5610051722F /* ownCloud Share Extension */, 39DC7CCE25C2E1570001E08C /* ownCloud File Provider UI */, + 391933B72B0B81DB007DF90B /* ownCloud Action Extension */, 233BDE9D204FEFE500C06732 /* Products */, DC85573220513CC700189B9A /* Frameworks */, ); @@ -1809,6 +1863,7 @@ 394A0AF922EEFC2C00603813 /* ownCloudAppShared.framework */, DCE4E46824C1F5610051722F /* ownCloud Share Extension.appex */, 39DC7CCD25C2E1570001E08C /* ownCloud File Provider UI.appex */, + 391933B42B0B81DB007DF90B /* ownCloud Action Extension.appex */, ); name = Products; sourceTree = ""; @@ -1933,6 +1988,16 @@ path = Client; sourceTree = ""; }; + 391933B72B0B81DB007DF90B /* ownCloud Action Extension */ = { + isa = PBXGroup; + children = ( + 391933DC2B0B9863007DF90B /* InfoPlist.strings */, + 391933D12B0B9577007DF90B /* ownCloud Action Extension.entitlements */, + 391933BF2B0B81DB007DF90B /* Info.plist */, + ); + path = "ownCloud Action Extension"; + sourceTree = ""; + }; 392DDB1224CF024C009E5406 /* Import */ = { isa = PBXGroup; children = ( @@ -2776,6 +2841,7 @@ A56EA84D8AD331FFA604138B /* Pods_ownCloudTests.framework */, 42866B2892DC9EDC65D844E7 /* Pods_ownCloud_Screenshots_Tests.framework */, 54199937F74A129BC74DEB0A /* Pods_ownCloudScreenshotsTests.framework */, + 391933B52B0B81DB007DF90B /* UniformTypeIdentifiers.framework */, ); name = Frameworks; sourceTree = ""; @@ -3757,6 +3823,7 @@ DCE4E47124C1F5610051722F /* PBXTargetDependency */, DC0491AA258CAF9800DEDC27 /* PBXTargetDependency */, 39DC7CD625C2E1570001E08C /* PBXTargetDependency */, + 391933C12B0B81DB007DF90B /* PBXTargetDependency */, ); name = ownCloud; packageProductDependencies = ( @@ -3790,6 +3857,26 @@ productReference = 233BDEB0204FEFE500C06732 /* ownCloudTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + 391933B32B0B81DB007DF90B /* ownCloud Action Extension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 391933C32B0B81DC007DF90B /* Build configuration list for PBXNativeTarget "ownCloud Action Extension" */; + buildPhases = ( + 391933B02B0B81DB007DF90B /* Sources */, + 391933B12B0B81DB007DF90B /* Frameworks */, + 391933B22B0B81DB007DF90B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 391933CC2B0B8EA9007DF90B /* PBXTargetDependency */, + 391933CA2B0B8EA5007DF90B /* PBXTargetDependency */, + 391933C82B0B8EA2007DF90B /* PBXTargetDependency */, + ); + name = "ownCloud Action Extension"; + productName = "ownCloud Action Extension"; + productReference = 391933B42B0B81DB007DF90B /* ownCloud Action Extension.appex */; + productType = "com.apple.product-type.app-extension"; + }; 394A0AF822EEFC2C00603813 /* ownCloudAppShared */ = { isa = PBXNativeTarget; buildConfigurationList = 394A0B0222EEFC2C00603813 /* Build configuration list for PBXNativeTarget "ownCloudAppShared" */; @@ -3967,7 +4054,7 @@ 233BDE94204FEFE500C06732 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1150; + LastSwiftUpdateCheck = 1500; LastUpgradeCheck = 1420; ORGANIZATIONNAME = "ownCloud GmbH"; TargetAttributes = { @@ -3996,6 +4083,9 @@ ProvisioningStyle = Automatic; TestTargetID = 233BDE9B204FEFE500C06732; }; + 391933B32B0B81DB007DF90B = { + CreatedOnToolsVersion = 15.0; + }; 394A0AF822EEFC2C00603813 = { CreatedOnToolsVersion = 11.0; LastSwiftMigration = 1430; @@ -4093,6 +4183,7 @@ DCC0855B2293F1FD008CC05C /* ownCloudApp */, 394A0AF822EEFC2C00603813 /* ownCloudAppShared */, DCC085632293F1FD008CC05C /* ownCloudAppTests */, + 391933B32B0B81DB007DF90B /* ownCloud Action Extension */, ); }; /* End PBXProject section */ @@ -4173,6 +4264,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 391933B22B0B81DB007DF90B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 391933DA2B0B9863007DF90B /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 394A0AF722EEFC2C00603813 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4511,6 +4610,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 391933B02B0B81DB007DF90B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 391933C62B0B8E5A007DF90B /* ShareExtensionViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 394A0AF522EEFC2C00603813 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4886,6 +4993,26 @@ target = 233BDE9B204FEFE500C06732 /* ownCloud */; targetProxy = 233BDEB1204FEFE500C06732 /* PBXContainerItemProxy */; }; + 391933C12B0B81DB007DF90B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 391933B32B0B81DB007DF90B /* ownCloud Action Extension */; + targetProxy = 391933C02B0B81DB007DF90B /* PBXContainerItemProxy */; + }; + 391933C82B0B8EA2007DF90B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DCC0855B2293F1FD008CC05C /* ownCloudApp */; + targetProxy = 391933C72B0B8EA2007DF90B /* PBXContainerItemProxy */; + }; + 391933CA2B0B8EA5007DF90B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 394A0AF822EEFC2C00603813 /* ownCloudAppShared */; + targetProxy = 391933C92B0B8EA5007DF90B /* PBXContainerItemProxy */; + }; + 391933CC2B0B8EA9007DF90B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ownCloudSDK; + targetProxy = 391933CB2B0B8EA9007DF90B /* PBXContainerItemProxy */; + }; 394A0AFF22EEFC2C00603813 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 394A0AF822EEFC2C00603813 /* ownCloudAppShared */; @@ -5086,6 +5213,15 @@ name = Intents.intentdefinition; sourceTree = ""; }; + 391933DC2B0B9863007DF90B /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 391933DB2B0B9863007DF90B /* en */, + 391933DD2B0B9871007DF90B /* de */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; 39534BC924EA903200AD7907 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( @@ -5444,6 +5580,86 @@ }; name = Release; }; + 391933C42B0B81DC007DF90B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CODE_SIGN_ENTITLEMENTS = "ownCloud Action Extension/ownCloud Action Extension.entitlements"; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(APP_VERSION)"; + DEVELOPMENT_TEAM = 4AP2STM4H5; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "ownCloud Action Extension/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "ownCloud Action Extension"; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 ownCloud GmbH. All rights reserved."; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = "${APP_SHORT_VERSION}"; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.owncloud.ios-app.ownCloud-Action-Extension"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 391933C52B0B81DC007DF90B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CODE_SIGN_ENTITLEMENTS = "ownCloud Action Extension/ownCloud Action Extension.entitlements"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(APP_VERSION)"; + DEVELOPMENT_TEAM = 4AP2STM4H5; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "ownCloud Action Extension/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "ownCloud Action Extension"; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 ownCloud GmbH. All rights reserved."; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = "${APP_SHORT_VERSION}"; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.owncloud.ios-app.ownCloud-Action-Extension"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; 394A0B0322EEFC2C00603813 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5906,6 +6122,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 391933C32B0B81DC007DF90B /* Build configuration list for PBXNativeTarget "ownCloud Action Extension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 391933C42B0B81DC007DF90B /* Debug */, + 391933C52B0B81DC007DF90B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 394A0B0222EEFC2C00603813 /* Build configuration list for PBXNativeTarget "ownCloudAppShared" */ = { isa = XCConfigurationList; buildConfigurations = (