From 812d47e2362b94ce6cfe2c79cfe198cb3e7a4a0b Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Thu, 22 Sep 2016 13:09:10 -0400 Subject: [PATCH] [msbuild] Add watch-companion to UIRequiredDeviceCapabilities for watchOS1 extensions (#868) Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=44257 --- .../Tasks/CompileAppManifestTaskBase.cs | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/msbuild/Xamarin.iOS.Tasks.Core/Tasks/CompileAppManifestTaskBase.cs b/msbuild/Xamarin.iOS.Tasks.Core/Tasks/CompileAppManifestTaskBase.cs index 9154f35293f3..e18498a61a8d 100644 --- a/msbuild/Xamarin.iOS.Tasks.Core/Tasks/CompileAppManifestTaskBase.cs +++ b/msbuild/Xamarin.iOS.Tasks.Core/Tasks/CompileAppManifestTaskBase.cs @@ -184,8 +184,41 @@ bool Compile (PDictionary plist) plist.SetIfNotPresent (ManifestKeys.MinimumOSVersion, minimumOSVersion.ToString ()); - if (IsWatchExtension && Debug) - SetAppTransportSecurity (plist); + if (IsWatchExtension) { + // Note: Only watchOS1 Extensions target Xamarin.iOS + if (Framework == PlatformFramework.iOS) { + PObject value; + + if (!plist.TryGetValue (ManifestKeys.UIRequiredDeviceCapabilities, out value)) { + var capabilities = new PArray (); + capabilities.Add (new PString ("watch-companion")); + + plist.Add (ManifestKeys.UIRequiredDeviceCapabilities, capabilities); + } else if (value is PDictionary) { + var capabilities = (PDictionary) value; + + if (!capabilities.ContainsKey ("watch-companion")) + capabilities.Add ("watch-companion", new PBoolean (true)); + } else { + var capabilities = (PArray) value; + bool exists = false; + + foreach (var capability in capabilities.OfType ()) { + if (capability.Value != "watch-companion") + continue; + + exists = true; + break; + } + + if (!exists) + capabilities.Add (new PString ("watch-companion")); + } + } + + if (Debug) + SetAppTransportSecurity (plist); + } // Remove any Xamarin Studio specific keys plist.Remove (ManifestKeys.XSLaunchImageAssets);