下載HTML 5+ 離線打包SDK (http://ask.dcloud.net.cn/article/103)點(diǎn)擊下載SDK
下載完成后打開可以看到SDK、demo、Feature-iOS.xls 、IOS平臺5+SDK技術(shù)白皮書.docx
Feature-iOS.xls:iOS平臺各擴(kuò)展Feature API對應(yīng)的庫文件列表,我們需要參照這個列表逐個添加。
IOS平臺5+SDK技術(shù)白皮書.docx: 有集成的詳細(xì)說明(照做即可)
參照Feature-ios.xls列表,36行以內(nèi)所有Frameword 和 Library都是H5+必須的依賴項(xiàng),需要逐個添加到項(xiàng)目中(Link Binary With Libraries、Other LibrarianFlags中配置)
Feature名稱:功能包的名稱
LinkerFlagsà OtherLinker Flags
Library(.a) à Link Binary With Libraries
Info àInfo.plist File
Frameworkà LinkBinary With Libraries
下面以基礎(chǔ)包為例,對項(xiàng)目所需資源進(jìn)行配置。
添加LinkerFlags
Target à BuildSetting à Linking à Other Linker Flags
雙擊在打開小窗中依次添加-llibNavigator -lcoreSupport -llibPDRCore –llibUI
添加Library 和Framework
Target à BuildPhases à Link Binary With Libraries
單擊“+”添加.a文件和Framework包
添加資源
Target à BuildPhases à Copy Bundle Resources
單擊“+”添加.bundle文件
配置Info.plist File
Target à BuildSettings à Packaging à Info.plist File
編輯Info.plist文件,
添加: App Transport SecuritySettings:[類型:Dictionary]
Allow Arbitrary Loads:[類型:Boolean][值:YES]
配置引用包的路徑
Target à BuildSettings à Search Pathes
Framework Search Paths:添加Framework的所在目錄的路徑
Library Search Paths:添加Library文件的所在目錄的路徑
引入H5+頭文件
PandoraApi.bundle文件:5+SDK所必需要的資源文件。
位于:SDK/ Bundles/ PandoraApi.bundle,將該文件拖入項(xiàng)目中
或者通過targetàBuild PhasesàCopy Bundle Resources 添加資源文件
添加后結(jié)果:
之后我們自己的插件也需要在些配置才能正常工作。
control.xml文件:文件中配置了默認(rèn)啟動應(yīng)用的APPID,如使用離線打包方式則需要添加此文件,如使用Widget或者Webview方式集成則不需要添加此文件
<key>NSAppTransportSecurity</key><dict> <key>NSAllowsArbitraryLoads</key> <true/></dict>
Target à BuildPhases à Copy Bundle Resources
單擊“+”,選擇下載好的SDK目錄下的Pandora文件夾。引用方式選擇“folder referneces”.引用成功后,修改目錄Pandora/apps/[appid]/www,apps的子目錄名稱應(yīng)對control.xml中appid對應(yīng),同時修改manifest.json文件中id的值改為control.xml中appid的值相同。
現(xiàn)在開始在原生生成代碼的基礎(chǔ)上進(jìn)行集成。
1 設(shè)置5+SDK運(yùn)行模式
在工程的AppDelegate類的添加代碼,當(dāng)應(yīng)用啟動時設(shè)置5+SDK的運(yùn)行模式
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 設(shè)置當(dāng)前SDK運(yùn)行模式
return [PDRCoreinitEngineWihtOptions:launchOptions withRunMode:PDRCoreRunModeAppClient];
}
2 在應(yīng)用退出時添加銷毀5+SDK運(yùn)行環(huán)境
- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when theapplication is about to terminate. Save data if appropriate. See alsoapplicationDidEnterBackground:.
[PDRCore destoryEngine];
}
3 啟動5+運(yùn)行環(huán)境
-(void)Start5pEngineAsWidget
{
PDRCore *h5Engine = [PDRCoreInstance];
CGRect newRect = self.view.bounds;
_containerView = [[UIViewalloc]initWithFrame:newRect];
_containerView.autoresizingMask =UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
// 設(shè)置5+內(nèi)核的Delegate,5+API在修改狀態(tài)風(fēng)格和應(yīng)用是否全屏?xí)r會調(diào)用
h5Engine.coreDeleagete = self;
h5Engine.persentViewController =self;
[self.viewaddSubview:_containerView];
// 設(shè)置WebApp所在的目錄,該目錄下必須有mainfest.json
NSString* pWWWPath = [[[NSBundlemainBundle]bundlePath]stringByAppendingPathComponent:@"Pandora/apps/h5/www/"];
// 設(shè)置5+SDK運(yùn)行的View
[[PDRCore Instance] setContainerView:_containerView];
// 傳入?yún)?shù)可以在頁面中通過plus.runtime.arguments參數(shù)獲取
NSString* pArgus = @"id=plus.runtime.arguments";
// 啟動該應(yīng)用
pAppHandle = [[[PDRCoreInstance]appManager]openAppAtLocation:pWWWPathwithIndexPath:@"index.html"withArgs:pArgus withDelegate:nil];
}
對應(yīng)頭文件引用:
#import "PDRCore.h"
#import "PDRToolSystem.h"
#import "PDRToolSystemEx.h"
#import "PDRToolSystem.h"
#import "PDRToolSystemEx.h"
#import "PDRCoreAppFrame.h"
#import "PDRCoreAppManager.h"
#import "PDRCoreAppWindow.h"
#import "PDRCoreAppInfo.h"
至些H5 Plus集成完成,編譯運(yùn)行。
出錯列表匯總:
錯誤1:
-canOpenURL: failed for URL:"hbuilder://" - error: "This app is not allowed to query forscheme hbuilder"
解決方法:在Info.plist中增加“LSApplicationQueriesSchemes類型 array”,再添加該項(xiàng)子項(xiàng)“streamapp”和“hbuilder”
錯誤2:在線更新h5報錯
-canOpenURL: failed for URL:"itms-apps://itunes.apple.com/cn/app/hello-h5+/id682211190?l=zh&mt=8"- error: "This app is not allowed to query for scheme itms-apps"
錯誤3:原因是引用的“Pandora/apps/h5/www”方式不對,正確引用資源方式是選擇“Createfolder referneces”
聯(lián)系客服