1***@163.com
1***@163.com
  • 发布:2021-06-22 10:03
  • 更新:2021-06-22 14:00
  • 阅读:829

iOS微信相关原生插件封装时, 不回调 onResp 方法?

分类:uni-app

问题描述

最近有这样一个业务场景,做一个微信发票导入的功能,因为uni-app不支持类似的原生功能,所以需要自己封装原生插件。

实现

在封装原生插件时,新建了一个WxModuleProxy类实现UniPluginProtocol来监听系统事件,实现WXApiDelegate来监听微信的回调,相关代码如下

- (BOOL)application:(UIApplication *_Nullable)application didFinishLaunchingWithOptions:(NSDictionary *_Nullable)launchOptions {  
    // 向微信注册  
    [WXApi registerApp:appId universalLink:link];  
    return YES;  
}  
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {  
    return [WXApi handleOpenUniversalLink:userActivity delegate:self];  
}  
- (void)onResp:(BaseResp *)resp {  
    //业务逻辑  
}

运行后发现,可以跳转到微信也可以选择发票,但是选择完毕之后WxModuleProxy中的continueUserActivityonResp方法并没有触发,无法将发票信息带回到app。后来查询需要在AppDelegate.m中重写continueUserActivity方法,添加如下代码:

//@Summary:通用链接  
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {  
    [PDRCore handleSysEvent:PDRCoreSysEventContinueUserActivity withObject:userActivity];  
    restorationHandler(nil);  
    return YES;  
}

至此,终于可以运行成功,并且也可以在onResp中拿到发票信息。完结撒花

不对? 这好像是个问答帖

在我打成原生插件用自定义基座运行时,又又又又不行了~~~ 我估计是自定义基座中AppDelegatecontinueUserActivity没有重写导致,我该怎么办,只能离线打包吗???,还是官方有别的解决办法

2021-06-22 10:03 负责人:无 分享
已邀请:
1***@163.com

1***@163.com (作者)

找到原因了

插件配置的时候,忘记配置hookClass了,配置完之后WxModuleProxy就能监听到系统事件了,也会回调到onResp方法。感谢QQ群里的一位大佬提醒。

  • 2dfAs但是

    遇到了相同的使用场景 插件能借用下吗 有偿

    2022-12-21 10:53

该问题目前已经被锁定, 无法添加新回复