1
olnyshe 2013-06-20 10:44:46 +08:00
我也经常看.... 我想知道看到好的回答怎么保存下来.... - -
|
2
csx163 2013-06-20 10:51:40 +08:00
要新权限了啊,手机通话权限是什么来的
|
3
offspring 2013-06-20 11:09:36 +08:00
应该肯定可以做到 故意做成这样的 为了回答的版权和自身利益吧
|
4
taresky 2013-06-20 11:16:02 +08:00 via iPhone
竟然做成这样…… 有任何意义吗?
全文保存得打开特定答案的分享链接添加到pocket,真的很麻烦! |
5
clowwindy 2013-06-20 13:18:20 +08:00
这个版本是 10 号提交的……因为 Evernote 要用自己的私有格式,不支持直接把 HTML 塞给他,两周时间来不及做这个转换了。
|
6
Yang_NH 2013-06-20 13:22:03 +08:00
查看原文是否能直接打开知乎app而不通过网页?
|
8
Xe0n0 2013-06-20 14:31:37 +08:00
@clowwindy 如果不使用 Evernote Web API,而是用 SDK 中提供的调用 Evernote for iOS 的方式是可以直接存 HTML 的。
|
10
Xe0n0 2013-06-20 15:04:32 +08:00 1
@clowwindy
有个方法可以这样用: [[EvernoteNoteStore noteStore] saveNewNoteToEvernoteApp:note withType:@"text/html"]; 最终会调用 [[UIApplication sharedApplication] openURL:] 方法,HTML 当作 URL 的内容传给 Evernote for iOS 。 Evernote iOS SDK sample project 里完整代码是这样的: if([[EvernoteSession sharedSession] isEvernoteInstalled]) { NSString* filePath = [[NSBundle mainBundle] pathForResource:@"evernote_logo_4c-sm" ofType:@"png"]; NSData *myFileData = [NSData dataWithContentsOfFile:filePath]; NSData *dataHash = [myFileData enmd5]; EDAMData *edamData = [[EDAMData alloc] initWithBodyHash:dataHash size:myFileData.length body:myFileData]; EDAMResource* resource = [[EDAMResource alloc] initWithGuid:nil noteGuid:nil data:edamData mime:@"image/png" width:0 height:0 duration:0 active:0 recognition:0 attributes:nil updateSequenceNum:0 alternateData:nil]; NSMutableArray *resources = [NSMutableArray arrayWithObjects:resource,resource, nil]; NSMutableArray *tagNames = [NSMutableArray arrayWithObjects:@"evernote",@"sdk", nil]; EDAMNote* note = [[EDAMNote alloc] initWithGuid:nil title:@"Test Note - Evernote SDK" content:@"<strong>Here is my new HTML note</strong>" contentHash:nil contentLength:0 created:0 updated:0 deleted:0 active:YES updateSequenceNum:0 notebookGuid:nil tagGuids:nil resources:resources attributes:nil tagNames:tagNames]; [[EvernoteSession sharedSession] setDelegate:self]; [[EvernoteNoteStore noteStore] saveNewNoteToEvernoteApp:note withType:@"text/html"]; } else { [self installEvernote:self]; } 如果没有安装 Evernote for iOS 会打开一个类 App Store 界面提示安装,也还算方便。 |
11
clowwindy 2013-06-20 17:06:05 +08:00
@Xe0n0 感谢。这样就是还不能做到不跳转直接分享 HTML。
综合考虑,改成如果安装了 Evernote App,跳到 App 里分享 HTML,如果没装,直接分享纯文本的全文。 另外邮件也改为分享 HTML,这样也可以通过邮件分享给别的服务了。 |
12
so898 2013-06-20 17:38:44 +08:00
@clowwindy
你们这个项目是不是使用了https://github.com/rnapier/RNCachingURLProtocol 这个来做本地缓存啊? 能提供一下不使用CoreData的原因么? 再一个就是如果有使用以上项目的话,不知道有没有在软件中注明使用开源项目的计划? |
14
isayme 2013-06-21 14:32:30 +08:00
为什么没有网页版。。。。
|
15
clowwindy 2013-06-21 19:42:14 +08:00 1
|
16
so898 2013-06-21 19:51:21 +08:00
@clowwindy
好吧,感觉现在cache文件夹里面乱乱的…… 话说你有计划注明使用的开源项目么? 再一个就是请问一下,我觉得知道RNCachingURLProtocol这个的人挺少的,不知道你们是怎么样选中这个项目的? 有点冒昧……因为我真的第一次看到有人用…… |
18
clowwindy 2013-06-21 20:25:57 +08:00 via iPhone 1
@so898 因为产品现在还没设计关于界面,以后会加上。
当时来不及修改 API 改成图片本地化方案,就尝试了几个能做全局缓存的库,唯一能满足需求的就是这种 hack protocol 的方法。把它的逻辑稍微改了一下就能 work 了。 不过这个库有两个问题,不会自动清理缓存,把所有 post 请求变成了 get 请求。这两个问题我 fix 了,其中第二个给作者发过 PR。 以后应该会改成应用层的缓存管理,也就是资源本地化,不让 webview 自己去下载,不用这种系统 hack 了。 时间紧,设计经常反复,代码写的糙,时常自己都看不下去。 |
19
so898 2013-06-21 20:32:01 +08:00
|
21
clowwindy 2013-06-21 20:39:08 +08:00 via iPhone
@so898 数据源是用户产生的 html,各种格式,不用 webview 麻烦,android 也要搞一套。
|
24
so898 2013-06-22 02:24:24 +08:00
@clowwindy 至少都是从上到下排列的嘛,一个个区间刚好就是一个个Cell,这些不同的类型就针对制作不同的Cell就搞定了嘛
|
26
Xe0n0 2013-06-22 11:14:42 +08:00
@clowwindy
SDURLCache 是不是效果好一点? https://github.com/rs/SDURLCache 最初是在 AFNetworking 的一个 issue 里看到他们讨论发现的。 只用图片 cache 的话可以用相应的 https://github.com/rs/SDWebImage,我用过感觉不错。 |
27
Xe0n0 2013-06-22 11:15:58 +08:00
|
28
dreampuf 2013-06-22 11:20:59 +08:00 via iPhone
|
30
clowwindy 2013-06-22 13:16:05 +08:00
@oska874
V2EX 看不到回复的是几楼……不知道你是对哪句话做的回复? @Xe0n0 webview 里的只能用 protocol 去劫持,因为 webview follow HTTP 协议,过期后就让缓存失效了,cache 级别的就没用了。我们的离线逻辑要求即使现在有网,缓存过期了,也不去重新加载。所以这层的只能通过 protocol SDURLCache 在 iOS 6 上没有什么用,因为 iOS 6 本身就会缓存到闪存 SDWebImage 在用,不过是配合 UIImageView 用的 @dreampuf Evernote 的 SDK 槽点很多啊。 开发期间曾经遇到一个 bug,有一天突然分享不出 Evernote 了。查 log 发现 Evernote 提示“标题不合法”,看了很久也没看出标题不合法在哪里。最后发现今天的新闻标题里面有个回车。然后查文档,说标题要符合正则表达式 "^[^\p{Cc}\p{Z}]([^\p{Cc}\p{Zl}\p{Zp}]{0,253}[^\p{Cc}\p{Z}])?$" 才行。当时就很无语,为什么它不能自己过滤掉非法字符呢。非要让每个开发者都实现一遍过滤。 ENML 更是这样了,规则有很多条,必须是正确的 XML,符合 http://xml.evernote.com/pub/enml2.dtd ,写一个严谨的 converter 不是容易的事,我们宁愿让用户分享纯文本,也不能让用户有一天因为一个 attribute 没过滤,突然莫名其妙分享不能。所以不如就把 html 塞给 Evernote App 或者邮件发给它的服务器,让他自己去转换,肯定能转换成功。 如果我们的内容是自己生成的,而不是用户生成的,后台渲染一段 ENML 还是比较容易的。而用户产生的内容,不能简单的过滤一下了事。 之前调研的时候看到有个 App 分享给 Evernote 的方案是直接把网页截了张图塞给 Evernote,觉得很讽刺。 |
32
dreampuf 2013-06-22 21:23:13 +08:00 via iPhone
|