commit
861bab0492
|
@ -91,6 +91,6 @@ kapt {
|
|||
}
|
||||
dependencies {
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation 'com.finogeeks.lib:finapplet:2.41.0-alpha20230408v01'
|
||||
implementation 'com.finogeeks.mop:plugins:2.41.0-alpha20230408v01'
|
||||
implementation 'com.finogeeks.lib:finapplet:2.40.4-dev20230417v01'
|
||||
implementation 'com.finogeeks.mop:plugins:2.40.4-dev20230417v01'
|
||||
}
|
|
@ -12,7 +12,7 @@ import androidx.annotation.NonNull;
|
|||
|
||||
import com.finogeeks.lib.applet.client.FinAppProcessClient;
|
||||
import com.finogeeks.lib.applet.client.FinAppClient;
|
||||
import com.finogeeks.lib.applet.client.FinAppTrace;
|
||||
import com.finogeeks.lib.applet.modules.log.FLog;
|
||||
import com.finogeeks.lib.applet.interfaces.FinCallback;
|
||||
import com.finogeeks.lib.applet.page.view.moremenu.MoreMenuItem;
|
||||
import com.finogeeks.lib.applet.page.view.moremenu.MoreMenuType;
|
||||
|
@ -58,7 +58,7 @@ public class AppletHandlerModule extends BaseApi {
|
|||
public void invoke(String event, Map param, ICallback callback) {
|
||||
|
||||
if ("getPhoneNumberResult".equals(event)) {
|
||||
FinAppTrace.d("AppletHandlerModule", "getPhoneNumberResult");
|
||||
FLog.d("AppletHandlerModule", "getPhoneNumberResult");
|
||||
getPhoneNumberResult(event, param, callback);
|
||||
return;
|
||||
}
|
||||
|
@ -203,13 +203,13 @@ public class AppletHandlerModule extends BaseApi {
|
|||
|
||||
@Override
|
||||
public void error(String errorCode, String errorMessage, Object errorDetails) {
|
||||
FinAppTrace.e(TAG, "getCustomMenus errorCode : " + errorCode + " errorMessage : " + errorMessage);
|
||||
FLog.e(TAG, "getCustomMenus errorCode : " + errorCode + " errorMessage : " + errorMessage);
|
||||
latch.countDown();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notImplemented() {
|
||||
FinAppTrace.d(TAG, "getCustomMenus notImplemented");
|
||||
FLog.d(TAG, "getCustomMenus notImplemented");
|
||||
latch.countDown();
|
||||
}
|
||||
});
|
||||
|
@ -219,7 +219,7 @@ public class AppletHandlerModule extends BaseApi {
|
|||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
FinAppTrace.d(TAG, "getRegisteredMoreMenuItems moreMenuItems : " + moreMenuItems + " size : " + moreMenuItems.size());
|
||||
FLog.d(TAG, "getRegisteredMoreMenuItems moreMenuItems : " + moreMenuItems + " size : " + moreMenuItems.size());
|
||||
return moreMenuItems;
|
||||
}
|
||||
|
||||
|
@ -234,19 +234,19 @@ public class AppletHandlerModule extends BaseApi {
|
|||
channel.invokeMethod("extensionApi:onCustomMenuClick", params, new MethodChannel.Result() {
|
||||
@Override
|
||||
public void success(Object result) {
|
||||
FinAppTrace.d(TAG, "onCustomMenuClick success");
|
||||
FLog.d(TAG, "onCustomMenuClick success");
|
||||
iAppletCallback.onSuccess(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(String errorCode, String errorMessage, Object errorDetails) {
|
||||
FinAppTrace.e(TAG, "onCustomMenuClick errorCode : " + errorCode + " errorMessage : " + errorMessage);
|
||||
FLog.e(TAG, "onCustomMenuClick errorCode : " + errorCode + " errorMessage : " + errorMessage);
|
||||
iAppletCallback.onFailure();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notImplemented() {
|
||||
FinAppTrace.d(TAG, "onCustomMenuClick notImplemented");
|
||||
FLog.d(TAG, "onCustomMenuClick notImplemented");
|
||||
iAppletCallback.onFailure();
|
||||
}
|
||||
});
|
||||
|
@ -303,20 +303,20 @@ public class AppletHandlerModule extends BaseApi {
|
|||
channel.invokeMethod("extensionApi:getPhoneNumber", params, new MethodChannel.Result() {
|
||||
@Override
|
||||
public void success(Object result) {
|
||||
FinAppTrace.d(TAG, "onCustomMenuClick success");
|
||||
FLog.d(TAG, "onCustomMenuClick success");
|
||||
// callback.onSuccess(null);
|
||||
phoneNumberCallback = callback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(String errorCode, String errorMessage, Object errorDetails) {
|
||||
FinAppTrace.e(TAG, "onCustomMenuClick errorCode : " + errorCode + " errorMessage : " + errorMessage);
|
||||
FLog.e(TAG, "onCustomMenuClick errorCode : " + errorCode + " errorMessage : " + errorMessage);
|
||||
callback.onFailure();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notImplemented() {
|
||||
FinAppTrace.d(TAG, "onCustomMenuClick notImplemented");
|
||||
FLog.d(TAG, "onCustomMenuClick notImplemented");
|
||||
callback.onFailure();
|
||||
}
|
||||
});
|
||||
|
@ -368,7 +368,7 @@ public class AppletHandlerModule extends BaseApi {
|
|||
}
|
||||
|
||||
private void getPhoneNumberResult(String event, Map param, ICallback callback) {
|
||||
FinAppTrace.d("AppletHandlerModule", "getPhoneNumberResult,param:" + param.toString());
|
||||
FLog.d("AppletHandlerModule", "getPhoneNumberResult,param:" + param.toString());
|
||||
callback.onSuccess(null);
|
||||
if (phoneNumberCallback != null) {
|
||||
try {
|
||||
|
|
|
@ -6,7 +6,7 @@ import android.os.Looper;
|
|||
import android.util.Log;
|
||||
|
||||
import com.finogeeks.lib.applet.client.FinAppClient;
|
||||
import com.finogeeks.lib.applet.client.FinAppTrace;
|
||||
import com.finogeeks.lib.applet.modules.log.FLog;
|
||||
import com.finogeeks.mop.api.BaseApi;
|
||||
import com.finogeeks.mop.interfaces.ICallback;
|
||||
import com.finogeeks.mop.service.MopPluginService;
|
||||
|
@ -57,7 +57,7 @@ public class ExtensionApiModule extends BaseApi {
|
|||
@Override
|
||||
public void success(Object result) {
|
||||
String json = GsonUtil.gson.toJson(result);
|
||||
FinAppTrace.d(ExtensionApiModule.TAG, "channel invokeMethod:" + name
|
||||
FLog.d(ExtensionApiModule.TAG, "channel invokeMethod:" + name
|
||||
+ " success, result=" + result + ", json=" + json);
|
||||
JSONObject ret = null;
|
||||
if (json != null && !json.equals("null")) {
|
||||
|
@ -80,7 +80,7 @@ public class ExtensionApiModule extends BaseApi {
|
|||
|
||||
@Override
|
||||
public void error(String errorCode, String errorMessage, Object errorDetails) {
|
||||
FinAppTrace.e(ExtensionApiModule.TAG, "channel invokeMethod:" + name
|
||||
FLog.e(ExtensionApiModule.TAG, "channel invokeMethod:" + name
|
||||
+ " error, errorCode=" + errorCode
|
||||
+ ", errorMessage=" + errorMessage
|
||||
+ ", errorDetails=" + errorDetails);
|
||||
|
@ -114,7 +114,7 @@ public class ExtensionApiModule extends BaseApi {
|
|||
@Override
|
||||
public void success(Object result) {
|
||||
String json = GsonUtil.gson.toJson(result);
|
||||
FinAppTrace.d(ExtensionApiModule.TAG, "channel invokeMethod:" + name
|
||||
FLog.d(ExtensionApiModule.TAG, "channel invokeMethod:" + name
|
||||
+ " success, result=" + result + ", json=" + json);
|
||||
JSONObject ret = null;
|
||||
if (json != null && !json.equals("null")) {
|
||||
|
@ -137,7 +137,7 @@ public class ExtensionApiModule extends BaseApi {
|
|||
|
||||
@Override
|
||||
public void error(String errorCode, String errorMessage, Object errorDetails) {
|
||||
FinAppTrace.e(ExtensionApiModule.TAG, "channel invokeMethod:" + name
|
||||
FLog.e(ExtensionApiModule.TAG, "channel invokeMethod:" + name
|
||||
+ " error, errorCode=" + errorCode
|
||||
+ ", errorMessage=" + errorMessage
|
||||
+ ", errorDetails=" + errorDetails);
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
package com.finogeeks.mop_example;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.finogeeks.lib.applet.modules.appletloadinglayout.IFinAppletLoadingPage;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public class CustomLoadingPage extends IFinAppletLoadingPage {
|
||||
public CustomLoadingPage(@NonNull Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFailureLayoutRes() {
|
||||
return R.layout.layout_custom_loading_page_failure;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLoadingLayoutRes() {
|
||||
return R.layout.layout_custom_loading_page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingFailure(@NonNull String s) {
|
||||
((TextView)getFailureLayout().findViewById(R.id.failMsg)).setText(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingFailure(@NonNull String s, @NonNull String s1) {
|
||||
((TextView)getFailureLayout().findViewById(R.id.failTitle)).setText(s);
|
||||
((TextView)getFailureLayout().findViewById(R.id.failMsg)).setText(s1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(@NonNull String s, @NonNull String s1) {
|
||||
((TextView)getLoadingLayout().findViewById(R.id.loadingTitle)).setText(s);
|
||||
}
|
||||
}
|
|
@ -1,6 +1,8 @@
|
|||
package com.finogeeks.mop_example;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Application;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
// import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
@ -27,11 +29,16 @@ public class MainApplication extends Application {
|
|||
FinAppProcessClient.INSTANCE.getAppletProcessApiManager().setAppletProcessHandler(new IAppletProcessHandler(){
|
||||
@Override
|
||||
public boolean onNavigationBarMoreButtonClicked(@NonNull Context context, @NonNull String appId) {
|
||||
// 返回true表示要自行处理更多视图;返回false表示使用默认的更多视图
|
||||
|
||||
// 在这里弹出自定义的更多视图
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle("更多视图")
|
||||
.setMessage(appId)
|
||||
.setPositiveButton("菜单", null)
|
||||
.setNegativeButton("取消", null)
|
||||
.show();
|
||||
|
||||
return false;
|
||||
// 返回true表示要自行处理更多视图;返回false表示使用默认的更多视图
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center">
|
||||
<ProgressBar
|
||||
android:id="@+id/loadingWaiting"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Widget.AppCompat.ProgressBar"
|
||||
/>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/loadingTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginTop="16dp"
|
||||
/>
|
||||
</LinearLayout>
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center"
|
||||
android:padding="24dp">
|
||||
<TextView
|
||||
android:id="@+id/failTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||
/>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/failMsg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Caption"
|
||||
android:layout_marginTop="16dp"
|
||||
/>
|
||||
</LinearLayout>
|
|
@ -1,11 +1,11 @@
|
|||
PODS:
|
||||
- FinApplet (2.40.1)
|
||||
- FinAppletExt (2.40.1):
|
||||
- FinApplet (= 2.40.1)
|
||||
- FinApplet (2.40.3)
|
||||
- FinAppletExt (2.40.3):
|
||||
- FinApplet (= 2.40.3)
|
||||
- Flutter (1.0.0)
|
||||
- mop (0.1.1):
|
||||
- FinApplet (= 2.40.1)
|
||||
- FinAppletExt (= 2.40.1)
|
||||
- FinApplet (= 2.40.3)
|
||||
- FinAppletExt (= 2.40.3)
|
||||
- Flutter
|
||||
|
||||
DEPENDENCIES:
|
||||
|
@ -24,10 +24,10 @@ EXTERNAL SOURCES:
|
|||
:path: ".symlinks/plugins/mop/ios"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
FinApplet: 053df5db21b766a8705a6fb809731ec19f75578e
|
||||
FinAppletExt: 45c9fece1524d9eafa25e6bcd0fe492060492e3a
|
||||
FinApplet: a76ded99df163388bb4de129df20c0ff44abe37c
|
||||
FinAppletExt: 5c53d5c3554ce1be014871214a5c7a06f0bf9177
|
||||
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
|
||||
mop: 8dffe3317decd528a199f7a8695d74174fded976
|
||||
mop: 4881eb2c1d365d9cf148b5dc7f8eca2b7018121d
|
||||
|
||||
PODFILE CHECKSUM: 2317ba7584871ae8cd67fd0244fbd5e96fd06167
|
||||
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
||||
A8C6E1F329E2FFEC00E3B446 /* LoadingView.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C6E1F229E2FFEC00E3B446 /* LoadingView.m */; };
|
||||
A8C6E1F629E3E71400E3B446 /* FlutterMethodChannelHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C6E1F529E3E71400E3B446 /* FlutterMethodChannelHandler.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
|
@ -46,6 +48,10 @@
|
|||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
A8C6E1F129E2FFEC00E3B446 /* LoadingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoadingView.h; sourceTree = "<group>"; };
|
||||
A8C6E1F229E2FFEC00E3B446 /* LoadingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoadingView.m; sourceTree = "<group>"; };
|
||||
A8C6E1F429E3E71400E3B446 /* FlutterMethodChannelHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FlutterMethodChannelHandler.h; sourceTree = "<group>"; };
|
||||
A8C6E1F529E3E71400E3B446 /* FlutterMethodChannelHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlutterMethodChannelHandler.m; sourceTree = "<group>"; };
|
||||
B691CF78BE1464D3451E07AF /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
|
@ -120,6 +126,10 @@
|
|||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
|
||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
|
||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
|
||||
A8C6E1F129E2FFEC00E3B446 /* LoadingView.h */,
|
||||
A8C6E1F229E2FFEC00E3B446 /* LoadingView.m */,
|
||||
A8C6E1F429E3E71400E3B446 /* FlutterMethodChannelHandler.h */,
|
||||
A8C6E1F529E3E71400E3B446 /* FlutterMethodChannelHandler.m */,
|
||||
);
|
||||
path = Runner;
|
||||
sourceTree = "<group>";
|
||||
|
@ -272,6 +282,8 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
|
||||
A8C6E1F329E2FFEC00E3B446 /* LoadingView.m in Sources */,
|
||||
A8C6E1F629E3E71400E3B446 /* FlutterMethodChannelHandler.m in Sources */,
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
|
|
@ -3,10 +3,16 @@ import Flutter
|
|||
|
||||
@UIApplicationMain
|
||||
@objc class AppDelegate: FlutterAppDelegate {
|
||||
|
||||
var channelHander : FlutterMethodChannelHandler?
|
||||
|
||||
override func application(
|
||||
_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||||
) -> Bool {
|
||||
|
||||
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
|
||||
channelHander = FlutterMethodChannelHandler(messenger: controller)
|
||||
GeneratedPluginRegistrant.register(with: self)
|
||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
//
|
||||
// FlutterMethodChannelHandler.h
|
||||
// Runner
|
||||
//
|
||||
// Created by Haley on 2023/4/10.
|
||||
//
|
||||
|
||||
#import <Flutter/Flutter.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface FlutterMethodChannelHandler : NSObject
|
||||
|
||||
- (instancetype)initWithMessenger:(NSObject *)messenger;
|
||||
|
||||
@end
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
//
|
||||
// FlutterMethodChannelHandler.m
|
||||
// Runner
|
||||
//
|
||||
// Created by Haley on 2023/4/10.
|
||||
//
|
||||
|
||||
#import "FlutterMethodChannelHandler.h"
|
||||
|
||||
#import <FinApplet/UIApplication+FATPublic.h>
|
||||
|
||||
@interface FlutterMethodChannelHandler ()
|
||||
|
||||
@property (nonatomic,strong) FlutterMethodChannel *channel;
|
||||
|
||||
@end
|
||||
|
||||
@implementation FlutterMethodChannelHandler
|
||||
|
||||
- (instancetype)initWithMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
[self setupChannelWithMessenger:messenger];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)setupChannelWithMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
|
||||
{
|
||||
_channel = [FlutterMethodChannel methodChannelWithName:@"com.message.flutter_to_app" binaryMessenger:messenger];
|
||||
|
||||
[_channel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) {
|
||||
NSLog(@"收到Flutter消息:%@", call.method);
|
||||
if ([call.method isEqualToString:@"showCustomMoreView"]) {
|
||||
NSString *appId = call.arguments[@"appId"];
|
||||
// 弹出自定义的更多视图
|
||||
UIViewController *viewController = [[UIApplication sharedApplication] fat_topViewController];
|
||||
|
||||
UIAlertController *alertViewController = [UIAlertController alertControllerWithTitle:@"更多视图" message:appId preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
[alertViewController addAction:[UIAlertAction actionWithTitle:@"转发" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||
|
||||
}]];
|
||||
[alertViewController addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
||||
|
||||
}]];
|
||||
[viewController presentViewController:alertViewController animated:YES completion:nil];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,16 @@
|
|||
//
|
||||
// LoadingView.h
|
||||
// Runner
|
||||
//
|
||||
// Created by Haley on 2023/4/9.
|
||||
//
|
||||
|
||||
#import <FinApplet/FinApplet.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface LoadingView : FATBaseLoadingView
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -0,0 +1,29 @@
|
|||
//
|
||||
// LoadingView.m
|
||||
// Runner
|
||||
//
|
||||
// Created by Haley on 2023/4/9.
|
||||
//
|
||||
|
||||
#import "LoadingView.h"
|
||||
|
||||
@implementation LoadingView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
if ([super initWithFrame:frame]) {
|
||||
self.loadingView.padding = 5;
|
||||
self.loadingView.dotView.backgroundColor = [UIColor redColor];
|
||||
self.loadingView.animation.duration = 2;
|
||||
self.titleLabel.textColor = [UIColor redColor];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (void)layoutSubviews
|
||||
{
|
||||
[super layoutSubviews];
|
||||
|
||||
// 修改小程序logo应该是从管理后台上传新的小程序图标,因为更多面板、关于页面也会展示小程序logo,只改这里只是loding页面生效
|
||||
self.bottomImageView.hidden = YES;
|
||||
}
|
||||
|
||||
@end
|
|
@ -1 +1,2 @@
|
|||
#import "GeneratedPluginRegistrant.h"
|
||||
#import "FlutterMethodChannelHandler.h"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import 'dart:ffi';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:mop/api.dart';
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
@ -10,6 +11,8 @@ import 'package:mop/mop.dart';
|
|||
|
||||
void main() => runApp(MyApp());
|
||||
|
||||
const toAppMessageChannel = MethodChannel("com.message.flutter_to_app");
|
||||
|
||||
class MyApp extends StatefulWidget {
|
||||
@override
|
||||
_MyAppState createState() => _MyAppState();
|
||||
|
@ -41,6 +44,7 @@ class _MyAppState extends State<MyApp> {
|
|||
List<FinStoreConfig> storeConfigs = [storeConfigA];
|
||||
Config config = Config(storeConfigs);
|
||||
config.language = LanguageType.English;
|
||||
config.baseLoadingViewClass = "LoadingView";
|
||||
|
||||
UIConfig uiconfig = UIConfig();
|
||||
uiconfig.isAlwaysShowBackInDefaultNavigationBar = false;
|
||||
|
@ -54,6 +58,7 @@ class _MyAppState extends State<MyApp> {
|
|||
// capsuleConfig.capsuleRightMargin = 25;
|
||||
uiconfig.capsuleConfig = capsuleConfig;
|
||||
uiconfig.appletText = "applet";
|
||||
uiconfig.loadingLayoutCls = "com.finogeeks.mop_example.CustomLoadingPage";
|
||||
|
||||
// if (Platform.isIOS) {
|
||||
// final res = await Mop.instance.initialize(
|
||||
|
@ -174,7 +179,9 @@ class MyAppletHandler extends AppletHandler {
|
|||
|
||||
@override
|
||||
bool customCapsuleMoreButtonClick(String appId) {
|
||||
return false;
|
||||
print("customCapsuleMoreButtonClick---");
|
||||
toAppMessageChannel.invokeMethod("showCustomMoreView", {"appId": appId});
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -72,8 +72,8 @@
|
|||
|
||||
NSError* error = nil;
|
||||
FATUIConfig *uiconfig = [[FATUIConfig alloc]init];
|
||||
uiconfig.autoAdaptDarkMode = YES;
|
||||
if (_uiConfig) {
|
||||
// 导航栏配置
|
||||
if (_uiConfig[@"navigationTitleTextAttributes"]) {
|
||||
uiconfig.navigationTitleTextAttributes = _uiConfig[@"navigationTitleTextAttributes"];
|
||||
}
|
||||
|
@ -91,28 +91,20 @@
|
|||
if (_uiConfig[@"navigationBarBackBtnDarkColor"]) {
|
||||
uiconfig.navigationBarBackBtnDarkColor = [MOPTools colorWithRGBHex:[_uiConfig[@"navigationBarBackBtnDarkColor"] intValue]];
|
||||
}
|
||||
|
||||
// 更多视图配置
|
||||
uiconfig.moreMenuStyle = [_uiConfig[@"moreMenuStyle"] integerValue];
|
||||
uiconfig.hideBackToHomePriority = [_uiConfig[@"isHideBackHomePriority"] integerValue];
|
||||
uiconfig.hideFeedbackMenu = [_uiConfig[@"isHideFeedbackAndComplaints"] boolValue];
|
||||
uiconfig.hideBackToHome = [_uiConfig[@"isHideBackHome"] boolValue];
|
||||
uiconfig.hideForwardMenu = [_uiConfig[@"isHideForwardMenu"] boolValue];
|
||||
uiconfig.hideShareAppletMenu = [_uiConfig[@"isHideShareAppletMenu"] boolValue];
|
||||
uiconfig.hideRefreshMenu = [_uiConfig[@"isHideRefreshMenu"] boolValue];
|
||||
uiconfig.hideTransitionCloseButton = [_uiConfig[@"hideTransitionCloseButton"] boolValue];
|
||||
uiconfig.disableSlideCloseAppletGesture = [_uiConfig[@"disableSlideCloseAppletGesture"] boolValue];
|
||||
if (_uiConfig[@"webViewProgressBarColor"]) {
|
||||
uiconfig.progressBarColor = [MOPTools colorWithRGBHex:[_uiConfig[@"webViewProgressBarColor"] intValue]];
|
||||
}
|
||||
|
||||
uiconfig.hideFeedbackMenu = [_uiConfig[@"isHideFeedbackAndComplaints"] boolValue];
|
||||
uiconfig.hideForwardMenu = [_uiConfig[@"isHideForwardMenu"] boolValue];
|
||||
uiconfig.autoAdaptDarkMode = [_uiConfig[@"autoAdaptDarkMode"] boolValue];
|
||||
uiconfig.hideSettingMenu = [_uiConfig[@"isHideSettingMenu"] boolValue];
|
||||
uiconfig.hideFeedbackMenu = [_uiConfig[@"isHideFeedbackAndComplaints"] boolValue];
|
||||
uiconfig.hideRefreshMenu = [_uiConfig[@"isHideRefreshMenu"] boolValue];
|
||||
uiconfig.hideFavoriteMenu = [_uiConfig[@"isHideFavoriteMenu"] boolValue];
|
||||
uiconfig.hideAddToDesktopMenu = [_uiConfig[@"isHideAddToDesktopMenu"] boolValue];
|
||||
|
||||
uiconfig.appletText = _uiConfig[@"appletText"];
|
||||
uiconfig.disableSlideCloseAppletGesture = [_uiConfig[@"disableSlideCloseAppletGesture"] boolValue];
|
||||
// 胶囊配置
|
||||
if (_uiConfig[@"capsuleConfig"]) {
|
||||
NSDictionary *capsuleConfigDic = _uiConfig[@"capsuleConfig"];
|
||||
FATCapsuleConfig *capsuleConfig = [[FATCapsuleConfig alloc]init];
|
||||
|
@ -134,8 +126,8 @@
|
|||
capsuleConfig.capsuleDividerLightColor = [MOPTools colorWithRGBHex:[capsuleConfigDic[@"capsuleDividerLightColor"] intValue]];
|
||||
capsuleConfig.capsuleDividerDarkColor = [MOPTools colorWithRGBHex:[capsuleConfigDic[@"capsuleDividerDarkColor"] intValue]];
|
||||
uiconfig.capsuleConfig = capsuleConfig;
|
||||
|
||||
}
|
||||
uiconfig.hideTransitionCloseButton = [_uiConfig[@"hideTransitionCloseButton"] boolValue];
|
||||
|
||||
if (_uiConfig[@"navHomeConfig"]) {
|
||||
NSDictionary *navHomeConfigDic = _uiConfig[@"navHomeConfig"];
|
||||
|
@ -244,15 +236,19 @@
|
|||
|
||||
uiconfig.authViewConfig = authViewConfig;
|
||||
}
|
||||
uiconfig.appendingCustomUserAgent = _uiConfig[@"customWebViewUserAgent"];
|
||||
uiconfig.hideWebViewProgressBar = [_uiConfig[@"hideWebViewProgressBar"] boolValue];
|
||||
uiconfig.autoAdaptDarkMode = [_uiConfig[@"autoAdaptDarkMode"] boolValue];
|
||||
uiconfig.transtionStyle = [_uiConfig[@"transtionStyle"] integerValue];
|
||||
uiconfig.disableSlideCloseAppletGesture = [_uiConfig[@"disableSlideCloseAppletGesture"] boolValue];
|
||||
if (_uiConfig[@"webViewProgressBarColor"]) {
|
||||
uiconfig.progressBarColor = [MOPTools colorWithRGBHex:[_uiConfig[@"webViewProgressBarColor"] intValue]];
|
||||
}
|
||||
uiconfig.hideWebViewProgressBar = [_uiConfig[@"hideWebViewProgressBar"] boolValue];
|
||||
|
||||
uiconfig.appletText = _uiConfig[@"appletText"];
|
||||
uiconfig.appendingCustomUserAgent = _uiConfig[@"customWebViewUserAgent"];
|
||||
uiconfig.autoAdaptDarkMode = [_uiConfig[@"autoAdaptDarkMode"] boolValue];
|
||||
uiconfig.useNativeLiveComponent = [_uiConfig[@"useNativeLiveComponent"] boolValue];
|
||||
}
|
||||
|
||||
|
||||
|
||||
// uiconfig.moreMenuStyle = FATMoreViewStyleNormal;
|
||||
[[FATClient sharedClient] initWithConfig:config uiConfig:uiconfig error:&error];
|
||||
if (error) {
|
||||
failure(@"初始化失败");
|
||||
|
@ -268,8 +264,6 @@
|
|||
[[FATClient sharedClient].logManager initLogWithLogDir:logDir logLevel:logLevel consoleLog:YES];
|
||||
}
|
||||
|
||||
|
||||
|
||||
[[FATClient sharedClient] setEnableLog:YES];
|
||||
|
||||
success(@{});
|
||||
|
|
|
@ -76,7 +76,6 @@
|
|||
|
||||
NSError* error = nil;
|
||||
FATUIConfig *uiconfig = [[FATUIConfig alloc]init];
|
||||
uiconfig.autoAdaptDarkMode = YES;
|
||||
if (_uiConfig) {
|
||||
if (_uiConfig[@"navigationTitleTextAttributes"]) {
|
||||
uiconfig.navigationTitleTextAttributes = _uiConfig[@"navigationTitleTextAttributes"];
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
{
|
||||
NSLog(@"MOP_registerAppletHandler");
|
||||
[FATClient sharedClient].delegate = [MOPAppletDelegate instance];
|
||||
[FATClient sharedClient].shareItemDelegate = [MOPAppletDelegate instance];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -17,7 +17,7 @@ A finclip miniprogram flutter sdk.
|
|||
s.dependency 'Flutter'
|
||||
s.ios.deployment_target = '9.0'
|
||||
|
||||
s.dependency 'FinApplet' , '2.40.1'
|
||||
s.dependency 'FinAppletExt' , '2.40.1'
|
||||
s.dependency 'FinApplet' , '2.40.4-dev20230422v01'
|
||||
s.dependency 'FinAppletExt' , '2.40.4-dev20230422v01'
|
||||
end
|
||||
|
||||
|
|
|
@ -338,6 +338,10 @@ class UIConfig {
|
|||
// 是否自适应暗黑模式。如果设置为true,则更多页面、关于等原生页面会随着手机切换暗黑,也自动调整为暗黑模式
|
||||
bool autoAdaptDarkMode = false;
|
||||
|
||||
// 是否使用内置的live组件,默认为false。(目前仅iOS支持)
|
||||
// 配置为true时,需要依赖Live扩展SDK。
|
||||
bool useNativeLiveComponent = false;
|
||||
|
||||
// 要拼接的userAgent字符串
|
||||
String? appendingCustomUserAgent;
|
||||
|
||||
|
@ -399,6 +403,7 @@ class UIConfig {
|
|||
"moreMenuStyle": moreMenuStyle,
|
||||
"isHideBackHomePriority": isHideBackHomePriority.index,
|
||||
"autoAdaptDarkMode": autoAdaptDarkMode,
|
||||
"useNativeLiveComponent": useNativeLiveComponent,
|
||||
"appendingCustomUserAgent": appendingCustomUserAgent,
|
||||
"transtionStyle": transtionStyle.index,
|
||||
"disableSlideCloseAppletGesture": disableSlideCloseAppletGesture,
|
||||
|
|
Loading…
Reference in New Issue