{"id":691,"date":"2016-07-19T16:20:43","date_gmt":"2016-07-19T08:20:43","guid":{"rendered":"http:\/\/www.yusian.com\/blog\/?p=691"},"modified":"2016-07-19T18:24:28","modified_gmt":"2016-07-19T10:24:28","slug":"dcloud%e6%a1%86%e6%9e%b6ios%e5%b9%b3%e5%8f%b0%e4%bb%a5widget%e6%96%b9%e5%bc%8f%e9%9b%86%e6%88%90html5sdk%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"https:\/\/www.yusian.com\/blog\/analysis\/2016\/07\/19\/162043691.html","title":{"rendered":"DCloud\u6846\u67b6IOS\u5e73\u53f0\u4ee5Widget\u65b9\u5f0f\u96c6\u6210HTML5+SDK\u65b9\u6cd5"},"content":{"rendered":"<p>0\u3001\u4e0d\u77e5\u9053\u4ec0\u4e48\u662fDCloud\u7684\u5c31\u6682\u65f6\u98d8\u8fc7\u5427\uff0c\u867d\u7136\u8fd9\u4e1c\u897f\u4e5f\u4e0d\u662f\u5f88\u6709\u540d\uff0c\u4f46\u6700\u8fd1\u6709\u7528\u5230\u8fd9\u4e2a\u5c31\u5206\u4eab\u4e00\u4e0b\u3002<\/p>\n<p>1\u3001\u5b98\u65b9\u7684\u6587\u6863\u5b9e\u5728\u662f\u5199\u5f97\u592a\u968f\u610f\u4e86\uff0c\u5f88\u4e0d\u5168\u9762\u5e76\u4e14\u6709\u4e9b\u95ee\u9898\u5728\u5b98\u65b9\u6587\u6863\u751a\u81f3\u8bba\u575b\u4e2d\u6839\u672c\u5c31\u627e\u4e0d\u5230\u76f8\u5173\u89e3\u51b3\u65b9\u6848\uff0c\u8fd9\u6b21\u57fa\u4e8eXcode7.3\u4ee5\u65b0\u5efa\u4e00\u4e2a\u5de5\u7a0b\u5f00\u59cb\u4ece\u96f6\u96c6\u6210Dcloud\u6846\u67b6\uff0c\u4ee5\u53ca\u96c6\u6210\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u7684\u4e00\u4e9b\u5178\u578b\u95ee\u9898\u505a\u51fa\u89e3\u51b3\u8bf4\u660e\uff1b<\/p>\n<p><strong>2\u3001\u6846\u67b6\u96c6\u6210<\/strong><br \/>\n2.1\u3001\u4e0b\u8f7d\u5b98\u65b9SDK\u5305\uff0c\u4e0b\u8f7d\u94fe\u63a5\u6ca1\u6709\u56fa\u5b9a\u7684URL\u6216\u9875\u9762\uff0c\u6240\u4ee5\u5404\u4f4d\u81ea\u5df1\u53bb\u5b98\u65b9\u627e\u5427\uff1b<br \/>\n2.2\u3001\u89e3\u538b\u51fa\u6765\uff0c\u627e\u5230\u6211\u4eec\u9700\u8981\u7684\u4e00\u4e9b\u57fa\u7840\u6587\u4ef6<\/p>\n<pre line=\"1\">\nBundles--\u76ee\u5f55\u81f3\u5c11\u9700\u8981PandoraApi.bundle\u8fd9\u4e00\u4e2a\u8d44\u6e90\u5305\uff0c\u7b80\u5355\u8d77\u89c1\u5c31\u5148\u53ea\u5f15\u8fdb\u8fd9\u4e00\u4e2a\u5373\u53ef\ninc------\u76ee\u5f55\u6240\u6709\u7684\u6587\u4ef6\u53ca\u76ee\u5f55\u90fd\u539f\u5c01\u4e0d\u540c\u7684\u9700\u8981\nLibs-----\u76ee\u5f55\u627e\u52305\u4e2a\u9759\u6001\u6587\u4ef6libcoreSupport.a\u3001liblibNativeUI.a\u3001liblibNavigator.a\u3001liblibPDRCore.a\u3001liblibUI.a\u3001liblibWidget.a\n#\u8be5\u6b7b\u7684\u8fdb\u5ea6\u6761<\/pre>\n<p>2.3\u3001\u597d\u4e86\uff0c\u65b0\u5efa\u4e00\u4e2a\u6587\u4ef6\u5939\u6bd4\u5982\u53ebDCloud\uff0c\u7136\u540e\u628a\u4e0a\u9762\u6574\u7406\u51fa\u6765\u7684\u4e09\u4e2a\u6587\u4ef6\u5939\u653e\u91cc\u9762\uff0c\u73b0\u5728\u7ed3\u6784\u662f<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-692\" src=\"http:\/\/www.yusian.com\/blog\/wp-content\/uploads\/2016\/07\/20160719-1@2x.jpg\" alt=\"20160719-0@2x\" width=\"600\" height=\"368\" \/><\/p>\n<p>2.4\u3001\u5c06\u4e0a\u9762\u8fd9\u4e2a\u76ee\u5f55\u52a0\u5165\u5230\u9879\u76ee\u4e2d\uff0cAdded folders\u8fd9\u4e2a\u9009\u9879\u9009<strong>Create groups<\/strong><\/p>\n<p><strong>3\u3001\u8c03\u8bd5\u5904\u7406<\/strong><!--more--><br \/>\n3.1\u3001\u5c06SDK\u96c6\u6210\u5230\u9879\u76ee\u4e2d\u76f4\u63a5\u7f16\u8bd1\u8fd8\u4e0d\u4f1a\u6709\u4efb\u4f55\u9519\u8bef\u63d0\u793a<br \/>\n3.2\u3001\u542f\u52a8\u65f6\u521d\u59cb\u5316DCloud\u6846\u67b6\u5f15\u64ce\uff0c\u5728AppDelegate\u4e2d\u4fee\u6539\u65b9\u6cd5<\/p>\n<pre lang=\"objc\" line=\"1\" highlight=\"4\">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n{\n    \/\/ Override point for customization after application launch.\n    return [PDRCore initEngineWihtOptions:launchOptions withRunMode:PDRCoreRunModeAppClient];\n}<\/pre>\n<p>PDRCoreRunMode\u6709\u4e09\u79cd\u6a21\u5f0f\uff0c\u8fd9\u91cc\u4e00\u5b9a\u8981\u9009PDRCoreRunModeAppClient<br \/>\n\u5176\u4ed6\u4e24\u79cd\u6a21\u5f0f\u7684\u8bf4\u660e\uff1a<\/p>\n<pre lang=\"objc\" line=\"1\">typedef NS_ENUM(NSInteger, PDRCoreRunMode) {\n    \/**\n     \u6b63\u5e38\u542f\u52a8runtime\n     \u4f7f\u7528\u8be5\u65b9\u6cd5\u542f\u52a8runtime\u5177\u6709\u5168\u90e8\u529f\u80fd\n     \u5305\u62ec\u5177\u6709\u5e94\u7528\u7ba1\u7406\u3001\u7a97\u53e3\u7ba1\u7406\u3001\u63d2\u4ef6\u7ba1\u7406\u3001\u6743\u9650\u7ba1\u7406\u3001\u8d44\u6e90\u7ba1\u7406\u7b49\u529f\u80fd\n     *\/\n    PDRCoreRunModeNormal = 0,\n    \/**\n     \u4f7f\u7528\u8be5\u65b9\u6cd5\u542f\u52a8\u7684runtime\u4e0d\u5177\u6709\u5e94\u7528\u7ba1\u7406\u7a97\u53e3\u7ba1\u7406\u529f\u80fd\n     \u5f53\u9700\u8981\u663e\u793a\u9875\u9762\u65f6,\u9700\u8981\u81ea\u5df1\u521b\u5efaPDRCoreAppFrame\n     *\/\n    PDRCoreRunModeWebviewClient = 1,\n    \/**\n     \u4f7f\u7528\u8be5\u65b9\u6cd5\u542f\u52a8\u7684runtime\u5177\u6709\u6b63\u5e38\u542f\u52a8\u6240\u6709\u529f\u80fd\u4f46\u4e0d\u5305\u542b\u542f\u52a8\u56fe\u7247\n     \u5e94\u7528\u5347\u7ea7\u3001\u5e94\u7528copy\u8fd0\u884c\u903b\u8f91\uff0c\u8be5\u542f\u52a8\u4f1a\u81ea\u52a8\u542f\u52a8app\u7ba1\u7406\u5668\u4f46\n     \u4e0d\u4f1a\u81ea\u52a8\u521b\u5efaapp\uff0c\u9700\u8981\u81ea\u5df1\u521b\u5efaapp\n     *\/\n    PDRCoreRunModeAppClient\n};<\/pre>\n<p>3.3\u3001\u52a0\u4e86\u8fd9\u53e5\u540e\u62a5\u51fa30\u4e2a\u9519\u8bef\uff0c\u8d34\u51fa\u6765\u4e00\u4e2a\u4e00\u4e2a\u89e3\u51b3<\/p>\n<pre line=\"1\">Undefined symbols for architecture x86_64:\n  \"_AudioServicesPlaySystemSound\", referenced from:\n      -[PGDeviceStatus beep:] in liblibPDRCore.a(PGDeviceStatus.o)\n      -[PGDeviceStatus vibrate:] in liblibPDRCore.a(PGDeviceStatus.o)\n  \"_CTRadioAccessTechnologyHSDPA\", referenced from:\n      +[PTNetInfo reachabilityStatusForFlags:] in liblibPDRCore.a(PDRToolSystemEx.o)\n  \"_CTRadioAccessTechnologyLTE\", referenced from:\n      +[PTNetInfo reachabilityStatusForFlags:] in liblibPDRCore.a(PDRToolSystemEx.o)\n  \"_CTRadioAccessTechnologyWCDMA\", referenced from:\n      +[PTNetInfo reachabilityStatusForFlags:] in liblibPDRCore.a(PDRToolSystemEx.o)\n  \"_OBJC_CLASS_$_CTTelephonyNetworkInfo\", referenced from:\n      objc-class-ref in liblibPDRCore.a(PDRToolSystemEx.o)\n  \"_OBJC_CLASS_$_MPMusicPlayerController\", referenced from:\n      objc-class-ref in liblibPDRCore.a(PGDeviceStatus.o)\n  \"_UTTypeCopyPreferredTagWithClass\", referenced from:\n      +[PTPathUtil getMimeTypeFromPath:] in liblibPDRCore.a(PTPathUtil.o)\n  \"_UTTypeCreatePreferredIdentifierForTag\", referenced from:\n      +[PTPathUtil getMimeTypeFromPath:] in liblibPDRCore.a(PTPathUtil.o)\n  \"___gxx_personality_v0\", referenced from:\n      +[PTDevice sharedDevice] in liblibPDRCore.a(PDRToolSystemEx.o)\n      Dwarf Exception Unwind Info (__eh_frame) in liblibPDRCore.a(PDRToolSystemEx.o)\n      +[PGDeviceStatusJSBuilder sharedJSBulider] in liblibPDRCore.a(PGDeviceStatus.o)\n      Dwarf Exception Unwind Info (__eh_frame) in liblibPDRCore.a(PGDeviceStatus.o)\n      -[PTOperationQueue startAll] in liblibPDRCore.a(PTOperation.o)\n      -[PTOperationQueue schedule] in liblibPDRCore.a(PTOperation.o)\n      -[PTOperationQueue truePause] in liblibPDRCore.a(PTOperation.o)\n      ...\n  \"_crc32\", referenced from:\n      -[ZipArchive addFileToZip:newname:] in libcoreSupport.a(ZipArchive.o)\n      _unzReadCurrentFileZBQ in libcoreSupport.a(unzip.o)\n      _zipWriteInFileInZip in libcoreSupport.a(zip.o)\n  \"_deflate\", referenced from:\n      _zipWriteInFileInZip in libcoreSupport.a(zip.o)\n      _zipCloseFileInZipRaw in libcoreSupport.a(zip.o)\n  \"_deflateEnd\", referenced from:\n      _zipCloseFileInZipRaw in libcoreSupport.a(zip.o)\n  \"_deflateInit2_\", referenced from:\n      _zipOpenNewFileInZip3 in libcoreSupport.a(zip.o)\n  \"_get_crc_table\", referenced from:\n      _unzOpenCurrentFile3ZBQ in libcoreSupport.a(unzip.o)\n      _zipOpenNewFileInZip3 in libcoreSupport.a(zip.o)\n  \"_inflate\", referenced from:\n      _unzReadCurrentFileZBQ in libcoreSupport.a(unzip.o)\n  \"_inflateEnd\", referenced from:\n      _unzCloseCurrentFileZBQ in libcoreSupport.a(unzip.o)\n  \"_inflateInit2_\", referenced from:\n      _unzOpenCurrentFile3ZBQ in libcoreSupport.a(unzip.o)\n  \"_kUTTagClassFilenameExtension\", referenced from:\n      +[PTPathUtil getMimeTypeFromPath:] in liblibPDRCore.a(PTPathUtil.o)\n  \"_kUTTagClassMIMEType\", referenced from:\n      +[PTPathUtil getMimeTypeFromPath:] in liblibPDRCore.a(PTPathUtil.o)\n  \"_xmlDocGetRootElement\", referenced from:\n      -[PDRCoreSettings load] in liblibPDRCore.a(PDRCoreSettings.o)\n      -[PDRCoreUpdateParse parse:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRIDERefreshParse initWithPath:] in liblibPDRCore.a(HbuilderSyncFileParse.o)\n  \"_xmlFirstElementChild\", referenced from:\n      -[PDRCoreSettings load] in liblibPDRCore.a(PDRCoreSettings.o)\n      -[PDRCoreUpdateParse parseRemove:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRCoreUpdateParse parse:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRIDERefreshParse initWithPath:] in liblibPDRCore.a(HbuilderSyncFileParse.o)\n  \"_xmlFree\", referenced from:\n      -[DC5PAppStartParams initXmlNode:] in liblibPDRCore.a(PDRCoreSettings.o)\n      -[PDRCoreSettings load] in liblibPDRCore.a(PDRCoreSettings.o)\n      +[PDRCoreUpdateRItem parse:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRCoreUpdateParse parseRoot:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRCoreUpdateParse parseBasic:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRIDERefreshParse initWithPath:] in liblibPDRCore.a(HbuilderSyncFileParse.o)\n  \"_xmlFreeDoc\", referenced from:\n      -[PDRCoreSettings load] in liblibPDRCore.a(PDRCoreSettings.o)\n      -[PDRCoreUpdateParse parse:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRIDERefreshParse initWithPath:] in liblibPDRCore.a(HbuilderSyncFileParse.o)\n  \"_xmlGetProp\", referenced from:\n      -[DC5PAppStartParams initXmlNode:] in liblibPDRCore.a(PDRCoreSettings.o)\n      -[PDRCoreSettings load] in liblibPDRCore.a(PDRCoreSettings.o)\n      +[PDRCoreUpdateRItem parse:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRCoreUpdateParse parseRoot:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRCoreUpdateParse parseBasic:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRIDERefreshParse initWithPath:] in liblibPDRCore.a(HbuilderSyncFileParse.o)\n  \"_xmlNextElementSibling\", referenced from:\n      -[PDRCoreSettings load] in liblibPDRCore.a(PDRCoreSettings.o)\n      -[PDRCoreUpdateParse parseRemove:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRCoreUpdateParse parse:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRIDERefreshParse initWithPath:] in liblibPDRCore.a(HbuilderSyncFileParse.o)\n  \"_xmlParseFile\", referenced from:\n      -[PDRCoreSettings load] in liblibPDRCore.a(PDRCoreSettings.o)\n      -[PDRCoreUpdateParse parse:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRIDERefreshParse initWithPath:] in liblibPDRCore.a(HbuilderSyncFileParse.o)\n  \"_xmlSaveFileEnc\", referenced from:\n      -[PDRIDERefreshParse initWithPath:] in liblibPDRCore.a(HbuilderSyncFileParse.o)\n  \"_xmlSetProp\", referenced from:\n      -[PDRIDERefreshParse initWithPath:] in liblibPDRCore.a(HbuilderSyncFileParse.o)\n  \"_xmlStrcasecmp\", referenced from:\n      -[PDRCoreSettings load] in liblibPDRCore.a(PDRCoreSettings.o)\n      -[PDRCoreUpdateParse parseRemove:] in liblibPDRCore.a(UpdateFileParse.o)\n      -[PDRCoreUpdateParse parse:] in liblibPDRCore.a(UpdateFileParse.o)\nld: symbol(s) not found for architecture x86_64\nclang: error: linker command failed with exit code 1 (use -v to see invocation)<\/pre>\n<p>3.3\u3001\u5148\u4ece\u7b80\u5355\u7684\u5165\u624b\uff0c\u6700\u540e10\u4e2a\u9519\u90fd\u4ee5_xml\u5f00\u5934\uff0c\u9020\u6210\u8fd9\u4e2a\u9519\u8bef\u7684\u539f\u56e0\u662f\u6ca1\u6709\u52a0\u5165libxml2.tdb\u8fd9\u4e2a\u5e93\uff0c\u5728Linked Frameworks and Libraries\u4e0b\u6dfb\u52a0\u5c31\u80fd\u51cf\u5c1110\u4e2a\u9519\u8bef\uff0c\u79bb\u6210\u529f\u524d\u8fdb\u4e86\u4e00\u5927\u6b65\uff1b<br \/>\n3.4\u3001\u5176\u4ed6\u62a5\u9519\u4e5f\u4e00\u6837\uff0c\u5c06\u9700\u8981\u6dfb\u52a0\u7684\u5e93\u6216\u6846\u67b6\u90fd\u6dfb\u52a0\u8fdb\u6765\uff0c\u6211\u5217\u4e3e\u4e86\u4e00\u4e0b\uff0c\u4ee5\u4e0b\u90fd\u662f\u5fc5\u987b\u7684<\/p>\n<pre line=\"1\">libxml2.tbd\nlibz.tbd\nlibc++.tbd\nJavaScriptCore.framework\nWebKit.framework\nCoreLocation.framework\nAVFoundation.framework\nAssetsLibrary.framework\nAddressBook.framework\nMobileCoreServices.framework\nMediaPlayer.framework\nAudioToolbox.framework\nCoreTelephoney.framework<\/pre>\n<p>\u90fd\u6dfb\u52a0\u597d\u4e86\u4e4b\u540e\u518d\u7f16\u8bd1\u5c31\u4e0d\u4f1a\u6709\u4efb\u4f55\u62a5\u9519\u4e86\uff0c\u81f3\u5c11\u6211\u65b0\u5efa\u7684\u9879\u76ee\u662f\u6ca1\u6709\u7684\uff0c\u5982\u679c\u5728\u73b0\u6709\u7684\u9879\u76ee\u53ef\u80fd\u4f1a\u6709\u5176\u4ed6\u7684\u62a5\u9519\uff0c\u540e\u9762\u4f1a\u6162\u6162\u8bb2\u89e3\uff0c\u4e3a\u4ec0\u4e48\u8981\u6dfb\u52a0\u8fd9\u4e48\u591a\u7684\u6846\u67b6\u548c\u5e93\u5462\uff1f\u56e0\u4e3a\u8fd9\u4e2aDCloud\u7684\u63d2\u4ef6\u975e\u5e38\u591a\uff0c\u652f\u6301\u5404\u79cd\u6269\u5c55\uff0c\u800c\u5404\u79cd\u6269\u5c55\u662f\u9700\u8981\u5404\u79cd\u6846\u67b6\u6765\u652f\u6301\u7684\uff0c\u6240\u4ee5\u624d\u4f1a\u9700\u8981\u8fd9\u4e48\u591a\u3002\u4e0d\u8fc7framework\u90fd\u662f\u52a8\u6001\u5e93\uff0c\u4e0d\u7528\u62c5\u5fc3\u5360\u7528App\u7a7a\u95f4\u95ee\u9898\uff0c\u4e0d\u5f71\u54cdApp\u5305\u5927\u5c0f\u3002<br \/>\n3.5\u3001\u8fd9\u4e9b\u95ee\u9898\u90fd\u89e3\u51b3\u540e\u5c06\u5b98\u65b9\u7684H5\u5185\u5bb9\u5305\u52a0\u5165\u5230\u9879\u76ee\u4e2d\u6765\uff0c\u5c06\u5b98\u65b9\u90a3\u4e2aSDK\u5305\u91cc\u7684Pandora\u76ee\u5f55\u6dfb\u52a0\u5230\u9879\u76ee\u4e2d\uff0cAdded folders\u9009\u9879\u4e2d\u9009\u62e9Create folder references\uff0c\u8bf4\u5230\u8fd9\u91cc\u6709\u7ae5\u978b\u8981\u63d0\u95ee\u4e86\uff0cCreate folder references\u548cCreate groups\u8fd9\u4e24\u8005\u6709\u4ec0\u4e48\u533a\u522b\uff0c\u53c2\u8003\uff1a <a href=\"http:\/\/www.yusian.com\/blog\/project\/2016\/06\/22\/103447.html\" target=\"_blank\">Xcode\u5f15\u5165\u5916\u754c\u6587\u4ef6\u65f6\u9009Create groups\u6216Create folder references\u7684\u533a\u522b<\/a><br \/>\n3.6\u3001\u4e00\u5207\u51c6\u5907\u5c31\u7eea\u4e86\uff0c\u5728ViewController\u63a7\u5236\u5668\u7684viewDidApper\u65b9\u6cd5\u4e2d\u52a0\u8f7d\u9875\u9762<\/p>\n<pre lang=\"objc\" line=\"1\">\/\/\n\/\/  ViewController.m\n\/\/  DCloud\n\/\/\n\/\/  Created by Sian on 16\/7\/19.\n\/\/  Copyright ? 2016\u5e74 Sian. All rights reserved.\n\/\/\n\n#import \"ViewController.h\"\n#import \"PDRCore.h\"\n#import \"PDRCoreAppManager.h\"\n\n@interface ViewController () \n\n@end\n\n@implementation ViewController\n\n- (void)viewDidLoad\n{\n    [super viewDidLoad];\n}\n\n- (void)viewDidAppear:(BOOL)animated\n{\n    [super viewDidAppear:animated];\n    \n    \/\/ \u8bbe\u7f6e5+\u5185\u6838\u7684Delegate\uff0c5+API\u5728\u4fee\u6539\u72b6\u6001\u98ce\u683c\u548c\u5e94\u7528\u662f\u5426\u5168\u5c4f\u65f6\u4f1a\u8c03\u7528\n    PDRCore *h5Engine = [PDRCore Instance];\n    h5Engine.coreDeleagete = self;\n    h5Engine.persentViewController = self;\n    \n    \/\/ \u8bbe\u7f6e5+SDK\u8fd0\u884c\u7684View\n    UIView *content = [[UIView alloc] initWithFrame:self.view.bounds];\n    [self.view addSubview:content];\n    [[PDRCore Instance] setContainerView:content];\n    \n    \/\/ \u542f\u52a8\u8be5\u5e94\u7528\n    \/\/ \u4f20\u5165\u53c2\u6570\u53ef\u4ee5\u5728\u9875\u9762\u4e2d\u901a\u8fc7plus.runtime.arguments\u53c2\u6570\u83b7\u53d6\n    NSString* pArgus = @\"id=plus.runtime.arguments\";\n    \/\/ \u8bbe\u7f6eWebApp\u6240\u5728\u7684\u76ee\u5f55\uff0c\u8be5\u76ee\u5f55\u4e0b\u5fc5\u987b\u6709mainfest.json\n    NSString* pWWWPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@\"Pandora\/apps\/HelloH5\/www\"];\n    [[[PDRCore Instance] appManager] openAppAtLocation:pWWWPath withIndexPath:@\"index.html\" withArgs:pArgus withDelegate:nil];\n}\n@end<\/pre>\n<p>3.7\u3001\u8fd9\u4e2a\u65f6\u5019\u8fd0\u884c\u5c31\u4f1a\u5d29\u6e83\uff0c\u5d29\u6e83\u539f\u56e0\u5f88\u660e\u663e\uff0c\u524d\u9762\u6211\u4eec\u90fd\u52a0\u4e86C++\u76f8\u5173\u7684\u5e93\uff0c\u8fd9\u4e0d\u662f\u52a0\u7740\u597d\u770b\u7684\uff0c\u5728<strong>Build Settings&#8211;Other Linker Flags<\/strong>\u4e2d\u6dfb\u52a0<strong>-ObjC<\/strong>\uff0c\u6ce8\u610f\u533a\u5206\u5927\u5c0f\u5199\uff01<br \/>\n3.8\u3001\u518d\u6b21\u8fd0\u884c\u5e94\u8be5\u5c31\u5dee\u4e0d\u591a\u53ef\u4ee5\u770b\u5230\u5982\u4e0b\u6240\u793a\u9875\u9762\u4e86<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-695\" src=\"http:\/\/www.yusian.com\/blog\/wp-content\/uploads\/2016\/07\/Simulator-Screen-Shot-2016\u5e747\u670819\u65e5-\u4e0b\u53484.12.13.png\" alt=\"Simulator Screen Shot 2016\u5e747\u670819\u65e5 \u4e0b\u53484.12.13\" width=\"320\" height=\"568\" \/><\/p>\n<p>3.9\u3001\u5230\u8fd9\u91cc\u8fd8\u6ca1\u5b8c\uff0c\u4f46\u81f3\u5c11\u53ef\u4ee5\u770b\u5230\u57fa\u7840\u9875\u9762\u89c6\u56fe\u4e86\uff0c\u6bd4\u5982\u8bf4\u63a7\u5236\u53f0\u7684\u9519\u8bef\u63d0\u793a\uff1a<\/p>\n<pre line=\"1\">2016-07-19 16:08:35.771 DCloud[12786:1811138] -canOpenURL: failed for URL: \"hbuilder:\/\/\" - error: \"This app is not allowed to query for scheme hbuilder\"\n2016-07-19 16:08:35.791 DCloud[12786:1811709] App Transport Security has blocked a cleartext HTTP (http:\/\/) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.<\/pre>\n<p>\u8fd9\u91cciOS9\u53ca\u4ee5\u540e\u7684\u7279\u6027\uff0c\u9ed8\u8ba4https\u8bbf\u95ee\uff0c\u5176\u4ed6\u534f\u8bae\u5934\u7684url\u8bbf\u95ee\u9700\u8981\u5728info.plist\u6587\u4ef6\u662f\u52a0\u76f8\u5173\u53c2\u6570\uff0c\u8fd8\u6709Enable Bitcode\u8981\u8bbe\u7f6e\u4e3aNO\u4e4b\u7c7b\u7684\uff0c\u5c31\u5927\u5bb6\u81ea\u5df1\u53bb\u6162\u6162\u73a9\u5427\uff0c\u8fd9\u91cc\u91cd\u70b9\u5728DCloud\u7684\u6846\u67b6\u5f15\u5165\u5c31\u4e0d\u591a\u5c55\u5f00\u4e86\u3002<\/p>\n<p>4\u3001Demo\u4e0b\u8f7d\uff1a<a href=\"http:\/\/pan.baidu.com\/s\/1qY7u0PY\" target=\"_blank\">http:\/\/pan.baidu.com\/s\/1qY7u0PY<\/a> \u5bc6\u7801: dm3f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>0\u3001\u4e0d\u77e5\u9053\u4ec0\u4e48\u662fDCloud\u7684\u5c31\u6682\u65f6\u98d8\u8fc7\u5427\uff0c\u867d\u7136\u8fd9\u4e1c\u897f\u4e5f\u4e0d\u662f\u5f88\u6709\u540d\uff0c\u4f46\u6700\u8fd1\u6709\u7528\u5230\u8fd9\u4e2a\u5c31\u5206\u4eab\u4e00\u4e0b\u3002 1\u3001\u5b98\u65b9\u7684\u6587\u6863\u5b9e\u5728\u662f\u5199\u5f97\u592a\u968f\u610f\u4e86\uff0c\u5f88\u4e0d\u5168\u9762\u5e76\u4e14\u6709\u4e9b\u95ee\u9898\u5728\u5b98\u65b9\u6587\u6863\u751a\u81f3\u8bba\u575b\u4e2d\u6839\u672c\u5c31\u627e\u4e0d\u5230\u76f8\u5173\u89e3\u51b3\u65b9\u6848\uff0c\u8fd9\u6b21\u57fa\u4e8eXcode7.3\u4ee5\u65b0\u5efa\u4e00\u4e2a\u5de5\u7a0b\u5f00\u59cb\u4ece\u96f6\u96c6\u6210Dcloud\u6846\u67b6\uff0c\u4ee5\u53ca\u96c6\u6210\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u7684\u4e00\u4e9b\u5178\u578b\u95ee\u9898\u505a\u51fa\u89e3\u51b3\u8bf4\u660e\uff1b 2\u3001\u6846\u67b6\u96c6\u6210 2.1\u3001\u4e0b\u8f7d\u5b98\u65b9SDK\u5305\uff0c\u4e0b\u8f7d\u94fe\u63a5\u6ca1\u6709\u56fa\u5b9a\u7684URL\u6216\u9875\u9762\uff0c\u6240\u4ee5\u5404\u4f4d\u81ea\u5df1\u53bb\u5b98\u65b9\u627e\u5427\uff1b 2.2\u3001\u89e3\u538b\u51fa\u6765\uff0c\u627e\u5230\u6211\u4eec\u9700\u8981\u7684\u4e00\u4e9b\u57fa\u7840\u6587\u4ef6 Bundles&#8211;\u76ee\u5f55\u81f3\u5c11\u9700\u8981PandoraApi.bundle\u8fd9\u4e00\u4e2a\u8d44\u6e90\u5305\uff0c\u7b80\u5355\u8d77\u89c1\u5c31\u5148\u53ea\u5f15\u8fdb\u8fd9\u4e00\u4e2a\u5373\u53ef inc&#8212;&#8212;\u76ee\u5f55\u6240\u6709\u7684\u6587\u4ef6\u53ca\u76ee\u5f55\u90fd\u539f\u5c01\u4e0d\u540c\u7684\u9700\u8981 Libs&#8212;&#8211;\u76ee\u5f55\u627e\u52305\u4e2a\u9759\u6001\u6587\u4ef6libcoreSupport.a\u3001liblibNativeUI.a\u3001liblibNavigator.a\u3001liblibPDRCore.a\u3001liblibUI.a\u3001liblibWidget.a #\u8be5\u6b7b\u7684\u8fdb\u5ea6\u6761 2.3\u3001\u597d\u4e86\uff0c\u65b0\u5efa\u4e00\u4e2a\u6587\u4ef6\u5939\u6bd4\u5982\u53ebDCloud\uff0c\u7136\u540e\u628a\u4e0a\u9762\u6574\u7406\u51fa\u6765\u7684\u4e09\u4e2a\u6587\u4ef6\u5939\u653e\u91cc\u9762\uff0c\u73b0\u5728\u7ed3\u6784\u662f 2.4\u3001\u5c06\u4e0a\u9762\u8fd9\u4e2a\u76ee\u5f55\u52a0\u5165\u5230\u9879\u76ee\u4e2d\uff0cAdded folders\u8fd9\u4e2a\u9009\u9879\u9009Create groups 3\u3001\u8c03\u8bd5\u5904\u7406<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,11],"tags":[],"class_list":["post-691","post","type-post","status-publish","format-standard","hentry","category-analysis","category-project"],"_links":{"self":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts\/691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/comments?post=691"}],"version-history":[{"count":0,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts\/691\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/media?parent=691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/categories?post=691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/tags?post=691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}