私はiOS開発にはかなり新しく、どこにでも問題を解決する答えを見つけることができません。 UIWebViewを使用して、ユーザーが最初にログインする必要のあるアプリケーションを作成しています。 ユーザーがログインすると、アプリに持ち込まれますが、バックグラウンドでは、サーバーは各ユーザーに固有の認証キーを渡しています。 例 ユーザはwww.example.com/loginというURLにログインします。 ログインに成功すると、URLはwww.example.com/key/jsaeglihndzlgasknに変更され、終了ビットは取得する必要のあるキーとなります。 URLの最後のセグメントを取得するメソッドがありますが、変更するものではなく開始URLが必要です。iOS UIWebViewでiOSトラッキングURLが変更され、返されたデータを取得
NSString *absoluteString= _webView.request.URL.absoluteString;
NSArray* foo = [absoluteString componentsSeparatedByString: @"/"];
NSUInteger arrsize = [foo count];//count the size of array
NSString* bar = foo[arrsize-1];//get last element
すべてのヘルプは大規模
編集
私のコードは、今どのように見えるかこれはあるが、私はそれは、任意のヘルプは、これが動作するようになり取得する必要があるとして、それはまだ機能していないと認識されるであろう大変感謝します。
NSString *urlString = @"https://probablyrational.com/alpha/dashboard/register/?callback=inline";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[_webView loadRequest:urlRequest];
NSString* absoluteString = [url absoluteString];
NSArray* foo = [absoluteString componentsSeparatedByString: @"/"];//explode() .split()
NSUInteger arrsize = [foo count];//count the size of array
NSString* bar = foo[arrsize-1];//get last element
NSLog(@"bar %@", bar);
//bar = "?callback=inline"
if ([foo[arrsize-2] isEqualToString:@"key"]) {
// user is authenticated
NSLog(@"bar %@", bar);
- (BOOL)_webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *URLString = [[request URL] absoluteString];
if ([URLString isEqualToString:@"https://probablyrational.com/alpha/key"]) {
// The user reached step 3!
}
return YES;
}
EDIT私のコードは、現在実行しているが、まだURLの変更を追跡されていない2
..
NSString *urlString = @"https://probablyrational.com/alpha/dashboard/register/?callback=inline";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[_webView loadRequest:urlRequest];
NSString* absoluteString = [url absoluteString];
NSArray* foo = [absoluteString componentsSeparatedByString: @"/"];//explode() .split()
NSUInteger arrsize = [foo count];//count the size of array
NSString* bar = foo[arrsize-1];//get last element
NSLog(@"bar %@", bar);
//bar = "?callback=inline"
if ([foo[arrsize-2] isEqualToString:@"key"]) {
// user is authenticated
NSLog(@"bar %@", bar);
}
}
- (BOOL)webView:(UIWebView *)webView didFinishLoading:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *absoluteString = [[request URL] query];
if ([absoluteString isEqualToString:@"https://probablyrational.com/alpha/key"]) {
// The user reached step 3!
(NSLog(@"this is the code you're looking for"));
return YES;
}
else
{
(NSLog(@"this is not code you're looking for"));
return 0;
}
}
私は、i」は救命になり仕事にこれを取得することができますどのように任意の手掛かりこの時点でスタックされています
この回答はあなたが必要とするものでなければなりません - http://stackoverflow.com/questions/2834946/get-notified-about-a-page-change-in-uiwebview – davedavedave
あなたのコードは、デバッグ目的のために正当なものと思われます。最初のNSLogのabsoluteStringをステップバイステップで実行し、それが何を記録するかを確認してください。NSMutableStringに変更すると、うまくいきません。どのようにあなたがそれを見つけたか教えてください – Honey
私はその1つを使って試してみましたが、うまくいきませんでした。あなたに感謝します。 –