mPaaS 10.1.68.36 以降、ミニプログラムはカスタムビュー機能をサポートしています。
手順
NBComponent インターフェースを継承します。
@interface CustomTestView : NBComponentinitで作成されたビューを返すように、次のメソッドを再書き込みします。- (id)initWithConfig:(NSDictionary *)config messageDelegate:(id<NBComponentMessageDelegate>)messageDelegate { self = [super initWithConfig:config messageDelegate:messageDelegate]; if (self) { self.contentSpaceView = [[UIView alloc] init]; self.contentSpaceView.backgroundColor = [UIColor orangeColor]; self.contentSpaceView.frame = CGRectMake(0, 0, 100, 100); UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(postMessage)]; [self.contentSpaceView addGestureRecognizer:tap]; } return self; }//`init` で作成されたビューを返します。 - (UIView *)contentView { return self.contentSpaceView; }ミニプログラムからメッセージを受信します。
- (void)componentReceiveMessage:(NSString *)message data:(NSDictionary *)data callback:(NBComponentCallback)callback { if ([message isEqualToString:@"setColor"]) { callback(@{@"success":@"1"}); }else if ([message isEqualToString:@"startAnimation"]) { [self.nbComponentMessageDelegate sendCustomEventMessage:@"nbcomponent.mpaasComponent.customEvent" component:self data:@{@"sth":@"start"} callback:^(NSDictionary * _Nonnull data) { }]; } }ミニプログラムにメッセージを送信します。
[self.nbComponentMessageDelegate sendCustomEventMessage:@"nbcomponent.mpaasComponent.customEvent" component:self data:@{ @"element":@"elementId", @"eventName":@"onXxx", @"data":{} } callback:^(NSDictionary * _Nonnull data) { }];パラメーターの説明は次のとおりです。
パラメーター
説明
element
タグ内の ID。
eventName
対応するイベント。 on で始まります。
data
カスタムイベントパラメーター。
カスタムビューを登録します。
- (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[PSDService sharedInstance] registerComponentWithName:@"componentName" clsName:@"className"]; }ミニプログラムはカスタムビューを呼び出します。
<mpaas-component id="mpaas-map" type="custom_map" style="{{ width: 200, height: 200 }}" />mpaas-componentラベルは固定値です。変更しないでください。その他のパラメーターの説明は次のとおりです。パラメーター
説明
id
カスタムビューのインスタンスの ID。1 つのミニプログラム内で重複する ID が発生しないようにしてください。
type
カスタムビューのタイプは、クライアントによって登録されたカスタムビューパラメーター
componentNameと一致している必要があります。プレフィックスを追加することをお勧めします。style
幅と高さを設定します。
ミニプログラムのカスタムパラメーターの説明は次のとおりです。
<mpaas-component id="mpaas-map" type="custom_map" style="{{ width: 200, height: 200 }}" color="#FFFF00FF" ··· />重要Color はカスタムレンダリングパラメーターであり、任意に名前を付けることもできます。
id、type、style はデフォルトフィールドです。これらのフィールドは、カスタムビューのカスタムレンダリングパラメーターの名前として使用しないでください。
カスタムレンダリングパラメーターは on で始めることができず、タイプは func にすることはできません。
クライアントはカスタムパラメーターを受信します。
- (void)componentDataWillChangeWithData:(NSDictionary *)data { } - (void)componentDataDidChangeWithData:(NSDictionary *)data { }
その他のコンポーネント内部メソッド
// self.nbComponentMessageDelegate メソッド
@protocol NBComponentMessageDelegate <NSObject>
@required
/**
* コンポーネントはページにメッセージをアクティブに送信します (Native->Page)
*
* @param message メッセージ名。
* @param component メッセージを送信するコンポーネント。
* @param data メッセージの内容。
* @param callback ページがメッセージを処理した後のコールバック。
*
* @return void
*/
- (void)sendMessage:(NSString *)message
component:(id<NBComponentProtocol>)component
data:(NSDictionary *)data
callback:(NBComponentCallback)callback;
@optional
/**
* コンポーネントは実行環境で JS を直接実行できます。
*
* @param javaScriptString 実行される JS。
* @param completionHandler コールバック関数を実行します。
*
* @return void
*/
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler;
/**
* コンポーネントはページにメッセージをアクティブに送信します (Native->Page)。
*
* @param message メッセージ名 (メッセージは内部的に処理されません)。
* @param component メッセージを送信するコンポーネント。
* @param data メッセージの内容。
* @param callback ページがメッセージを処理した後のコールバック。
*
* @return void
*/
- (void)sendCustomEventMessage:(NSString *)message
component:(id<NBComponentProtocol>)component
data:(NSDictionary *)data
callback:(NBComponentCallback)callback;
@end
@protocol NBComponentLifeCycleProtocol <NSObject>
- (void)componentWillAppear;
- (void)componentDidAppear;
/**
* コンポーネントは破棄されます。
*
* @return void
*/
- (void)componentWillDestory;
/**
* コンポーネントが破棄された後。
*
* @return void
*/
- (void)componentDidDestory;
- (void)componentWillResume;
- (void)componentDidResume;
- (void)componentWillPause;
- (void)componentDidPause;
//fullscreen
/**
コンポーネントがフルスクリーンコールバックに入ろうとしています。
*/
- (void)componentWillEnterFullScreen;
/**
コンポーネントがフルスクリーンに入ったときのコールバック。
*/
- (void)componentWillExitFullScreen;
/**
コンポーネントがフルスクリーンコールバックを終了しようとしています。
*/
- (void)componentDidEnterFullScreen;
/**
コンポーネントがフルスクリーンのコールバックを終了します。
*/
- (void)componentDidExitFullScreen;
//visiblity
/**
コンポーネントがフルスクリーンコールバックを終了しようとしています。
*/
- (void)componentDidHidden;
/**
コンポーネントがフルスクリーンのコールバックを終了します。
*/
- (void)componentDidVisiblity;
@end
@protocol NBComponentDataProtocol <NSObject>
/**
* コンポーネントデータが更新されます。
*
* @param data データの内容。
*
* @return void
*/
- (void)componentDataWillChangeWithData:(NSDictionary *)data;
/**
* コンポーネントのデータが更新されました。通常、インターフェースを更新するか、コンポーネントの他の操作を実行する必要があります。
*
* @param data データの内容。
*
* @return void
*/
- (void)componentDataDidChangeWithData:(NSDictionary *)data;
@end
@protocol NBComponentFullScreenProtocol <NSObject>
/**
フルスクリーンモードかどうか。
@return フルスクリーンモードかどうか。
*/
- (BOOL)isFullScreen;
/**
@return フルスクリーンモードに入る必要があるかどうか。
*/
- (BOOL)shouldEnterFullScreen;
/**
ContentView をフルスクリーンにする必要があるかどうかを設定します。ビジネスは、これを変更することでフルスクリーンモードに切り替えることができます。
@param fullScreen フルスクリーンが必要かどうか。
@param shouldRotate 画面を回転する必要があるかどうか。
*/
- (void)setContentViewFullScreen:(BOOL)fullScreen shouldRotate:(BOOL)shouldRotate;
@end
@protocol NBComponentVisibilityProtocol <NSObject>
/**
visibilityState の状態。
@return visibilityState の状態。
*/
- (NBComponentVisibilityState)visibilityState;
/**
VisibilityState の状態を設定します
@param state VisibilityState
@return 正常に設定されたかどうか
*/
- (BOOL)setVisibilityState:(NBComponentVisibilityState)state;
/**
ビジネスはこのメソッドを再書き込みして、可視性の変更を監視する結果を返します。デフォルトは NO です。
@return 可視性の変更を監視する必要があるかどうか。
*/
- (BOOL)shouldObServerVisibilityStateChange;
@end