Merge branch 'master' into major_dev

# Conflicts:
#	android/build.gradle
master
yangbinqiao 2023-06-16 14:41:38 +08:00
commit 11083a6c5a
24 changed files with 201 additions and 37 deletions

View File

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

View File

@ -2,6 +2,7 @@ package com.finogeeks.mop.api.mop;
import android.app.Application;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.finogeeks.lib.applet.client.FinAppClient;
@ -102,8 +103,14 @@ public class BaseModule extends BaseApi {
if (fingerprint == null) fingerprint = "";
String encryptType = (String) config.get("cryptType");
Boolean encryptServerData1 = (Boolean) config.get("encryptServerData");
Boolean enablePreloadFramework = (Boolean) config.get("enablePreloadFramework");
//https://api.finclip.com
if(!TextUtils.isEmpty(apiServer) && apiServer.equals("https://api.finclip.com")) {
enablePreloadFramework = true;
}
if (encryptServerData1 == null) encryptServerData1 = false;
finStoreConfigs.add(new FinStoreConfig(sdkKey, sdkSecret, apiUrl, apmUrl, "", fingerprint, encryptType, encryptServerData1));
finStoreConfigs.add(new FinStoreConfig(sdkKey, sdkSecret, apiUrl, apmUrl, "", fingerprint, encryptType, encryptServerData1, enablePreloadFramework));
}
}
}

View File

@ -2,6 +2,7 @@ package com.finogeeks.mop.api.mop;
import android.app.Application;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.finogeeks.lib.applet.client.FinAppClient;
@ -63,8 +64,15 @@ public class InitSDKModule extends BaseApi {
}
String cryptType = (String) store.get("cryptType");
Boolean encryptServerData = (Boolean) store.get("encryptServerData");
Boolean enablePreloadFramework = (Boolean) store.get("enablePreloadFramework");
//https://api.finclip.com
if (!TextUtils.isEmpty(apiServer) && apiServer.equals("https://api.finclip.com")) {
enablePreloadFramework = true;
}
storeConfigs.add(new FinStoreConfig(sdkKey, sdkSecret, apiServer, apmServer, "",
fingerprint, cryptType, encryptServerData));
fingerprint, cryptType, encryptServerData, enablePreloadFramework));
}
configBuilder.setFinStoreConfigs(storeConfigs);
String userId = (String) configMap.get("userId");

View File

@ -1,6 +1,9 @@
# Uncomment this line to define a global platform for your project
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.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

View File

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

View File

@ -496,6 +496,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = 9QCKYFU5M4;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
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.language = LanguageType.English;
config.baseLoadingViewClass = "LoadingView";
config.appletDebugMode = BOOLState.BOOLStateTrue;
UIConfig uiconfig = UIConfig();
uiconfig.isAlwaysShowBackInDefaultNavigationBar = false;
@ -59,6 +60,7 @@ class _MyAppState extends State<MyApp> {
uiconfig.capsuleConfig = capsuleConfig;
uiconfig.appletText = "applet";
uiconfig.loadingLayoutCls = "com.finogeeks.mop_example.CustomLoadingPage";
uiconfig.autoAdaptDarkMode = true;
// if (Platform.isIOS) {
// final res = await Mop.instance.initialize(
@ -129,14 +131,15 @@ class _MyAppState extends State<MyApp> {
// physics: NeverScrollableScrollPhysics(),
children: [
_buildAppletItem(appletId, "打开小程序", () {
// Mop.instance.openApplet(appletId,
// path: 'pages/index/index', query: '');
TranstionStyle style = TranstionStyle.TranstionStyleUp;
if (appletId == "5f72e3559a6a7900019b5baa") {
style = TranstionStyle.TranstionStylePush;
}
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--');
}),
_buildAppletItem(appletId, "finishRunningApplet", () {
Mop.instance.finishRunningApplet(appletId, true);
@ -167,7 +170,7 @@ class _MyAppState extends State<MyApp> {
children: <Widget>[
_buildAppletWidget("5facb3a52dcbff00017469bd", "画图小程序"),
_buildAppletWidget("5f72e3559a6a7900019b5baa", "官方小程序"),
_buildAppletWidget("5fa215459a6a7900019b5cc3", "我的对账单"),
_buildAppletWidget("5f17f457297b540001e06ebb", "测试小程序"),
],
),
),
@ -184,8 +187,8 @@ class MyAppletHandler extends AppletHandler {
@override
bool customCapsuleMoreButtonClick(String appId) {
print("customCapsuleMoreButtonClick---");
toAppMessageChannel.invokeMethod("showCustomMoreView", {"appId": appId});
return true;
// toAppMessageChannel.invokeMethod("showCustomMoreView", {"appId": appId});
return false;
}
@override
@ -195,14 +198,32 @@ class MyAppletHandler extends AppletHandler {
@override
Future<List<CustomMenu>> getCustomMenus(String appId) {
List<CustomMenu> customMenus = [];
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 = [
menu1,
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('WXShareAPPMoments', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR7cO4KB4e5-Ugdcq4pIyWunliH7LZRZzguKQ&usqp=CAU', '微信朋友圈', 'common'),
];
return Future.value(customMenus);
}
@override
Future<void> getMobileNumber(Function(dynamic params) param0) {
Future<void> getMobileNumber(Function(dynamic params) callback) {
// TODO: implement getMobileNumber
throw UnimplementedError();
Map<String, dynamic> result = {"phone": '18607180143',"other":'abc123'};
print('getMobileNumber:' + result.toString());
callback(result);
return Future.value(null);
}
@override

View File

@ -115,7 +115,7 @@ packages:
path: ".."
relative: true
source: path
version: "2.40.9"
version: "2.40.11"
path:
dependency: transitive
description:

View File

@ -91,10 +91,16 @@
NSString *imageUrl = data[@"image"];
if ([imageUrl hasPrefix:@"http"]) {
//
model.menuIconImage = [UIImage fat_getImageWithUrl:imageUrl];
model.menuIconUrl = imageUrl;
} else {
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"];
if (typeString) {
FATAppletMenuStyle style = [typeString isEqualToString:@"onMiniProgram"] ? FATAppletMenuStyleOnMiniProgram : FATAppletMenuStyleCommon;
@ -180,8 +186,9 @@ static NSString *scheme = @"fatae55433be2f62915";//App对应的scheme
NSDictionary *params = @{@"name":@"getPhoneNumber"};
FlutterMethodChannel *channel = [[MopPlugin instance] methodChannel];
[channel invokeMethod:@"extensionApi:getPhoneNumber" arguments:params result:^(id _Nullable result) {
self.bindGetPhoneNumbers = bindGetPhoneNumber;
NSLog(@"getPhoneNumberWithAppletInfo");
[channel invokeMethod:@"extensionApi:getPhoneNumber" arguments:params result:^(id _Nullable result) {
// !self.bindGetPhoneNumbers?: bindGetPhoneNumber(result);
}];

View File

@ -33,6 +33,7 @@
storeConfig.cryptType = FATApiCryptTypeMD5;
}
storeConfig.encryptServerData = [dict[@"encryptServerData"] boolValue];
storeConfig.enablePreloadFramework = [storeConfig.apiServer isEqualToString:@"https://api.finclip.com"];
[storeArrayM addObject:storeConfig];
}
config = [FATConfig configWithStoreConfigs:storeArrayM];

View File

@ -12,6 +12,56 @@ NS_ASSUME_NONNULL_BEGIN
@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
NS_ASSUME_NONNULL_END

View File

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

View File

@ -127,12 +127,13 @@ static MopPlugin *_instance;
}
else if ([@"getPhoneNumberResult" isEqualToString:call.method]) {
if ([MOPAppletDelegate instance].bindGetPhoneNumbers) {
NSDictionary *dic = [[NSDictionary alloc] initWithDictionary:call.arguments];
NSString *jsonString = [dic[@"phone"] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
[MOPAppletDelegate instance].bindGetPhoneNumbers(jsonDic);
[MOPAppletDelegate instance].bindGetPhoneNumbers(call.arguments);
// NSDictionary *dic = [[NSDictionary alloc] initWithDictionary:call.arguments];
// NSString *jsonString = [dic[@"phone"] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
// NSError *error;
// NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
// [MOPAppletDelegate instance].bindGetPhoneNumbers(jsonDic);
}
}
else {

View File

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

View File

@ -1,13 +1,14 @@
class CustomMenu {
String menuId;
String image;
String? darkImage;
String title;
String type;
CustomMenu(this.menuId, this.image, this.title, this.type);
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 {

View File

@ -34,11 +34,15 @@ class FinStoreConfig {
/// 使YES
bool encryptServerData;
///
bool enablePreloadFramework;
FinStoreConfig(this.sdkKey, this.sdkSecret, this.apiServer,
{this.apmServer,
this.cryptType = "MD5",
this.fingerprint,
this.encryptServerData = false});
this.encryptServerData = false,
this.enablePreloadFramework = false});
Map<String, dynamic> toMap() {
return {
@ -48,7 +52,8 @@ class FinStoreConfig {
"apmServer": apmServer,
"cryptType": cryptType,
"fingerprint": fingerprint,
"encryptServerData": encryptServerData
"encryptServerData": encryptServerData,
"enablePreloadFramework": enablePreloadFramework
};
}
}
@ -1165,6 +1170,9 @@ class Mop {
map["image"] = element.image;
map["title"] = element.title;
map["type"] = element.type;
if (element.darkImage != null) {
map["darkImage"] = element.darkImage;
}
list.add(map);
});
debugPrint("registerAppletHandler getCustomMenus list $list");

View File

@ -1,6 +1,6 @@
name: mop
description: A Finogeeks MiniProgram Flutter SDK.
version: '2.40.10'
version: '2.40.11'
homepage: https://github.com/finogeeks/mop-flutter-sdk
environment: