ठीक है, आखिरकार यह निराशा के कई घंटों के बाद काम कर रहा है।
जब तक ऐप्पल सत्यापन को ठीक नहीं करता है, कुंजी को गतिशील रूप से रनटाइम पर वेबकिट फ्रेमवर्क से लिंक करना होता है। आपकी परियोजना पहले से ही आईओएस 7 और पहले के लिए UIWebView पर वापस आने के लिए रनटाइम चेक का उपयोग करनी चाहिए, यानी [WKWebView क्लास] की जांच करनी चाहिए।
चरण 1: परियोजना सेटिंग्स से वेबकिट ढांचे को हटाएं। अपने लक्ष्य पर जाएं -> सामान्य -> लिंक्ड फ्रेमवर्क और पुस्तकालय, और वेबकिट को हटा दें। इस बिंदु पर, आपका कोड संकलित होगा लेकिन लिंक करने में असफल होगा क्योंकि यह WKWebView और संबंधित प्रतीकों को हल नहीं कर सकता है।
चरण 2: संपादित पुस्तकालय गतिशील लोड करने के लिए अपने main.m फ़ाइल:
#import <UIKit/UIKit.h>
#import <TargetConditionals.h>
#import <dlfcn.h>
#import "MyAppDelegate.h"
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
int main(int argc, char * argv[])
{
@autoreleasepool {
// Dynamically load WebKit if iOS version >= 8
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")) {
#if TARGET_IPHONE_SIMULATOR
NSString *frameworkPath = [[NSProcessInfo processInfo] environment][@"DYLD_FALLBACK_FRAMEWORK_PATH"];
if (frameworkPath) {
NSString webkitLibraryPath = [NSString pathWithComponents:@[frameworkPath, @"WebKit.framework", @"WebKit"]];
dlopen([webkitLibraryPath cStringUsingEncoding:NSUTF8StringEncoding], RTLD_LAZY);
}
#else
dlopen("/System/Library/Frameworks/WebKit.framework/WebKit", RTLD_LAZY);
#endif
}
return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));
}
}
मैं एक क्रम OS संस्करण की जांच उपयोग करें, क्योंकि एप्पल केवल iOS 8. पुस्तकालय स्थान में शुरू होने वाले गतिशील पुस्तकालय लदान करने के सिम्युलेटर बनाम वास्तविक उपकरणों के लिए अलग है, इसलिए मैं इसके लिए जांच करने के लिए सशर्त संकलन का उपयोग करता हूं।
चरण 3: चूंकि लाइब्रेरी गतिशील रूप से लोड हो जाती है, [WKWebView क्लास] और [WKWebView alloc] को कॉल करना काम नहीं करेगा। अपने कोड के माध्यम से जाने
[WKWebView class]
// change to:
NSClassFromString(@"WKWebView")
के प्रत्येक उदाहरण बदल रहा और हर बार बदलते हैं तो आप एक WKWebView आवंटित:
[WKWebView alloc]
// change to:
[NSClassFromString(@"WKWebView") alloc]
तुम भी WKWebViewConfiguration, WKProcessPool, WKUserScript सहित संबद्ध कक्षाएं, के लिए यह करना चाहिए, और जो कुछ भी आप उपयोग कर रहे हैं। आपके द्वारा छोड़ी गई किसी भी चीज़ के लिए अपनी लिंकर त्रुटियों की जांच करें।
चरण 4: अब आपका कोड सफलतापूर्वक संकलित होना चाहिए। पैकेज, ऐप स्टोर में जमा करें, और जश्न मनाएं।
जब आपके उपयोगकर्ता आईओएस 7 पर हों तो आपको UIWebView पर वापस गिरना होगा (यह स्पष्ट नहीं है कि आप इसे आजमा रहे थे)। यह काम करना चाहिए: http://stackoverflow.com/q/25341238/1580288 – EthanB
मैं आईओएस 7 के लिए रनटाइम चेक करता हूं और UIWebView का उपयोग करता हूं। यह मेरे विकास उपकरणों पर ठीक है। मेरी समस्या यह है कि सत्यापन पास करने का प्रयास कर रहा है। धन्यवाद! – weiyin
मुझे एक ही समस्या है। मैं केवल आईओएस 8 पर वेबकिट का उपयोग करता हूं लेकिन मेरा ऐप आईओएस 7 –