いらっしゃいまし。
最近はTwitterメインです。
最近はTwitterメインです。
UIWebViewでUser-Agentを変更する
UIWebViewでサイトをみると、User-AgentがSafariと違うため、一部のサイトでは
iPhoneであると認識できずにPCサイトに連れていかれてしまいます。(Yahooとか)
ちょっと前までは
でよかったようですが、iOS4.2でやってみると期待通りには動いてくれませんでした。
色々やってみたところ、
とやると期待通りになってくれるようです。
これはUIWebViewWebViewDelegateというprotocolで、WebViewDelegateと同じ内容を
備えている非公開protocolのようです。非公開なのでこれを使って審査が通るかどうかは
未知数ですが、UIWebViewWebViewDelegateを使うと色々便利なことが出来るので、
いま作ってるアプリではバリバリ使ってみてます。
審査が通るといいなぁ。
UIWebViewWebViewDelegateは非公開なので
とやっても宣言に含まれてきません。
なので@interfaceは普通に
とだけやっておいて、.m で知らん顔して実装してしまえばUIWebViewが呼び出してくれます。=D
もちろんUIWebViewのdelegateにHogeViewControllerを設定しておく必要はありますよ。
iPhoneであると認識できずにPCサイトに連れていかれてしまいます。(Yahooとか)
ちょっと前までは
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
NSMutableURLRequest *req = (NSMutableURLRequest*)request;
[req setValue:USER_AGENT_STRING forHTTPHeaderField:@"User_Agent"];
return YES;
}
でよかったようですが、iOS4.2でやってみると期待通りには動いてくれませんでした。
色々やってみたところ、
-(NSURLRequest*) uiWebView:(id)webView
resource:(id)identifier
willSendRequest:(NSURLRequest *)request
redirectResponse:(NSURLResponse *)redirectResponse
fromDataSource:(id)dataSource
{
NSMutableURLRequest *req = (NSMutableURLRequest*)request;
[req setValue:USER_AGENT_STRING forHTTPHeaderField:@"User-Agent"];
return req;
}
とやると期待通りになってくれるようです。
これはUIWebViewWebViewDelegateというprotocolで、WebViewDelegateと同じ内容を
備えている非公開protocolのようです。非公開なのでこれを使って審査が通るかどうかは
未知数ですが、UIWebViewWebViewDelegateを使うと色々便利なことが出来るので、
いま作ってるアプリではバリバリ使ってみてます。
審査が通るといいなぁ。
UIWebViewWebViewDelegateは非公開なので
#import <UIKit/UIKit.h>
とやっても宣言に含まれてきません。
なので@interfaceは普通に
@interface HogeViewController : UIViewController<UIWebViewDelegate>
とだけやっておいて、.m で知らん顔して実装してしまえばUIWebViewが呼び出してくれます。=D
もちろんUIWebViewのdelegateにHogeViewControllerを設定しておく必要はありますよ。
Android生活 最終日
昨日で突発的にはじまったAndroid生活も終了。いやぁ、足かけ5日間という短い日程でしたが、いろいろ勉強できました。
最終日はAsyncTaskで非同期処理。
これはかなり便利なクラスで、他の処理系にもぜひほしいくらい。UI操作はメインスレッドに制限されているAndroidですが、これがあればそんなに気にならない。自分でThread起こすのが面倒に感じるくらい。
HandlerといいAsyncTaskといい、Androidは非同期処理のための機構が充実してますね
それにしても、まったくAndroidの経験がない状態で開発末期の修羅場に参加するという、かつてないほどチャレンジャーなお仕事でしたが、一応役に立てたみたいだし、勉強もできたのでとてもよかったです。
iPhoneからの投稿
最終日はAsyncTaskで非同期処理。
これはかなり便利なクラスで、他の処理系にもぜひほしいくらい。UI操作はメインスレッドに制限されているAndroidですが、これがあればそんなに気にならない。自分でThread起こすのが面倒に感じるくらい。
HandlerといいAsyncTaskといい、Androidは非同期処理のための機構が充実してますね
それにしても、まったくAndroidの経験がない状態で開発末期の修羅場に参加するという、かつてないほどチャレンジャーなお仕事でしたが、一応役に立てたみたいだし、勉強もできたのでとてもよかったです。
iPhoneからの投稿
Android生活 四日目
Android生活も後半戦、四日目に突入です。
四日目ともなるともうあまり新しいことはなく、
GridView使ってみたことくらいでしょうか。
ハマりはいっぱいあって、とにかくEclipseが落ちる、固まるが強烈です。
どうもそれなりにProjectを開いているとHeapが不足するようで、
最後はHeapが足りませんといって固まります。
eclipse.iniでheapを増やそうとしても、なぜか512MBより大きくすると起動時にエラーになるし。
これには参った。
あと他のProjectを参照してときに、なぜかそちらのProjectのclassが含まれず、
ClassNotFoundExceptionやNoClassDefErrorなどが出たりとか。
こういうときは、ProjectのPropertiesを開いていったんProjectの参照を解除してダイアログを閉じ、
もう一度Propertiesを開いて参照しなおすと直ったりするみたいです。
今回はこの方法で直りました。
普段使ってるEclipseではそう簡単にheap不足にならないんだけどなぁ。
AndroidのPluginが相当メモリを食べまくるのでしょうか?
四日目ともなるともうあまり新しいことはなく、
GridView使ってみたことくらいでしょうか。
ハマりはいっぱいあって、とにかくEclipseが落ちる、固まるが強烈です。
どうもそれなりにProjectを開いているとHeapが不足するようで、
最後はHeapが足りませんといって固まります。
eclipse.iniでheapを増やそうとしても、なぜか512MBより大きくすると起動時にエラーになるし。
これには参った。
あと他のProjectを参照してときに、なぜかそちらのProjectのclassが含まれず、
ClassNotFoundExceptionやNoClassDefErrorなどが出たりとか。
こういうときは、ProjectのPropertiesを開いていったんProjectの参照を解除してダイアログを閉じ、
もう一度Propertiesを開いて参照しなおすと直ったりするみたいです。
今回はこの方法で直りました。
普段使ってるEclipseではそう簡単にheap不足にならないんだけどなぁ。
AndroidのPluginが相当メモリを食べまくるのでしょうか?
