如何将Apple Watch Xcode 26连接到iOS .NET10 MAUI?

移动开发 2026-07-11

我正在让Apple Watch与用.NET MAUI编写的iOS应用协同工作。

我尝试用一个简单的切换示例应用来演示用Xcode 26编写的Apple Watch与用VS2026 .NET 10 MAUI编写的iPhone(iOS应用)之间的基础连接。该应用会在iPhone之间来回发送开/关的二进制信号,这样就能让iPhone和 iWatch保持同步。

我是.NET的资深开发者。

首先,我把它作为一个成对的应用,放在同一个项目中,两者都在Mac上用Xcode 26一起编写。

https://github.com/fatscally/WatchMe.git    这段实现可以完美运行。

接着我回应了“必须一起部署”的建议,因此我在Xcode中编写了一个WatchOnly应用,看看它是否能够与先前的iOS Xcode应用同步。结果它确实可以。所以应用不必作为一个整体安装,只要匹配bundleId就可以了。

现在,在笔记本上,我把iOS iPhone组件用.NET 10 MAUI重写,但仍无法让它们连接。
https://github.com/fatscally/watchme-maui.git
我在调试输出中看到很多这样的错误。

INFO: 2026-03-23 15:49:11.265 watchme[3997:1934753] Paired: True, WatchAppInstalled: False, Reachable: False
2026-03-23 15:49:11.265 watchme[3997:1934753] Cannot send state because the watch companion app is unavailable.

(有趣的观察,当我保留原始Xcode iOS应用并运行MAUI iOS应用时,这会启动(较旧的)Xcode应用。 这告诉我AppBundleIds必须匹配无误。)

Maui应用的Info.plist。

    <key>CFBundleIdentifier</key>
    <string>com.theclubreferee.ioswatch.watchme</string>
    <key>WKCompanionAppBundleIdentifier</key>
    <string>com.theclubreferee.ioswatch.watchme.watchkitapp</string>

在手表端:

    PRODUCT_BUNDLE_IDENTIFIER = com.theclubreferee.ioswatch.watchme.watchkitapp;
        INFOPLIST_KEY_WKCompanionAppBundleIdentifier = com.theclubreferee.ioswatch.watchme;

非常感谢帮助。我已经被这个问题卡住了。

Apple Watch 与 iPhone 显示开启电源。
Apple Watch 与 iPhone 显示关闭电源。

解决方案

搞定了!你在Mac上构建Watch应用,然后把它放进PC上的MAUI应用中。运行MAUI应用,它会通过“Watch Management Tool”安装手表应用。

在Mac上;
在Xcode中构建Watch应用。这会给你一个 .xcarchive。在它里面,在 Products/Applications/ 下,是 watchme-standalone.app。拿走它并把放进你的MAUI项目中。
watchme-standaloneInfo.plist 中,确保此键指向你MAUI应用的bundle ID:

<key>WKCompanionAppBundleIdentifier</key>
<string>com.yourcompany.watchme</string>

在PC上;
在你的 watchme MAUI iOS项目中,创建如下文件夹结构:

watchme/
Platforms/
iOS/
Watch/
watchme-standalone.app ← 将构建好的Watch .app粘贴到这里

然后在 watchme.csproj 中,将其标记为包含在打包中:

<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
  <BundleResource Include="Platforms\iOS\Watch\watchme-standalone.app\**">
    <LogicalName>Watch\watchme-standalone.app\%(RecursiveDir)%(Filename)%(Extension)</LogicalName>
  </BundleResource>
</ItemGroup>

.NET MAUI示例应用在这里:
https://github.com/fatscally/watchme-maui.git

Xcode示例应用在这里:
https://github.com/fatscally/WatchMe.git

如果对你有帮助,请点个赞! ;)

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章