V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
yayanet
V2EX  ›  iDev

类似微信的 WeixinJSBridge(webview 客户端通信)怎么实现比较好?

  •  
  •   yayanet ·
    yayanet · 2014-05-30 19:51:16 +08:00 · 5111 次点击
    这是一个创建于 3829 天前的主题,其中的信息可能已经有所发展或是发生改变。
    功能有两个:

    1. 判断当前web页是不是在某个客户端内(客户端也是自己开发的)
    2. 在客户端内的WebView调用JS来唤起客户端页面,用户做一系列操作后把结果返回给WebView的JS回调


    类似微信接口:
    WeixinJSBridge.invoke('editAddress',{ "appId" : getAppId(),
    "scope" : "jsapi_address", "signType" : "sha1", "addrSign" : "xxxxx", "timeStamp" : "12345", "nonceStr" : "10000",
    },function(res){
    //若 res 中所带的返回值不为空,则表示用户选择该返回值作为收货地
    址。否则若返回空,则表示用户取消了这一次编辑收货地址。 document.form1.address1.value =
    res.proviceFirstStageName; document.form1.address2.value =
    res.addressCitySecondStageName; document.form1.address3.value =
    res.addressCountiesThirdStageName;
    document.form1.detail.value = res.addressDetailInfo;
    document.form1.phone.value = res.telNumber;
    }); });

    有什么好的方式实现?
    3 条回复    2014-05-30 23:53:30 +08:00
    special
        1
    special  
       2014-05-30 23:02:54 +08:00
    我做 Android 的,就说说 Android 吧。

    第二个不难,可以看 Google 官方 Document -> http://developer.android.com/reference/android/webkit/WebView.html

    直接贴个 DEMO 代码 ->

    class JsObject {
    @JavascriptInterface
    public String toString() { return "injectedObject"; }
    }
    webView.addJavascriptInterface(new JsObject(), "injectedObject");
    webView.loadData("", "text/html", null);
    webView.loadUrl("javascript:alert(injectedObject.toString())");

    至于第一点,能力有限,感觉想出来的方法都能被破掉,微信的 Oauth2.0 方式也许可以参考。
    zythum
        2
    zythum  
       2014-05-30 23:19:31 +08:00
    yakczh
        3
    yakczh  
       2014-05-30 23:53:30 +08:00
    微信订阅以后,每天自动发的消息 是通过那个接口发送的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1500 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:14 · PVG 01:14 · LAX 09:14 · JFK 12:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.