Merge branch 'fix/customMenu'

master
wanghualei 2023-06-15 18:27:49 +08:00
commit f4420176f1
18 changed files with 157 additions and 28 deletions

View File

@ -186,12 +186,17 @@ public class AppletHandlerModule extends BaseApi {
if (image == null) { if (image == null) {
image = ""; image = "";
} }
String darkImage = (String) map.get("darkImage");
if (darkImage == null) {
darkImage = "";
}
moreMenuItems.add( moreMenuItems.add(
new MoreMenuItem( new MoreMenuItem(
menuId, menuId,
title, title,
image, image,
-1, -1,
darkImage,
moreMenuType, moreMenuType,
true true
) )

View File

@ -1,6 +1,9 @@
# Uncomment this line to define a global platform for your project # Uncomment this line to define a global platform for your project
platform :ios, '9.0' platform :ios, '9.0'
source 'ssh://gitlab.finogeeks.club/finclip-ios/DevPods'
source 'ssh://gitlab.finogeeks.club/finclip-ios/FinPods'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency. # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true' ENV['COCOAPODS_DISABLE_STATS'] = 'true'

View File

@ -1,11 +1,11 @@
PODS: PODS:
- FinApplet (2.40.9) - FinApplet (2.40.12-dev20230614v02)
- FinAppletExt (2.40.9): - FinAppletExt (2.40.12-dev20230614v02):
- FinApplet (= 2.40.9) - FinApplet (= 2.40.12-dev20230614v02)
- Flutter (1.0.0) - Flutter (1.0.0)
- mop (0.1.1): - mop (0.1.1):
- FinApplet (= 2.40.9) - FinApplet (= 2.40.12-dev20230614v02)
- FinAppletExt (= 2.40.9) - FinAppletExt (= 2.40.12-dev20230614v02)
- Flutter - Flutter
DEPENDENCIES: DEPENDENCIES:
@ -13,7 +13,7 @@ DEPENDENCIES:
- mop (from `.symlinks/plugins/mop/ios`) - mop (from `.symlinks/plugins/mop/ios`)
SPEC REPOS: SPEC REPOS:
trunk: ssh://gitlab.finogeeks.club/finclip-ios/DevPods:
- FinApplet - FinApplet
- FinAppletExt - FinAppletExt
@ -24,11 +24,11 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/mop/ios" :path: ".symlinks/plugins/mop/ios"
SPEC CHECKSUMS: SPEC CHECKSUMS:
FinApplet: 9dd3810fb41400c882c8c5d5f528452b0f1f0a63 FinApplet: de28575dab4c28c200c02844f4909b04d376def2
FinAppletExt: e9f418e3d11f5cf4ee42b2d64ab405fe747f51fe FinAppletExt: eea5d939667836c744b5eb4afcc81285e248c9f3
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
mop: 8684b0dad361ce1d9b2d4a98d65a1acb52ce4120 mop: d8bad2214a82a3440c154e496d0d49c1144490a4
PODFILE CHECKSUM: 2317ba7584871ae8cd67fd0244fbd5e96fd06167 PODFILE CHECKSUM: 2da0220ee5ba22a2dfcec42dfe5b17d05f3c3da9
COCOAPODS: 1.11.3 COCOAPODS: 1.11.3

View File

@ -496,6 +496,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 9QCKYFU5M4;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = finclip_example; INFOPLIST_KEY_CFBundleDisplayName = finclip_example;

View File

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "minipro_list_collect@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "minipro_list_collect@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "minipro_list_service@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "minipro_list_service@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -45,6 +45,7 @@ class _MyAppState extends State<MyApp> {
Config config = Config(storeConfigs); Config config = Config(storeConfigs);
config.language = LanguageType.English; config.language = LanguageType.English;
config.baseLoadingViewClass = "LoadingView"; config.baseLoadingViewClass = "LoadingView";
config.appletDebugMode = BOOLState.BOOLStateTrue;
UIConfig uiconfig = UIConfig(); UIConfig uiconfig = UIConfig();
uiconfig.isAlwaysShowBackInDefaultNavigationBar = false; uiconfig.isAlwaysShowBackInDefaultNavigationBar = false;
@ -59,6 +60,7 @@ class _MyAppState extends State<MyApp> {
uiconfig.capsuleConfig = capsuleConfig; uiconfig.capsuleConfig = capsuleConfig;
uiconfig.appletText = "applet"; uiconfig.appletText = "applet";
uiconfig.loadingLayoutCls = "com.finogeeks.mop_example.CustomLoadingPage"; uiconfig.loadingLayoutCls = "com.finogeeks.mop_example.CustomLoadingPage";
uiconfig.autoAdaptDarkMode = true;
// if (Platform.isIOS) { // if (Platform.isIOS) {
// final res = await Mop.instance.initialize( // final res = await Mop.instance.initialize(
@ -129,16 +131,14 @@ class _MyAppState extends State<MyApp> {
// physics: NeverScrollableScrollPhysics(), // physics: NeverScrollableScrollPhysics(),
children: [ children: [
_buildAppletItem(appletId, "打开小程序", () { _buildAppletItem(appletId, "打开小程序", () {
// Mop.instance.openApplet(appletId, TranstionStyle style = TranstionStyle.TranstionStyleUp;
// path: 'pages/index/index', query: ''); if (appletId == "5f72e3559a6a7900019b5baa") {
// TranstionStyle style = TranstionStyle.TranstionStyleUp; style = TranstionStyle.TranstionStylePush;
// if (appletId == "5f72e3559a6a7900019b5baa") { }
// style = TranstionStyle.TranstionStylePush; RemoteAppletRequest request = RemoteAppletRequest(apiServer: 'https://api.finclip.com', appletId: appletId, transitionStyle: style);
// } Mop.instance.startApplet(request);
// RemoteAppletRequest request = RemoteAppletRequest(apiServer: 'https://api.finclip.com', appletId: appletId, transitionStyle: style);
// Mop.instance.startApplet(request);
Mop.instance.qrcodeOpenApplet('https://api.finclip.com/api/v1/mop/runtime/applet/-f-MGYzN2Q1YTYzMmI2MWIyZg--'); // Mop.instance.qrcodeOpenApplet('https://api.finclip.com/api/v1/mop/runtime/applet/-f-MGYzN2Q1YTYzMmI2MWIyZg--');
}), }),
_buildAppletItem(appletId, "finishRunningApplet", () { _buildAppletItem(appletId, "finishRunningApplet", () {
@ -170,7 +170,7 @@ class _MyAppState extends State<MyApp> {
children: <Widget>[ children: <Widget>[
_buildAppletWidget("5facb3a52dcbff00017469bd", "画图小程序"), _buildAppletWidget("5facb3a52dcbff00017469bd", "画图小程序"),
_buildAppletWidget("5f72e3559a6a7900019b5baa", "官方小程序"), _buildAppletWidget("5f72e3559a6a7900019b5baa", "官方小程序"),
_buildAppletWidget("5fa215459a6a7900019b5cc3", "我的对账单"), _buildAppletWidget("5f17f457297b540001e06ebb", "测试小程序"),
], ],
), ),
), ),
@ -198,9 +198,18 @@ class MyAppletHandler extends AppletHandler {
@override @override
Future<List<CustomMenu>> getCustomMenus(String appId) { Future<List<CustomMenu>> getCustomMenus(String appId) {
CustomMenu menu1 = CustomMenu('WXTest', 'https://img1.baidu.com/it/u=2878938773,1765835171&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500', '百度图标', 'common');
menu1.darkImage = 'https://img95.699pic.com/xsj/14/46/mh.jpg%21/fw/700/watermark/url/L3hzai93YXRlcl9kZXRhaWwyLnBuZw/align/southeast';
CustomMenu menu2 = CustomMenu('CustomMenu2', 'minipro_list_collect', '工程图标', 'common');
menu2.darkImage = 'minipro_list_service';
List<CustomMenu> customMenus = [ List<CustomMenu> customMenus = [
CustomMenu('WXShareAPPFriends', 'https://img1.baidu.com/it/u=2878938773,1765835171&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500', '微信好朋友', 'common'), menu1,
CustomMenu('WXShareAPPMoments', 'https://img2.baidu.com/it/u=3113705544,436318069&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500', '微信朋友圈', 'common'), menu2,
CustomMenu('MyFriends', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSpvugSNLs9R7iopz_noeotAelvgzYj-74iCg&usqp=CAU', '谷歌图标', 'common'),
// CustomMenu('WXShareAPPFriends', 'https://img1.baidu.com/it/u=2878938773,1765835171&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500', '微信好朋友', 'common'),
// CustomMenu('WXShareAPPMoments', 'https://img2.baidu.com/it/u=3113705544,436318069&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500', '微信朋友圈', 'common'),
// CustomMenu('WXShareAPPFriends', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSpvugSNLs9R7iopz_noeotAelvgzYj-74iCg&usqp=CAU', '微信好朋友', 'common'), // CustomMenu('WXShareAPPFriends', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSpvugSNLs9R7iopz_noeotAelvgzYj-74iCg&usqp=CAU', '微信好朋友', 'common'),
// CustomMenu('WXShareAPPMoments', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR7cO4KB4e5-Ugdcq4pIyWunliH7LZRZzguKQ&usqp=CAU', '微信朋友圈', 'common'), // CustomMenu('WXShareAPPMoments', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR7cO4KB4e5-Ugdcq4pIyWunliH7LZRZzguKQ&usqp=CAU', '微信朋友圈', 'common'),

View File

@ -91,10 +91,16 @@
NSString *imageUrl = data[@"image"]; NSString *imageUrl = data[@"image"];
if ([imageUrl hasPrefix:@"http"]) { if ([imageUrl hasPrefix:@"http"]) {
// //
model.menuIconImage = [UIImage fat_getImageWithUrl:imageUrl]; model.menuIconUrl = imageUrl;
} else { } else {
model.menuIconImage = [UIImage imageNamed:imageUrl]; model.menuIconImage = [UIImage imageNamed:imageUrl];
} }
NSString *darkImageUrl = data[@"darkImage"];
if ([darkImageUrl hasPrefix:@"http"]) {
model.menuDarkIconUrl = darkImageUrl;
} else {
model.menuIconDarkImage = [UIImage imageNamed:darkImageUrl];
}
NSString *typeString = data[@"type"]; NSString *typeString = data[@"type"];
if (typeString) { if (typeString) {
FATAppletMenuStyle style = [typeString isEqualToString:@"onMiniProgram"] ? FATAppletMenuStyleOnMiniProgram : FATAppletMenuStyleCommon; FATAppletMenuStyle style = [typeString isEqualToString:@"onMiniProgram"] ? FATAppletMenuStyleOnMiniProgram : FATAppletMenuStyleCommon;

View File

@ -12,6 +12,56 @@ NS_ASSUME_NONNULL_BEGIN
@interface MopCustomMenuModel : NSObject <FATAppletMenuProtocol> @interface MopCustomMenuModel : NSObject <FATAppletMenuProtocol>
/**
id
*/
@property (nonatomic, copy) NSString *menuId;
/**
icon
390*90
logo 5:8
icon > APPicon
*/
@property (nonatomic, strong) UIImage *menuIconImage;
/**
icon
390*90
logo 5:8
icon path > Appicon
*/
@property (nonatomic, copy) NSString *menuIconUrl;
/**
icon
390*90
logo 5:8
icon > APPicon
*/
@property (nonatomic, strong) UIImage *menuIconDarkImage;
/**
icon
390*90
logo 5:8
darkIcon path > Appicon
*/
@property (nonatomic, copy) NSString *menuDarkIconUrl;
/**
> APP
*/
@property (nonatomic, copy) NSString *menuTitle;
/**
FATAppletMenuStyleCommon
FATAppletMenuStyleOnMiniProgram
*/
@property (nonatomic, assign) FATAppletMenuStyle menuType;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

View File

@ -9,15 +9,16 @@
@implementation MopCustomMenuModel @implementation MopCustomMenuModel
@synthesize menuId, menuIconImage, menuTitle, menuType;
- (id)copyWithZone:(NSZone *)zone - (id)copyWithZone:(NSZone *)zone
{ {
MopCustomMenuModel *model = [[MopCustomMenuModel allocWithZone:zone] init]; MopCustomMenuModel *model = [[MopCustomMenuModel allocWithZone:zone] init];
model.menuId = self.menuId; model.menuId = self.menuId;
model.menuIconImage = self.menuIconImage; model.menuIconImage = self.menuIconImage;
model.menuIconDarkImage = self.menuIconDarkImage;
model.menuTitle = self.menuTitle; model.menuTitle = self.menuTitle;
model.menuType = self.menuType; model.menuType = self.menuType;
model.menuIconUrl = self.menuIconUrl;
model.menuDarkIconUrl = self.menuDarkIconUrl;
return model; return model;
} }

View File

@ -17,7 +17,7 @@ A finclip miniprogram flutter sdk.
s.dependency 'Flutter' s.dependency 'Flutter'
s.ios.deployment_target = '9.0' s.ios.deployment_target = '9.0'
s.dependency 'FinApplet' , '2.41.0-alpha20230602v12' s.dependency 'FinApplet' , '2.40.12-dev20230614v02'
s.dependency 'FinAppletExt' , '2.41.0-alpha20230602v12' s.dependency 'FinAppletExt' , '2.40.12-dev20230614v02'
end end

View File

@ -1,13 +1,14 @@
class CustomMenu { class CustomMenu {
String menuId; String menuId;
String image; String image;
String? darkImage;
String title; String title;
String type; String type;
CustomMenu(this.menuId, this.image, this.title, this.type); CustomMenu(this.menuId, this.image, this.title, this.type);
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() =>
{'menuId': menuId, 'image': image, 'title': title, 'type': type}; {'menuId': menuId, 'image': image, 'darkImage': darkImage, 'title': title, 'type': type};
} }
abstract class AppletHandler { abstract class AppletHandler {

View File

@ -1159,6 +1159,9 @@ class Mop {
map["image"] = element.image; map["image"] = element.image;
map["title"] = element.title; map["title"] = element.title;
map["type"] = element.type; map["type"] = element.type;
if (element.darkImage != null) {
map["darkImage"] = element.darkImage;
}
list.add(map); list.add(map);
}); });
debugPrint("registerAppletHandler getCustomMenus list $list"); debugPrint("registerAppletHandler getCustomMenus list $list");