6

我通过使用 html 在我的 iPhone 应用程序中使用 Skype 集成。当我加载页面时,它将显示用户是在线还是离线。当我按下在线按钮时,我的应用程序将关闭,Skype 将打开。但是,当我按下离线按钮时,它会发生与上面相同的事情。我使用以下代码在 webview 中设计 Skype 按钮以显示用户的 Skype 在线状态和 Skype 呼叫。

<a href="skype:arafa_futbal?call">
<img src="http://mystatus.skype.com/smallclassic/arafa_futbal" style="border: none;"
width="114" height="20" alt="My status" />
</a>

我的问题是当用户离线时如何禁用 webview?

即,如果我按下离线按钮,它不应该做任何事情..

4

2 回答 2

1

您可以控制 HTML 吗?如果是这样,请用于http://mystatus.skype.com/arafa_futbal.xml决定是否创建 Skype 链接。

一个警告:我不知道我是否一直未选中“允许我的在线状态显示在网络上”,或者这是否是默认设置,但它对我不起作用,除非我在“隐私设置。

如果您无法控制 HTML,那么我不知道如何使用 UIWebView。

于 2012-11-14T09:14:02.210 回答
0

这将解决你的问题。在nsurlconnection中调用url http://mystatus.skype.com/arafa_futbal.xml获取xml数据并解析得到用户skype状态

NSURL *url = [NSURL URLWithString:@"http://mystatus.skype.com/arafa_futbal.xml"stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
[req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[req addValue:0 forHTTPHeaderField:@"Content-Length"];
[req setHTTPMethod:@"GET"];
conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if (conn) {
webData = [[NSMutableData data] retain];
}

-(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
  [webData setLength:0];
}
-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
  [webData appendData:data];
}

-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
xmlParser = [[NSXMLParser alloc] initWithData:webData];
[xmlParser setDelegate:self];
[xmlParser setShouldResolveExternalEntities:YES];
 [xmlParser parse];
}
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
}

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
   if ([string isEqualToString:@"Offline"]) 
   {
     webview.userinteractionEnabled = NO;
   }
   if ([string isEqualToString:@"Online"]) 
   {
     webview.userinteractionEnabled = YES;
   }
 }
于 2012-11-14T13:57:58.767 回答