在项目中用UIWebView根据请求链接加载一篇文章,产品要求在导航栏上加一个分享按钮将这边文章分享出去,但是在当前的页面也就只能获取请求文章的链接,分享的模板需要有标题,子标题,还有图片,还有点开分享出去的跳转链接。
后台不允许增加字段,跟前端开发大佬商量后,大佬介绍说试试通过请求链接拿到cookie中的数据,他会把要分享出去的内容加在cookie上,类似字典去获取,我第一次听到感觉是一脸懵逼的,后面了解一下,终于通过cookie获取到相应的数据。
以下是代码实现案例
-(void)shareBtnClick
{
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [storage cookiesForURL:self.webView.request.URL];
NSEnumerator *enumerator = [cookies objectEnumerator];
NSHTTPCookie *cookie = nil;
while (cookie = [enumerator nextObject]) {
if ([cookie.name isEqualToString:@"share"]) {
//获取cookie中的数据
NSData *data = [[NSData alloc] initWithBase64EncodedString:cookie.value options:0];
NSDictionary *responseJSON = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
NSArray *urls = [responseJSON[@"url"] componentsSeparatedByString:@"?"];//去除token等参数,如果没有分隔符,返回字符串本身
//分享出去的打开链接
NSString *shareUrl = urls.count ? urls[0]:nil;
//分享的模型 @"title"分享标题 @"text"分享的文本 @"imgUrl" 分享的图片资源路径
ShareItem *shareItem = [ShareItem shareItemWithTitle:responseJSON[@"title"] text:responseJSON[@"text"] imageUrl:responseJSON[@"imgUrl"] url:shareUrl];
//展示分享面板
[shareItem share];
}
}
}