ionic2/3實戰(zhàn)-開發(fā)微信公眾號

微信的各種號

服務號,訂閱號,企業(yè)號這三個號的配置和開發(fā)文檔都是一樣的.只是這三個號的擁有能力不一樣,如服務號每個月只能推送三條消息.訂閱號可以每天推送一條消息.更多不同看這里
小程序是微信新出的開發(fā)平臺.開發(fā)需要用微信定義的語言規(guī)范,配置也和以上三個號差異大.這里不多說.文檔可以看這里

微信開放平臺是什么鬼?假如你公司有服務號也有小程序, 現(xiàn)在想要服務號和小程序有關(guān)系就要把服務號和小程序綁定在同一個微信開放平臺帳號上
小明用他的微信登錄你公司的服務號和小程序獲取的OpenID(微信用戶id)是不一樣的.如果服務號和小程序都需要綁定手機號碼,就需要小明綁定兩次.
既然是同一個公司的產(chǎn)品,就應該區(qū)分出是同一個用戶,這樣同一個用戶的資料就可以在不同的產(chǎn)品中共享.
當把服務號和小程序都綁定在一個微信開放平臺賬號下,就能獲取到小明的UnionID.這個ID在服務號和小程序上獲取到的值是一樣的

  • 現(xiàn)在已經(jīng)有5個號.分別是服務號,訂閱號,企業(yè)號,小程序和微信開放平臺

如果你用a@xxx.com郵箱申請了服務號,就不能用它申請其他號了
如果你用b@xxx.com郵箱申請了小程序帳號,現(xiàn)在公司要開發(fā)第二個小程序.那就需要用c@xxx.com郵箱再申請一個小程序帳號
微信開放平臺,小程序等帳號可能需要微信認證.如果需要認證.每次認證費用是300元.如果有你公司有兩個小程序需要認證,那你就乖乖交600元

微信公眾號開發(fā)

  • 微信公眾號的開發(fā)分兩部分

1.公眾號開發(fā):公眾號有發(fā)送消息,設置菜單等功能.這些功能都可以在公眾號帳號中設置,也可以通過調(diào)用微信的接口用代碼開發(fā)實現(xiàn).由于運營公眾號的人基本沒有開發(fā)能力,現(xiàn)在公眾號的設置功能已經(jīng)很全面.沒必要通過開發(fā)實現(xiàn)這些功能
2.公眾號網(wǎng)頁開發(fā):公眾號一般有許多菜單,有時候點擊菜單需要跳轉(zhuǎn)到一個網(wǎng)頁.這個網(wǎng)頁相當一個移動端web應用,需要完全自主開發(fā).我們用ionic也就是開發(fā)這個網(wǎng)頁應用

  • ionic微信網(wǎng)頁開發(fā)主要需要實現(xiàn)的功能

1.調(diào)用微信授權(quán).獲取用戶信息
2.調(diào)用微信js-sdk.實現(xiàn)拍照,定位,掃一掃等js-sdk提供的硬件功能

  • ionic微信網(wǎng)頁開發(fā)需要熟讀的文檔

1.文檔地址鏈接如果失效,請自行前往微信公眾平臺查看
2.需要熟讀的文檔如下圖

開發(fā)環(huán)境準備

用微信掃描二維碼即可生成測試帳號.如下圖會看到appID和appsecret,這兩個字符串用于我們的后臺服務器請求微信的服務器.


  • 配置測試帳號的js安全域名

在命令行使用ipconfig查看本機ip地址,如下圖我的ip是88.128.18.144


設置JS接口安全域名,如下圖填寫ip+端口.由于ionic項目默認啟動端口是8100,為了方便我這里配置的端口也是8100.注意:不能以http,www開頭,也不能以/結(jié)尾

如下圖,頁面滾動條往下拉,還要修改一個地方.

  • 所有需要測試的微信(包括你的)都需要關(guān)注測試二維碼
  • 由于微信公眾號授權(quán)和js-sdk等功能需要在微信環(huán)境下調(diào)用.所以需要下載微信web開發(fā)者工具,我下載下來啟動白屏,可能和小程序開發(fā)工具沖突.于是使用小程序開發(fā)工具開發(fā)公眾號,兩個工具很類似

    微信web開發(fā)者工具

    小程序web開發(fā)工具

  • 用申請微信測試帳號的微信登錄開發(fā)工具

ionic代碼準備

本demo只提供ionic微信公眾號基礎開發(fā)功能和微信JsSdk調(diào)用demo,更多demo請查看ionic2_tabs

  • 使用ionic serve啟動ionic2_wx模版項目,前提肯定是配置好了ionic開發(fā)環(huán)境
  • 默認啟動地址是http://localhost:8100/.我們使用前面配置的js安全域名(ip+端口)在微信開發(fā)工具上訪問
  • 初始化JsSdk需要的數(shù)據(jù),需要我們自己的服務器請求微信服務器得到


后臺說明

  • 我們開發(fā)的微信公眾號請求的后臺是我們自己的服務器,我們的后臺服務器通過appIDappsecret去訪問微信的服務器,最終還是我們自己的服務器給我們開發(fā)的微信公眾號返回微信信息
    對微信來說我們的服務器就是第三方.所以在看微信開發(fā)文檔的時候,第三方指的是我們自己的服務器
  • 微信Java SDK開發(fā)文檔-微信公眾號開發(fā)文檔
  • 我的測試號配置如下

  • java代碼獲取微信JsSdk配置代碼demo
    @ApiOperation(value = "獲取jssdk配置")
    @PostMapping("/jsConfig")
    public ResultBean<WxJsapiSignature> jsConfig(@ApiParam(value = "頁面完整url,js安全域名", required = true) @RequestBody String url) {
        WxMpInMemoryConfigStorage config = new WxMpInMemoryConfigStorage();
        config.setAppId("wx8e82d2ea44552544");
        config.setSecret("51e019a9bc09b4a46fb852bfab64d67e");
        WxMpService wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(config);
        try {
            WxJsapiSignature wxJsapiSignature = wxMpService.createJsapiSignature(url);
            return ResultBean.success(wxJsapiSignature);
        } catch (WxErrorException e) {
            e.printStackTrace();
        }
        throw new BusinessException("配置生成失敗");
    }
  • 在微信開發(fā)者工具上調(diào)試,如下圖微信JsSdk初始化成功就可以調(diào)用硬件功能了


微信真機調(diào)試

在微信開發(fā)工具上調(diào)試JsSdk功能有限,如掃一掃,添加照片功能都是模擬

  • 由于微信安全限制,在真機微信上打開ip+端口地址會跳出微信環(huán)境使用普通瀏覽器模式打開頁面.如下圖1.所以需要域名訪問,
  • 配置域名映射到本地ip,如何配置?方法1:看訪問自定義的域名
  • 方法2:如下圖2,使用natapp生成域名映射到本地ip
  • 域名映射到本地ip后,記得一定要修改js安全域名,否則會報"微信授權(quán)回調(diào)域名出錯"上面已經(jīng)說了要修改哪里.如下圖3,修改完成微信訪問域名進行調(diào)試.
    圖1

    圖2

    圖3

常見問題

點擊返回按鈕會退出ionic微信應用

這個問題是因為ionic是單頁面應用.默認就是只有一個頁面,在微信上點擊返回就退出了
解決這個問題要使用ionic3提供的@IonicPage()注解,使用了@IonicPage()的組件,可以使用字符串跳轉(zhuǎn)頁面.如 this.navCtrl.push('字符串');

使用域名調(diào)試訪問很慢

ionic是單頁應用,單頁應用其中一個缺點就是首屏加載文件大,導致加載慢.
如果你覺得用域名調(diào)試加載慢,那就使用npm run build --prod壓縮代碼.壓縮后的代碼在www目錄下
用tomcat作為服務器訪問壓縮后的代碼.第一步修改tomcat啟動端口為8100,第二步修改tomcat默認啟動路徑為ionic項目www目錄絕對路徑.如何使用和配置tomcat?看Tomcat使用教程

如何發(fā)布ionic微信公眾號項目

1.使用npm run build --prod壓縮代碼,壓縮后的代碼在www目錄下
2.以生產(chǎn)環(huán)境用tomcat服務器為例.把整個www目錄下的文件拷貝到tomcat目錄下.如webapps目錄或ROOT目錄.Tomcat-簡易使用教程
3.真機微信訪問tomcat應用發(fā)布地址即可

項目發(fā)布到了正式環(huán)境有bug,怎么調(diào)試

用微信開發(fā)工具訪問正式環(huán)境地址進行調(diào)試

另外一個同事也想在他的電腦上調(diào)試

方式1:修改JS接口安全域名和網(wǎng)頁授權(quán)回調(diào)頁面域名為他的電腦ip,并且他的微信要關(guān)注測試號二維碼
方式2:他自己開通一個新的測試帳號.注意一定要讓后臺修改appIDappsecret為他新申請的

緩存問題(應用更新后慕嚷,但是刷新頁面沒有看到更新,怎么辦异旧?)

  • 如下圖調(diào)用腳本根據(jù)文件內(nèi)容生成hash值仅讽,這樣每次更新內(nèi)容生成的文件名不一樣磁椒,就不存在緩存了。腳本源碼

  • 如下以nginx為例服務端配置靜態(tài)資源緩存策略:不緩存html痘绎,長期緩存js泉哈、css

# 讓html不緩存蛉幸,js、css和圖片長期緩存
# 設置expires會給請求同時添加Cache-Control和Expires請求頭

if ($request_filename ~* \.html$){
    expires     -1;
}
if ($request_filename ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$){
    expires    max;
}
  • 最后可以把腳本加入到package.json文件的scripts中丛晦,可以使用webstorm的快捷方式運行奕纫,可以使用npm run build:prod:browser運行
    "build:prod:browser": "ionic build --prod --engine browser && node ./scripts/use-hashname.js"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市烫沙,隨后出現(xiàn)的幾起案子匹层,更是在濱河造成了極大的恐慌,老刑警劉巖锌蓄,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件升筏,死亡現(xiàn)場離奇詭異,居然都是意外死亡瘸爽,警方通過查閱死者的電腦和手機您访,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剪决,“玉大人灵汪,你說我怎么就攤上這事「塘剩” “怎么了享言?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長妒茬。 經(jīng)常有香客問我担锤,道長,這世上最難降的妖魔是什么乍钻? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任肛循,我火速辦了婚禮,結(jié)果婚禮上银择,老公的妹妹穿的比我還像新娘多糠。我一直安慰自己,他們只是感情好浩考,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布夹孔。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搭伤。 梳的紋絲不亂的頭發(fā)上只怎,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音怜俐,去河邊找鬼身堡。 笑死,一個胖子當著我的面吹牛拍鲤,可吹牛的內(nèi)容都是我干的贴谎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼季稳,長吁一口氣:“原來是場噩夢啊……” “哼擅这!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起景鼠,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤仲翎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后铛漓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谭确,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年票渠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芬迄。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡问顷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出禀梳,到底是詐尸還是另有隱情杜窄,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布算途,位于F島的核電站塞耕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嘴瓤。R本人自食惡果不足惜扫外,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望廓脆。 院中可真熱鬧筛谚,春花似錦、人聲如沸停忿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吮铭,卻和暖如春时迫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谓晌。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工掠拳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扎谎。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓碳想,卻偏偏與公主長得像,于是被迫代替她去往敵國和親毁靶。 傳聞我的和親對象是個殘疾皇子胧奔,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評論 25 707
  • title: 微信公眾號開發(fā):獲取openId和用戶信息 tags: 微信公眾號 categories: 筆記 ...
    行徑行閱讀 140,171評論 5 63
  • 開發(fā)前首先我們要知道一些概念 各公眾號區(qū)別:1、訂閱號:為媒體和個人提供一種信息傳播方式预吆,主要偏于為用戶傳達資訊(...
    CoderZS閱讀 3,180評論 1 19
  • 老貓不是一只貓龙填,老貓是個老頭子,一個很早之前就死了老伴的老頭子拐叉。這一片幾個小區(qū)的人都認識老貓岩遗,因為他是個閑人,而且...
    斑斑的四喜丸子閱讀 550評論 0 2
  • 現(xiàn)在是2016年9月17日凌晨一點四十六分凤瘦,我失眠了宿礁。昨晚喬任梁死亡的消息占據(jù)了各大網(wǎng)站的熱搜,原本我是不相信的...
    微半微半閱讀 336評論 0 2