我们正在为 CarPlay 扩展我们的 Xamarin.iOS 应用(由 Xamarin.Forms 提供)。打开 CarPlay 模拟器时,应用程序显示在 CarPlay 屏幕上,但从 CarPlay 模拟器启动时崩溃。
下面是 Info.plist 场景配置:
<key>UIApplicationSceneManifest</key>
<dict>
<key>UISceneConfigurations</key>
<dict>
<key>CPTemplateApplicationSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneClassName</key>
<string>CPTemplateApplicationScene</string>
<key>UISceneConfigurationName</key>
<string>ParkingPlus-Car</string>
<key>UISceneDelegateClassName</key>
<string>ParkingPlus.AppSceneDelegateImp</string>
</dict>
</array>
</dict>
</dict>
“ParkingPlus”是应用程序包的名称!
AppSceneDelegateImp 类(在 iOS 项目的根文件夹下
public class AppSceneDelegateImp : UIResponder, ICPTemplateApplicationSceneDelegate
{
private CPInterfaceController _interfaceController;
public async void DidConnect(CPTemplateApplicationScene templateApplicationScene, CPInterfaceController interfaceController)
{
_interfaceController = interfaceController;
.....
}
public void DidDisconnect(CPTemplateApplicationScene templateApplicationScene, CPInterfaceController interfaceController)
{
_interfaceController.Dispose();
_interfaceController = null;
}
}
当我覆盖 AppDelegate.GetConfiguration 如下
public override UISceneConfiguration GetConfiguration(UIApplication application, UISceneSession connectingSceneSession, UISceneConnectionOptions options)
{
...
}
点击 CarPlay 上的应用程序图标时,将调用该方法。但是当我检查connectingSceneSession时,我发现变量成员内部有一些异常。“CPTemplateApplicationSceneSessionRoleApplication 在此平台上没有关联的枚举值”。
如果继续,则应用程序将引发异常,这似乎表明 SceneDelegate 未正确加载: 异常
我的环境:Visual Studio for mac 版本 8.7.8 Xamarin.iOS 14.0.0 Xcode 12.0
绑定 iOS 库时,Xamarin.ios 14 似乎缺少一些东西。任何人都有类似的问题。我做错了什么还是有什么其他方法可以通过 Xcode/swift 实现 CarPlay 部分功能,同时将移动应用程序保留在 Xamarin.Forms/Xamarin.iOS 上?
感谢任何评论或帮助。