在Xcode Swift中运行用Ionic编写的函数

i2loujxw  于 2023-11-15  发布在  Ionic
关注(0)|答案(1)|浏览(150)

我有一个Ionic应用程序。我在Xcode for iOS中编译了它,它可以工作。我还为这个应用程序创建了一个小部件。我的愿望是,如果应用程序以正常的应用程序图标打开,主屏幕应该出现。但是,如果它是用小部件打开的,它将重定向到另一个页面。我怎么做?我尝试了很多方法,但找不到解决方案。
为此,我尝试在Typescript端创建一个服务并在那里进行路由,但我无法在这里运行Typescript中的代码。
Ts:

import { registerPlugin } from '@capacitor/core';
import { NavController } from '@ionic/angular';

// Define the interface
export interface MyServicePlugin {
  routeProfile(): any;
  routePage(): any;
}

// Implement the class
export class MyService implements MyServicePlugin {
  constructor(
    private navCtrl: NavController
  ) { }
  routeProfile() {
    console.log("sssssssss")
     return this.navCtrl.navigateForward(['/login-control']);
  }

  routePage() {
    console.log("ddddddd")
    return this.navCtrl.navigateForward(['/login-control']);
  }
}

const myService = registerPlugin<MyServicePlugin>('MyService');

export default myService;`

字符串
Swift代码:

import Foundation
import Capacitor

@objc(MyService)
public class MyService: CAPPlugin {

@objc func routePage(_ call: CAPPluginCall) {

}

@objc func routeProfile(_ call: CAPPluginCall) {
        if let viewController = self.bridge?.viewController {
        //viewController.performSegue(withIdentifier: "/login-control", sender: nil)
            call.resolve([:])
        } else {
            call.reject("NavController is not available.")
        }
    }
}


`
我在设备中的结果:

To Native ->  MyService routeProfile 134138947

njthzxwz

njthzxwz1#

好像没什么问题。我想你忘了调用函数了。
在ts文件中调用func:

await myService.routeProfile();

字符串
此外,您还可以发送参数。
在Swift中:

call.resolve(["xxx":"yyy"])


你可以在ts文件中得到这个值。

let xVal = await myService.routeProfile();

相关问题