Commit 8c20c4ed by ludi

增加一个可以单独给打开flutter页面传入的参数集

parent 6c93895d
Showing with 139 additions and 31 deletions
...@@ -24,6 +24,12 @@ open class FUSFlutterViewController: FlutterViewController { ...@@ -24,6 +24,12 @@ open class FUSFlutterViewController: FlutterViewController {
/// 当前页面点击来源链接。 /// 当前页面点击来源链接。
public var clickUrl: String = "" public var clickUrl: String = ""
/// 当前页面额外透传给 Flutter 的用户信息。
///
/// 仅支持可 JSON 化的数据类型,例如 `String`、`NSNumber`、`Bool`、
/// `[String: Any]` 与 `[Any]`。
public var extraUserData: [String: Any] = [:]
/// 是否隐藏导航栏。 /// 是否隐藏导航栏。
public var hideWebTitleBar: Bool = false { public var hideWebTitleBar: Bool = false {
didSet { didSet {
......
...@@ -35,6 +35,9 @@ public final class FUSFlutterBridge: NSObject { ...@@ -35,6 +35,9 @@ public final class FUSFlutterBridge: NSObject {
/// 当前 Flutter 页面对应的点击来源链接。 /// 当前 Flutter 页面对应的点击来源链接。
private var clickUrlInUserData = "" private var clickUrlInUserData = ""
/// 当前 Flutter 页面额外透传给 getUserData 的用户信息。
private var extraUserDataInCurrentPage: [String: Any] = [:]
/// 当前flutter的音频播放状态 type 0:接通电话后挂断 / online状态 1:直播间内 /// 当前flutter的音频播放状态 type 0:接通电话后挂断 / online状态 1:直播间内
private var currentVideoStateType: Int = 0 private var currentVideoStateType: Int = 0
...@@ -102,27 +105,66 @@ public final class FUSFlutterBridge: NSObject { ...@@ -102,27 +105,66 @@ public final class FUSFlutterBridge: NSObject {
@objc public func openFlutterDispatchIfSupported(webUrl: String, @objc public func openFlutterDispatchIfSupported(webUrl: String,
showHeadInUserData: Bool, showHeadInUserData: Bool,
fallback: @escaping () -> Void) { fallback: @escaping () -> Void) {
openFlutterDispatchIfSupported(webUrl: webUrl,
showHeadInUserData: showHeadInUserData,
extraUserData: [:],
fallback: fallback)
}
/// 打开 Flutter 的viewcontroller,并附带当前页面额外用户信息。
/// - Parameters:
/// - webUrl: url
/// - showHeadInUserData: 是否显示导航头
/// - extraUserData: 当前页面额外透传给 getUserData 的用户信息
/// - fallback: 失败的回调
@objc(openFlutterDispatchIfSupportedWithWebUrl:showHeadInUserData:extraUserData:fallback:)
public func openFlutterDispatchIfSupported(webUrl: String,
showHeadInUserData: Bool,
extraUserData: [String: Any],
fallback: @escaping () -> Void) {
resolveFlutterHandleWebURL(webUrl) { [weak self] canOpenFlutter in resolveFlutterHandleWebURL(webUrl) { [weak self] canOpenFlutter in
guard let self = self, canOpenFlutter else { guard let self = self, canOpenFlutter else {
fallback() fallback()
return return
} }
self.openFlutterDispatchPage(webUrl: webUrl, showHeadInUserData: showHeadInUserData) self.openFlutterDispatchPage(webUrl: webUrl,
showHeadInUserData: showHeadInUserData,
extraUserData: extraUserData)
} }
} }
/// 直接打开 Flutter 分发页。 /// 直接打开 Flutter 分发页。
@objc public func openFlutterDispatchPage(webUrl: String, showHeadInUserData: Bool) { @objc public func openFlutterDispatchPage(webUrl: String, showHeadInUserData: Bool) {
openFlutterDispatchPage(webUrl: webUrl,
showHeadInUserData: showHeadInUserData,
extraUserData: [:])
}
/// 直接打开 Flutter 分发页,并附带当前页面额外用户信息。
/// - Parameters:
/// - webUrl: 目标路由
/// - showHeadInUserData: 是否在 getUserData 中附带 showHead
/// - extraUserData: 当前页面额外透传给 getUserData 的用户信息
@objc(openFlutterDispatchPageWithWebUrl:showHeadInUserData:extraUserData:)
public func openFlutterDispatchPage(webUrl: String,
showHeadInUserData: Bool,
extraUserData: [String: Any]) {
let flutterVC = FUSFlutterViewController(route: webUrl) let flutterVC = FUSFlutterViewController(route: webUrl)
flutterVC.hidesBottomBarWhenPushed = true flutterVC.hidesBottomBarWhenPushed = true
flutterVC.hideWebTitleBar = true flutterVC.hideWebTitleBar = true
flutterVC.showHeadInUserData = showHeadInUserData flutterVC.showHeadInUserData = showHeadInUserData
flutterVC.extraUserData = extraUserData
UIViewController.fus_top()?.navigationController?.pushViewController(flutterVC, animated: true) UIViewController.fus_top()?.navigationController?.pushViewController(flutterVC, animated: true)
} }
@objc private func handleFlutterPageWillAppear(_ notification: Notification) { @objc private func handleFlutterPageWillAppear(_ notification: Notification) {
showHeadInUserData = (notification.userInfo?["showHeadInUserData"] as? Bool) ?? false showHeadInUserData = (notification.userInfo?["showHeadInUserData"] as? Bool) ?? false
clickUrlInUserData = (notification.userInfo?["clickUrl"] as? String) ?? "" clickUrlInUserData = (notification.userInfo?["clickUrl"] as? String) ?? ""
if let flutterViewController = notification.object as? FUSFlutterViewController {
extraUserDataInCurrentPage = sanitizeExtraUserData(flutterViewController.extraUserData)
} else {
extraUserDataInCurrentPage = [:]
}
pushUserData() pushUserData()
fus_p_setVideoState(type: self.currentVideoStateType) fus_p_setVideoState(type: self.currentVideoStateType)
} }
...@@ -130,6 +172,7 @@ public final class FUSFlutterBridge: NSObject { ...@@ -130,6 +172,7 @@ public final class FUSFlutterBridge: NSObject {
@objc private func handleFlutterPageDidExit(_ notification: Notification) { @objc private func handleFlutterPageDidExit(_ notification: Notification) {
showHeadInUserData = false showHeadInUserData = false
clickUrlInUserData = "" clickUrlInUserData = ""
extraUserDataInCurrentPage = [:]
} }
/// 主动向 Flutter 注入用户数据。 /// 主动向 Flutter 注入用户数据。
...@@ -318,7 +361,7 @@ public final class FUSFlutterBridge: NSObject { ...@@ -318,7 +361,7 @@ public final class FUSFlutterBridge: NSObject {
let api = FUSAPIDNSManager.shareInstance().apidns ?? "" let api = FUSAPIDNSManager.shareInstance().apidns ?? ""
let isDebug = FUSConfig.sharedInstanced().devConfigs.devLevel != .release let isDebug = FUSConfig.sharedInstanced().devConfigs.devLevel != .release
return [ var userData: [String: Any] = [
"uid": uid, "uid": uid,
"token": token, "token": token,
"driverid": driverid, "driverid": driverid,
...@@ -333,6 +376,40 @@ public final class FUSFlutterBridge: NSObject { ...@@ -333,6 +376,40 @@ public final class FUSFlutterBridge: NSObject {
"clickUrl": clickUrlInUserData, "clickUrl": clickUrlInUserData,
"subscribeCdn": FUSAPIDNSManager.shareInstance().subCdn "subscribeCdn": FUSAPIDNSManager.shareInstance().subCdn
] ]
for (key, value) in extraUserDataInCurrentPage {
userData[key] = value
}
return userData
}
/// 过滤无法直接 JSON 化的额外用户信息,避免 getUserData 编码失败。
private func sanitizeExtraUserData(_ extraData: [String: Any]) -> [String: Any] {
var result: [String: Any] = [:]
for (key, value) in extraData {
guard let compatibleValue = jsonCompatibleValue(from: value) else {
continue
}
result[key] = compatibleValue
}
return result
}
/// 将任意对象转换为可 JSON 化的值。
private func jsonCompatibleValue(from value: Any) -> Any? {
switch value {
case let stringValue as String:
return stringValue
case let numberValue as NSNumber:
return numberValue
case let dictionaryValue as [String: Any]:
return sanitizeExtraUserData(dictionaryValue)
case let arrayValue as [Any]:
return arrayValue.compactMap { jsonCompatibleValue(from: $0) }
case _ as NSNull:
return NSNull()
default:
return nil
}
} }
private func encodeJSONString(_ data: [String: Any]) -> String { private func encodeJSONString(_ data: [String: Any]) -> String {
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<dict> <dict>
<key>ios-arm64/App.framework/App</key> <key>ios-arm64/App.framework/App</key>
<data> <data>
xrnmZV/BUMHcpcocrawewIjO55I= 9pPFqA6nF8V/yt9wd6qK20fntPI=
</data> </data>
<key>ios-arm64/App.framework/Info.plist</key> <key>ios-arm64/App.framework/Info.plist</key>
<data> <data>
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</data> </data>
<key>ios-arm64/App.framework/_CodeSignature/CodeResources</key> <key>ios-arm64/App.framework/_CodeSignature/CodeResources</key>
<data> <data>
U0ASWlp/Bmu13jLIWBFjYQJeBow= xFRJRtI15g2lMimCMv27RwidVWg=
</data> </data>
<key>ios-arm64/App.framework/flutter_assets/AssetManifest.bin</key> <key>ios-arm64/App.framework/flutter_assets/AssetManifest.bin</key>
<data> <data>
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</data> </data>
<key>ios-arm64/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf</key> <key>ios-arm64/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf</key>
<data> <data>
w1FodwVKFX/I9gjuDh7jlnrrazU= jZ9/oYKwFYP3upfhUFAD4wHLUmI=
</data> </data>
<key>ios-arm64/App.framework/flutter_assets/lib/core/font/PkScoreProgress.otf</key> <key>ios-arm64/App.framework/flutter_assets/lib/core/font/PkScoreProgress.otf</key>
<data> <data>
...@@ -426,11 +426,11 @@ ...@@ -426,11 +426,11 @@
</data> </data>
<key>ios-arm64/dSYMs/App.framework.dSYM/Contents/Resources/DWARF/App</key> <key>ios-arm64/dSYMs/App.framework.dSYM/Contents/Resources/DWARF/App</key>
<data> <data>
eVMIkYuFnDhU/EotBNDL/B9roKQ= VaMTBPuHAaieZ9Q8kV1gsmOsttc=
</data> </data>
<key>ios-arm64_x86_64-simulator/App.framework/App</key> <key>ios-arm64_x86_64-simulator/App.framework/App</key>
<data> <data>
WDyeqi4p8vvyUryFR+gEeY80cz0= covIIJ9I2p6XBxDlWkZB1wPF5TU=
</data> </data>
<key>ios-arm64_x86_64-simulator/App.framework/Info.plist</key> <key>ios-arm64_x86_64-simulator/App.framework/Info.plist</key>
<data> <data>
...@@ -438,7 +438,7 @@ ...@@ -438,7 +438,7 @@
</data> </data>
<key>ios-arm64_x86_64-simulator/App.framework/_CodeSignature/CodeResources</key> <key>ios-arm64_x86_64-simulator/App.framework/_CodeSignature/CodeResources</key>
<data> <data>
2o/C/Q4VZXAtcrDifpDzIwx4C3o= pQDfi0e3NOa8/SkwCkh4nLauupc=
</data> </data>
<key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/AssetManifest.bin</key> <key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/AssetManifest.bin</key>
<data> <data>
...@@ -458,7 +458,7 @@ ...@@ -458,7 +458,7 @@
</data> </data>
<key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf</key> <key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/fonts/MaterialIcons-Regular.otf</key>
<data> <data>
w1FodwVKFX/I9gjuDh7jlnrrazU= jZ9/oYKwFYP3upfhUFAD4wHLUmI=
</data> </data>
<key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/lib/core/font/PkScoreProgress.otf</key> <key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/lib/core/font/PkScoreProgress.otf</key>
<data> <data>
...@@ -855,7 +855,7 @@ ...@@ -855,7 +855,7 @@
<dict> <dict>
<key>hash2</key> <key>hash2</key>
<data> <data>
l1xZlhjnHtyUY4bQZd6swd/rwQP+qk9k7DM5OivJpc0= YM0/qBo+/yvOcH65UphpMVMMBV9hmTFANG4HHVeVIZU=
</data> </data>
</dict> </dict>
<key>ios-arm64/App.framework/Info.plist</key> <key>ios-arm64/App.framework/Info.plist</key>
...@@ -869,7 +869,7 @@ ...@@ -869,7 +869,7 @@
<dict> <dict>
<key>hash2</key> <key>hash2</key>
<data> <data>
1o5CW9SgwUJ2kIvkjEuEofCYnRrX3tj6WR5Ed9mD77Y= CAAXFPJfAuEmH2YZLYuZuMl/tOcNsjawiw76i1br01Q=
</data> </data>
</dict> </dict>
<key>ios-arm64/App.framework/flutter_assets/AssetManifest.bin</key> <key>ios-arm64/App.framework/flutter_assets/AssetManifest.bin</key>
...@@ -904,7 +904,7 @@ ...@@ -904,7 +904,7 @@
<dict> <dict>
<key>hash2</key> <key>hash2</key>
<data> <data>
3pPfWco5v80jLNtBCy7MNtzNh/U5cfdlF/chh85NWW8= ueLm0lfXnEaNXtaQfboEOO1mlTs0MtDHwPRcksBMNwQ=
</data> </data>
</dict> </dict>
<key>ios-arm64/App.framework/flutter_assets/lib/core/font/PkScoreProgress.otf</key> <key>ios-arm64/App.framework/flutter_assets/lib/core/font/PkScoreProgress.otf</key>
...@@ -1590,14 +1590,14 @@ ...@@ -1590,14 +1590,14 @@
<dict> <dict>
<key>hash2</key> <key>hash2</key>
<data> <data>
tZOGQFK7zILtODaFADObPooQvTVDW+Y/85/ebRExU5c= 8WBrrrOZC72AfZSz7BSrQzv+wbLUb1F+eVAIzabipBY=
</data> </data>
</dict> </dict>
<key>ios-arm64_x86_64-simulator/App.framework/App</key> <key>ios-arm64_x86_64-simulator/App.framework/App</key>
<dict> <dict>
<key>hash2</key> <key>hash2</key>
<data> <data>
0s/canIxxDFkx3dnMnMRaY1B3QgY1natb9cUnuIRi24= +0scMzbwSZRXRGAN+jLuHQJ6JjH773ta2RFHrrWCIeA=
</data> </data>
</dict> </dict>
<key>ios-arm64_x86_64-simulator/App.framework/Info.plist</key> <key>ios-arm64_x86_64-simulator/App.framework/Info.plist</key>
...@@ -1611,7 +1611,7 @@ ...@@ -1611,7 +1611,7 @@
<dict> <dict>
<key>hash2</key> <key>hash2</key>
<data> <data>
9qCg9h2azbQ6TsFcaDOcanLu77aHcE33B2lbuacVbbk= 70fUpGtndAHitqUUAVx6vhwkM07VAuiiB3PtkSt/ebk=
</data> </data>
</dict> </dict>
<key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/AssetManifest.bin</key> <key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/AssetManifest.bin</key>
...@@ -1646,7 +1646,7 @@ ...@@ -1646,7 +1646,7 @@
<dict> <dict>
<key>hash2</key> <key>hash2</key>
<data> <data>
3pPfWco5v80jLNtBCy7MNtzNh/U5cfdlF/chh85NWW8= ueLm0lfXnEaNXtaQfboEOO1mlTs0MtDHwPRcksBMNwQ=
</data> </data>
</dict> </dict>
<key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/lib/core/font/PkScoreProgress.otf</key> <key>ios-arm64_x86_64-simulator/App.framework/flutter_assets/lib/core/font/PkScoreProgress.otf</key>
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
</data> </data>
<key>flutter_assets/fonts/MaterialIcons-Regular.otf</key> <key>flutter_assets/fonts/MaterialIcons-Regular.otf</key>
<data> <data>
w1FodwVKFX/I9gjuDh7jlnrrazU= jZ9/oYKwFYP3upfhUFAD4wHLUmI=
</data> </data>
<key>flutter_assets/lib/core/font/PkScoreProgress.otf</key> <key>flutter_assets/lib/core/font/PkScoreProgress.otf</key>
<data> <data>
...@@ -451,7 +451,7 @@ ...@@ -451,7 +451,7 @@
<dict> <dict>
<key>hash2</key> <key>hash2</key>
<data> <data>
3pPfWco5v80jLNtBCy7MNtzNh/U5cfdlF/chh85NWW8= ueLm0lfXnEaNXtaQfboEOO1mlTs0MtDHwPRcksBMNwQ=
</data> </data>
</dict> </dict>
<key>flutter_assets/lib/core/font/PkScoreProgress.otf</key> <key>flutter_assets/lib/core/font/PkScoreProgress.otf</key>
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
</data> </data>
<key>flutter_assets/fonts/MaterialIcons-Regular.otf</key> <key>flutter_assets/fonts/MaterialIcons-Regular.otf</key>
<data> <data>
w1FodwVKFX/I9gjuDh7jlnrrazU= jZ9/oYKwFYP3upfhUFAD4wHLUmI=
</data> </data>
<key>flutter_assets/lib/core/font/PkScoreProgress.otf</key> <key>flutter_assets/lib/core/font/PkScoreProgress.otf</key>
<data> <data>
...@@ -451,7 +451,7 @@ ...@@ -451,7 +451,7 @@
<dict> <dict>
<key>hash2</key> <key>hash2</key>
<data> <data>
3pPfWco5v80jLNtBCy7MNtzNh/U5cfdlF/chh85NWW8= ueLm0lfXnEaNXtaQfboEOO1mlTs0MtDHwPRcksBMNwQ=
</data> </data>
</dict> </dict>
<key>flutter_assets/lib/core/font/PkScoreProgress.otf</key> <key>flutter_assets/lib/core/font/PkScoreProgress.otf</key>
......
...@@ -7,35 +7,35 @@ ...@@ -7,35 +7,35 @@
<dict> <dict>
<key>BinaryPath</key> <key>BinaryPath</key>
<string>video_player_avfoundation.framework/video_player_avfoundation</string> <string>video_player_avfoundation.framework/video_player_avfoundation</string>
<key>DebugSymbolsPath</key>
<string>dSYMs</string>
<key>LibraryIdentifier</key> <key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string> <string>ios-arm64</string>
<key>LibraryPath</key> <key>LibraryPath</key>
<string>video_player_avfoundation.framework</string> <string>video_player_avfoundation.framework</string>
<key>SupportedArchitectures</key> <key>SupportedArchitectures</key>
<array> <array>
<string>arm64</string> <string>arm64</string>
<string>x86_64</string>
</array> </array>
<key>SupportedPlatform</key> <key>SupportedPlatform</key>
<string>ios</string> <string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict> </dict>
<dict> <dict>
<key>BinaryPath</key> <key>BinaryPath</key>
<string>video_player_avfoundation.framework/video_player_avfoundation</string> <string>video_player_avfoundation.framework/video_player_avfoundation</string>
<key>DebugSymbolsPath</key>
<string>dSYMs</string>
<key>LibraryIdentifier</key> <key>LibraryIdentifier</key>
<string>ios-arm64</string> <string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key> <key>LibraryPath</key>
<string>video_player_avfoundation.framework</string> <string>video_player_avfoundation.framework</string>
<key>SupportedArchitectures</key> <key>SupportedArchitectures</key>
<array> <array>
<string>arm64</string> <string>arm64</string>
<string>x86_64</string>
</array> </array>
<key>SupportedPlatform</key> <key>SupportedPlatform</key>
<string>ios</string> <string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict> </dict>
</array> </array>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
......
...@@ -89,6 +89,14 @@ public func isEmptyDict(_ dict: [AnyHashable: Any]?) -> Bool { ...@@ -89,6 +89,14 @@ public func isEmptyDict(_ dict: [AnyHashable: Any]?) -> Bool {
let numericTest = NSPredicate(format: "SELF MATCHES %@", numericRegex) let numericTest = NSPredicate(format: "SELF MATCHES %@", numericRegex)
return numericTest.evaluate(with: str) return numericTest.evaluate(with: str)
} }
/// 为 url 字符串追加查询参数。
///
/// 已有同名参数会继续保留,按传入顺序追加到末尾。
@objc public func fus_appendURLQueryParameters(with parameters: [String: String]) -> NSString {
let result = (self as String).fus_appendURLQueryParameters(parameters: parameters)
return result as NSString
}
} }
public extension String { public extension String {
......
...@@ -528,7 +528,7 @@ ...@@ -528,7 +528,7 @@
[FUSHttpHelper postRequestBinaryWithUrl:FUSUserCenterURLs.fus_URL_ZONE_HOME_OTHER_V1 params:params success:^(NSDictionary *dataDict, int code) { [FUSHttpHelper postRequestBinaryWithUrl:FUSUserCenterURLs.fus_URL_ZONE_HOME_OTHER_V1 params:params success:^(NSDictionary *dataDict, int code) {
NSDictionary *zoneData = [dataDict objectForKey:@"zoneData"]; NSDictionary *zoneData = [dataDict objectForKey:@"zoneData"];
NSDictionary *zoneInfo = [dataDict objectForKey:@"zoneInfo"]; NSDictionary *zoneInfo = [dataDict objectForKey:@"zoneInfo"];
NSDictionary *extraData = [dataDict objectForKey:@"extraData"]; NSDictionary *extraData = [dataDict objectForKey:@"zoneExtra"];
FUSZoneInfosModel *zoneModel = [FUSZoneInfosModel fus_modelWithDict:zoneInfo]; FUSZoneInfosModel *zoneModel = [FUSZoneInfosModel fus_modelWithDict:zoneInfo];
[zoneModel fus_setValueWithDict:zoneData]; [zoneModel fus_setValueWithDict:zoneData];
[zoneModel fus_setValueWithDict:extraData]; [zoneModel fus_setValueWithDict:extraData];
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#import "FUSMyZoneSubscribeCollectionView.h" #import "FUSMyZoneSubscribeCollectionView.h"
#import "FUSDialogView.h" #import "FUSDialogView.h"
#import <FUSCommon/FUSCommon-Swift.h> #import <FUSCommon/FUSCommon-Swift.h>
#import <FUSFoundation/FUSFoundation-Swift.h>
typedef enum { typedef enum {
FUSMyZoneNewsFeedTabTypeShare = 0, FUSMyZoneNewsFeedTabTypeShare = 0,
...@@ -182,8 +183,16 @@ typedef enum { ...@@ -182,8 +183,16 @@ typedef enum {
return; return;
} }
[[FUSFlutterBridge shared] openFlutterDispatchIfSupportedWithWebUrl:self.zoneModel.colSubUrl showHeadInUserData:YES fallback:^{ NSString *roomId = [self.zoneModel.uid description];
NSDictionary *extraUserData = @{@"roomId": roomId ?: @""};
NSString *originURLString = [self.zoneModel.colSubUrl description] ?: @"";
NSString *subscribeURLString = [originURLString fus_appendURLQueryParametersWith:extraUserData];
[[FUSFlutterBridge shared] openFlutterDispatchIfSupportedWithWebUrl:subscribeURLString showHeadInUserData:YES extraUserData:@{@"roomId": self.zoneModel.uid} fallback:^{
FUSWKWebViewController *webVC = [[FUSWKWebViewController alloc] init];
webVC.shouldIncludeIdentifyInfo = YES;
webVC.webUrlString = subscribeURLString;
[[UIViewController fus_topViewController].navigationController pushViewController:webVC animated:YES];
}]; }];
} }
} }
......
...@@ -135,8 +135,16 @@ ...@@ -135,8 +135,16 @@
- (void)subscribeButtonDidClicked { - (void)subscribeButtonDidClicked {
BOOL isMyZone = [[self.zoneModel.uid description] isEqualToString:[FUSCacheDataShare shareStore].userDetailInfo.uid]; BOOL isMyZone = [[self.zoneModel.uid description] isEqualToString:[FUSCacheDataShare shareStore].userDetailInfo.uid];
if (isMyZone) { if (isMyZone) {
[[FUSFlutterBridge shared] openFlutterDispatchIfSupportedWithWebUrl:self.zoneModel.colSubUrl showHeadInUserData:YES fallback:^{ NSString *roomId = [self.zoneModel.uid description];
NSDictionary *extraUserData = @{@"roomId": roomId ?: @""};
NSString *originURLString = [self.zoneModel.colSubUrl description] ?: @"";
NSString *subscribeURLString = [originURLString fus_appendURLQueryParametersWith:extraUserData];
[[FUSFlutterBridge shared] openFlutterDispatchIfSupportedWithWebUrl:subscribeURLString showHeadInUserData:YES extraUserData:extraUserData fallback:^{
FUSWKWebViewController *webVC = [[FUSWKWebViewController alloc] init];
webVC.shouldIncludeIdentifyInfo = YES;
webVC.webUrlString = subscribeURLString;
[[UIViewController fus_topViewController].navigationController pushViewController:webVC animated:YES];
}]; }];
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment