問題文:
私のアプリには 2 つのオプションがあります。
- デモ
- お客様
デフォルト ページには上記の 2 つのオプションが表示されます。ユーザーが顧客を選択すると、アプリは次回起動時にデフォルト ページを自動的にスキップする必要があります (つまり、ユーザーは顧客のホームページにリダイレクトされます)。
解決策は次のとおりです。
偽の URL
- ユーザーが 2 つのオプションのいずれかを選択すると、アプリは偽の URL にアクセスします。
window.location.href="myfakeurl.html*デモ*params"
この URL に追加されたパラメーター: customer または demo (** で区切られた)
- MainViewController.m 内
URL ヒットを処理する次のメソッドを追加します。
-(BOOL) webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *url = [[request URL] absoluteString];
NSArray *myarray=[[NSArray alloc]init];
if(url.length > 0)
{
NSLog(@"%@",url);
if ([url hasPrefix:@"myfakeurl"])
{
myarray=[url componentsSeparatedByString:@"**"];
NSString *params=[myarray objectAtIndex:1];
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"www"];
path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *str = @"//";
path = [NSString stringWithFormat:@"file:%@%@/homepage.html%@",str,path,params];
NSURLRequest *newRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:path]] ;
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isCustomer"];
[[NSUserDefaults standardUserDefaults] synchronize];
[theWebView loadRequest:newRequest];
return NO;
}
} return [super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType]; }
- 今AppDelegate.mで
nsuserdefaults でキーを確認し、以下に示すように起動ページを適切に設定します。
-(BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
//その他のコード
//...
self.viewController.startPage = [[NSUserDefaults standardUserDefaults] boolForKey:@"isCustomer"] ? @"homepage.html" :
@"default.html"; //......
return YES; }