Plugin discovery : MainViewController sous-classe CAPBridgeViewController
Capacitor 8 n'auto-découvre pas les plugins in-app Swift (qui ne sont pas des npm packages). Les plugins définis dans le target App doivent être enregistrés manuellement via une sous-classe de CAPBridgeViewController qui override capacitorDidLoad(). Ajouts : - ios/App/App/MainViewController.swift : sous-classe qui registers CoachWorkoutKitPlugin() dans capacitorDidLoad() - Main.storyboard : customClass pointe sur MainViewController (module 'App' target) au lieu de CAPBridgeViewController (module Capacitor) - project.pbxproj : 4 entrées pour MainViewController.swift (BuildFile, FileReference, group, Sources phase) Après rebuild, Capacitor.Plugins.CoachWorkoutKit sera dispo en JS.
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
504EC3081FED79650016851F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504EC3071FED79650016851F /* AppDelegate.swift */; };
|
||||
C0AC4A07811751FB78AA0001 /* CoachAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0AC4A07811751FB78AA0002 /* CoachAuth.swift */; };
|
||||
D1BD5B1990CF3F2B9C5D0001 /* CoachWorkoutKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BD5B1990CF3F2B9C5D0002 /* CoachWorkoutKit.swift */; };
|
||||
E2CE6C2AA1DF4F3CAD6E0001 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2CE6C2AA1DF4F3CAD6E0002 /* MainViewController.swift */; };
|
||||
504EC30D1FED79650016851F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30B1FED79650016851F /* Main.storyboard */; };
|
||||
504EC30F1FED79650016851F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30E1FED79650016851F /* Assets.xcassets */; };
|
||||
504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; };
|
||||
@@ -26,6 +27,7 @@
|
||||
504EC3071FED79650016851F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
C0AC4A07811751FB78AA0002 /* CoachAuth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoachAuth.swift; sourceTree = "<group>"; };
|
||||
D1BD5B1990CF3F2B9C5D0002 /* CoachWorkoutKit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoachWorkoutKit.swift; sourceTree = "<group>"; };
|
||||
E2CE6C2AA1DF4F3CAD6E0002 /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = "<group>"; };
|
||||
504EC30C1FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
504EC30E1FED79650016851F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
@@ -72,6 +74,7 @@
|
||||
504EC3071FED79650016851F /* AppDelegate.swift */,
|
||||
C0AC4A07811751FB78AA0002 /* CoachAuth.swift */,
|
||||
D1BD5B1990CF3F2B9C5D0002 /* CoachWorkoutKit.swift */,
|
||||
E2CE6C2AA1DF4F3CAD6E0002 /* MainViewController.swift */,
|
||||
504EC30B1FED79650016851F /* Main.storyboard */,
|
||||
504EC30E1FED79650016851F /* Assets.xcassets */,
|
||||
504EC3101FED79650016851F /* LaunchScreen.storyboard */,
|
||||
@@ -166,6 +169,7 @@
|
||||
504EC3081FED79650016851F /* AppDelegate.swift in Sources */,
|
||||
C0AC4A07811751FB78AA0001 /* CoachAuth.swift in Sources */,
|
||||
D1BD5B1990CF3F2B9C5D0001 /* CoachWorkoutKit.swift in Sources */,
|
||||
E2CE6C2AA1DF4F3CAD6E0001 /* MainViewController.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<!--Bridge View Controller-->
|
||||
<scene sceneID="tne-QT-ifu">
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="CAPBridgeViewController" customModule="Capacitor" sceneMemberID="viewController"/>
|
||||
<viewController id="BYZ-38-t0r" customClass="MainViewController" customModule="App" customModuleProvider="target" sceneMemberID="viewController"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
|
||||
16
ios/App/App/MainViewController.swift
Normal file
16
ios/App/App/MainViewController.swift
Normal file
@@ -0,0 +1,16 @@
|
||||
// MainViewController.swift
|
||||
// Sous-classe de CAPBridgeViewController pour enregistrer manuellement les
|
||||
// plugins Capacitor in-app (i.e. plugins définis directement dans le target
|
||||
// App, pas en npm package). Capacitor 8 n'auto-découvre pas ces plugins,
|
||||
// faut les registrer ici dans capacitorDidLoad().
|
||||
|
||||
import UIKit
|
||||
import Capacitor
|
||||
|
||||
class MainViewController: CAPBridgeViewController {
|
||||
override func capacitorDidLoad() {
|
||||
// Plugin natif WorkoutKit — pousse des workouts intervalles vers
|
||||
// l'Apple Watch (cf. CoachWorkoutKit.swift).
|
||||
bridge?.registerPluginInstance(CoachWorkoutKitPlugin())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user