国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【IOS-Debug】uniapp小程序打開APP原生頁面

這篇具有很好參考價值的文章主要介紹了【IOS-Debug】uniapp小程序打開APP原生頁面。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

APP里面的uniapp小程序要接入微信支付,但是支付的調(diào)起為實現(xiàn)統(tǒng)一管理是由APP原生調(diào)起支付,不是每個小程序自己實現(xiàn)。所以,支付完成的頁面也是寫在APP宿主原生頁面的,涉及到小程序打開原生頁面的跳轉(zhuǎn)方式。

頁面跳轉(zhuǎn)方式

眾所周知,常見的IOS頁面跳轉(zhuǎn)有presentpush兩種。

前者彈出的視圖是模態(tài)視圖,由UIViewController管理的視圖控制器堆棧。新彈出的頁面可以看見上一個頁面。

后者是由UINavigationController管理的視圖控制器堆棧,打開新視圖都入棧,調(diào)用之前的視圖則需要出棧。在window下同時只能顯示一個ViewController。

一、使用push跳轉(zhuǎn)
  • 實現(xiàn)push跳轉(zhuǎn)過程

為了實現(xiàn)新頁面的全覆蓋,我使用了push打開方式。為了保證小程序能push打開,修改APP宿主打開uniapp小程序的方式從默認DCUniMPOpenModePresent變成DCUniMPOpenModePush。

小程序打開的配置代碼:

// 初始化小程序的配置信息對象
DCUniMPConfiguration *configuration = [[DCUniMPConfiguration alloc] init];
/**
修改打開方式present變成push
*/
configuration.openMode = DCUniMPOpenModePush;
// 配置啟動小程序時傳遞的參數(shù)
configuration.extraData = @{ @"arguments":@"Hello uni microprogram" };
// 啟動小程序
[DCUniMPSDKEngine openUniMP:k_AppId configuration:configuration completed:^(DCUniMPInstance * _Nullable uniMPInstance, NSError * _Nullable error) {
	if (uniMPInstance) {
		// success
	} else {
		// error
	}
}];

在小程序打開的時候,使用push方式打開。

//第二個頁面
PayResultVC *vc=[PayResultVC new];
//當前小程序頁面
/ 小程序打開狀態(tài),調(diào)用此方法可獲取小程序?qū)?DCUniMPViewController 實例
UIViewController *currentVC=[DCUniMPSDKEngine getUniMPViewController];
[currentVC.navigationController pushViewController:vc animated:YES];
  • push方式打開原生頁面的優(yōu)缺點:

優(yōu)點:保證了全部新頁面都是通過由UINavigationController管理,保證了整個APP打開頁面的統(tǒng)一性。

缺點:uniapp通過push方式打開的小程序側(cè)滑退出會出現(xiàn)多層標題欄。如圖:

【IOS-Debug】uniapp小程序打開APP原生頁面,#IOS遇見的Bug,uni-app,小程序,objective-c,xcode

  • 解決方案(并未解決,更換present打開)
  • 解決方案一:

  • 翻閱官方文檔,通過uniapp代碼修改小程序控制器標題欄顯隱,結(jié)果側(cè)滑還是會出現(xiàn)兩個按鈕。

  • /// 注意:只有通過 push 的方式打開小程序才生效
    /// @param hidden 是否隱藏
    + (void)whenUniMPCloseSetNavigationBarHidden:(BOOL)hidden;
    
    
    /// 設(shè)置 push 打開方式小程序內(nèi)是否自動控制原生導航欄的顯隱(默認控制)
    /// @param isControl Bool
    + (void)setAutoControlNavigationBar:(BOOL)isControl;

    官方代碼文檔地址:DCUniMPSDKEngine | uni小程序SDK

  • 解決方案二:

  • 修改項目控制頁面跳轉(zhuǎn)的UINavigationController,判斷若是小程序?qū)嵗齽t隱藏,Debug模式下發(fā)現(xiàn)小程序打開未走過UINavigationController。

  • 方案失敗。

二、使用present跳轉(zhuǎn)
  • 實現(xiàn)present跳轉(zhuǎn)過程

默認打開uniapp的方式,不修改。

打開原生APP頁面代碼:

//第二個頁面
PayResultVC *vc=[PayResultVC new];
//當前小程序頁面
/ 小程序打開狀態(tài),調(diào)用此方法可獲取小程序?qū)?DCUniMPViewController 實例
UIViewController *currentVC=[DCUniMPSDKEngine getUniMPViewController];
[currentVC presentModalViewController:vc animated:YES];
  • present方式打開原生頁面的優(yōu)缺點:
  • 優(yōu)點:沒有push打開小程序側(cè)滑出現(xiàn)的多個導航欄Bug。

    缺點:打開的新頁面無法全部覆蓋上一層頁面,有空隙。如圖:

???????【IOS-Debug】uniapp小程序打開APP原生頁面,#IOS遇見的Bug,uni-app,小程序,objective-c,xcode

  • 修改方式

修改跳轉(zhuǎn)模式,變成全屏模式。代碼:

//第二個頁面
PayResultVC *vc=[PayResultVC new];

//模式要加在新打開的頁面
vc.modalPresentationStyle=UIModalPresentationFullScreen;

//當前小程序頁面
/ 小程序打開狀態(tài),調(diào)用此方法可獲取小程序?qū)?DCUniMPViewController 實例
UIViewController *currentVC=[DCUniMPSDKEngine getUniMPViewController];
[currentVC presentModalViewController:vc animated:YES];
修改結(jié)果:

可以全部覆蓋上級頁面,也沒有多個導航欄的Bug。文章來源地址http://www.zghlxwxcb.cn/news/detail-781765.html

到了這里,關(guān)于【IOS-Debug】uniapp小程序打開APP原生頁面的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包