实现网页调起PC客户端,打开会话聊天

需求:实现类似阿里旺旺,用户在网页点击发起聊天的按钮,需调起PC客户端打开对应会话,如打开会话

实现原理:
window是把自定义协议写入注册表,打开对应exe程序
mac是在Info.plist文件添加CFBundleURLTypes

Window

我们的程序是基于nsis制作的,需要在nsis脚本onInit函数里添加写注册表逻辑

合并下面的到nsis的安装脚本中,然后重新编译

注意:脚本中必须先设置了 $INSTDIR 变量

Function .onInit
  Var /GLOBAL protocol
  StrCpy $protocol "workplus"

  Var /GLOBAL app
  StrCpy $app "$INSTDIR\workplus\WorkPlus.exe" 

  SetRegView 64
  WriteRegStr HKCR "$protocol" "" "URL:$protocol Protocol"
  WriteRegStr HKCR "$protocol" "URL Protocol" ""
  WriteRegStr HKCR "$protocol\shell\open\command" "" "$\"$app$\" $\"%1$\""
  
  SetRegView 32
  WriteRegStr HKCR "$protocol" "" "URL:$protocol Protocol"
  WriteRegStr HKCR "$protocol" "URL Protocol" ""
  WriteRegStr HKCR "$protocol\shell\open\command" "" "$\"$app$\" $\"%1$\""
FunctionEnd

注意:这段代码要放在install周期去执行,不然$INSTDIR默认是C盘

Mac

选择app,右键显示内容,编辑:Info.plist

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>workplus handler</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>workplus</string>
        </array>
    </dict>
</array>

workplus handler:为handler的名字,可以为任意的值

workplus:为protocol的名字,可以为任意的值

传参

程序是基于nwjs-0.12.3的版本开发的,每次唤起App都会触发open或reopen事件,
捕获事件后可以通过函数参数或nw.App.argv[0]获取外部参数

坑: mac nwjs-0.12.3有bug, 不能获取到参数,只能升级到0.13以后的版本

window nwjs-0.12.3 参数后面会带多一个斜杠

网页调用

<a href="workplus://xxxxx" >打开会话</a>

双斜杠后面的是参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值