【问题标题】:Callback to Cordova plugin from Objective C delegate从 Objective C 委托回调 Cordova 插件
【发布时间】:2015-12-19 13:23:09
【问题描述】:

情况:我正在构建一个 Cordova 插件来将现有的 iOS 库与 Ionic 连接起来。方法的基本映射已经完成并且可以工作,这意味着我可以通过 Angular 方法调用 iOS 方法并获得成功/错误回调。

问题:有一个登录方法被调用,然后适当的委托方法(例如 userDidLoginWithSuccess)被调用。从登录方法回调到 cordova 插件很容易,但我需要从委托方法回调,以便让 Ionic 应用知道用户是否成功登录。

对此有什么想法吗?谢谢。

PS:我查看了这篇文章,虽然这是一个类似的问题,但没有帮助。 Phonegap - Send message to Javascript from Objective-c in a plugin delegate

【问题讨论】:

    标签: javascript ios objective-c cordova ionic


    【解决方案1】:

    在您的 .h 中创建一个属性 callbackId,您将使用它来存储插件的回调标识符

    @property (nonatomic, strong) NSString* callbackId;
    

    然后,在您的插件方法中,将 callbackId 存储在您创建的属性中。

    self.callbackId = command.callbackId;
    

    最后,在委托上使用 callbackId 发送插件结果

    CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:@"string result"];
    [self.commandDelegate sendPluginResult:result callbackId:self.callbackId];
    

    【讨论】:

    • 谢谢@jcesarmobile,这正是我想要的。
    • 有没有人可以指出的例子?
    • 我为 Swift 做了同样的事情。我已经连接到 Swift 代码,并且可以启动代码。这是一个 iBeacon 插件,所以有很多代表。有人对如何使用 Swift 获取回调有任何建议吗?我尝试使用这种方法,但它似乎不起作用。谢谢!
    • 您可以尝试发送 no 结果并将 keepcallback 设置为 true。一些 Objective-C 代码 self.pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_NO_RESULT]; [self.pluginResult setKeepCallbackAsBool:YES];
    • 当然,我在发表评论/问题后立即解决了它。在“侦听器函数”中,您只需确保插件结果具有 CDVCommandStatus_NO_RESULT 的结果,并在下一行将插件的“setKeepCallback”设置为 true。然后你按照这个答案所示做剩下的事情。
    猜你喜欢
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多