鍍金池/ 問答/ HTML問答
愛是癌 回答

IPv6 相關(guān)內(nèi)容被拒

如果產(chǎn)品因 IPv6 問題被拒,首先要確認代碼是否有問題。若確定沒有問題的話,重新提交 1~2 次即可,這種情況多數(shù)是審核人員所在的網(wǎng)絡(luò)環(huán)境導致的問題(可在重新提交時將截圖或拍下視頻放附件里或直接向蘋果申訴)。

如果 App 本身有問題,例如不兼容 IPv6,最好的辦法是讓 App 兼容 IPv6 或通過升級服務(wù)器來支持 IPv6

解決方案一

蘋果AppStore審核員在美國的IPv6-Only環(huán)境下對APP進行訪問(審核),如果APP Server支持IPv6,則可直接訪問;如果APP Server不支持IPv6,則通過DNS64 +NAT64進行訪問;很明顯,大部分開發(fā)者的APP服務(wù)器都是不支持IPv6直接訪問的,所以基本是用NAT64+DNS64進行訪問的。那么我們就先了解NAT64+DNS64的訪問機制吧,直接看圖:

Image

從這里看出審核的關(guān)鍵在于能不能獲取一個有效的Server IPv6地址。當蘋果公司的APP審核員在進行審核時,由于國內(nèi)大部分開發(fā)者的APPserver沒有IPv6地址,只能通過蘋果公司自己的NAT64+DNS64服務(wù)器進行測試,而最關(guān)鍵的是蘋果的服務(wù)器不能有效的給APPserver返回一個IPv6地址,這就導致了審核失敗,APP被拒。

就國內(nèi)目前來說審核被拒的主要原因有第三個:

1、國內(nèi)大部分APP服務(wù)器沒有IPv6地址,導致DNS無法解析;

2、蘋果公司的審核環(huán)境不能自動將中國APP內(nèi)URL轉(zhuǎn)換成IPv6可訪問的格式,導致訪問失??;

3、由于國際線路帶寬嚴重擁堵等原因造成訪問不穩(wěn)定,失敗率高

那么該如何解決這些問題呢?

就目前國內(nèi)的現(xiàn)狀,能夠提供這種服務(wù)的當屬教育網(wǎng)了,中國教育網(wǎng)坐擁全國幾百所高校,擁有真實的IPv6骨干網(wǎng)絡(luò),國際出口,IPv6資源豐富,服務(wù)質(zhì)量好。

因此解決方案就是使用教育網(wǎng)的NAT64+DNS64服務(wù),方案示意圖如下:

Image

具體的操作步驟就是使用教育網(wǎng)的NAT64+DNS64,把您的域名發(fā)給我們,幫你解析出IPv6地址(全球可達的地址),您只需在您的域名管理中添加一條4A記錄即可,之后就可以提交審核了,一天之后你就會發(fā)現(xiàn)審核通過了!

解決方案二

既然審核被拒是因為IPV6,那么我們就讓服務(wù)器支持就可以了,但是很多運營商的服務(wù)器不提供IPv6地址,這樣的話就要使用IPv6隧道技術(shù),通過建立隧道使自己的服務(wù)器通過IPv6隧道來支持IPv6,方案示意圖如下:

Image

使用IPv6隧道服務(wù)APP服務(wù)器必須滿足三個條件:

① 服務(wù)器擁有公網(wǎng)IPv4地址

② 服務(wù)器支持IPv6協(xié)議

③ 服務(wù)器放行6in4協(xié)議

具體的配置如下:(這里只是舉個例子)

Image

確認申請了IPv6隧道服務(wù)并按照上述模板進行配置完成后,請檢查防火墻(iptables)是否放行了6in4協(xié)議,并確認(/etc/sysctl.conf)中IPv6轉(zhuǎn)發(fā)已打開。如果上述操作都已正確完成,那么在你的服務(wù)器上應(yīng)該可以看到如下結(jié)果:

Image

至此,IPv6隧道搭建完畢,服務(wù)器已經(jīng)支持IPv6了這樣就OK了

夢一場 回答

把拉取順序倒置一下,在生成消息模板的時候,就預(yù)先把要接收的用戶分發(fā)出去;

生成message_content表數(shù)據(jù),要選擇下發(fā)的用戶,選完用戶可以把這些用戶ID存放在redis中,然后用戶上線的時候,從redis中讀取,有數(shù)據(jù)就給提示,用戶已查看,就刪除,然后存入message表。

(如果不用redis,直接插入message表也行,只需要插入message_content_iduser_id就可以了,讀取狀態(tài)字段在數(shù)據(jù)表中默認設(shè)置為0未查看,然后采用批量插入的方式,也挺快的)

結(jié)合一下 @lscho 的數(shù)據(jù)表設(shè)計就差不多了。


以上推送模式都有一個缺點:就是消息模板不能實時推送給用戶,必須要用戶下次登陸或者觸發(fā)某個頁面,才能得到消息。workerman的消息推送框架了解一下

大濕胸 回答

不行的,要么就自己實現(xiàn)拖拽

挽青絲 回答

“讓我回去再看看”,怕是少了個 decodeURIComponent
犀牛書上有一段:

function urlArgs() {
    var args = {}
    var query = location.search.substring(1)
    var pairs = query.split("&")
    for (var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf("=")
        if (pos == -1) continue
        var name = pairs[i].substring(0, pos)
        var value = pairs[i].substring(pos + 1)
        value = decodeURIComponent(value)
        args[name] = value
    }
    return args
}
愚念 回答
  1. 驗證服務(wù)器地址
  2. 記錄日志
  3. 查看微信服務(wù)器白名單:開發(fā)--基本配置--ip白名單
  4. 查看響應(yīng)頭信息
  5. 使用postman模擬微信請求
柚稚 回答

safari在播放采用H264編碼格式壓縮或碼率超過1024kbps的視頻時會出現(xiàn)問題,下面是一個壓縮視頻的參數(shù)設(shè)置有效性參照表:圖片描述

希望對你有幫助.

莫小染 回答

config/index.js這個文件夾里應(yīng)該有個proxyTable: {},把你要的接口路由加上去。

proxyTable: {
    'adm': 'http://localhost:8080/'
}
青裙 回答

不知道你情況是否跟我一樣
如果你也定義了偽靜態(tài)規(guī)則

偽靜態(tài)規(guī)則改成下面這樣

if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php) {
rewrite (.*) $1/index.php;
}
if (!-f $request_filename) {
rewrite (.*) /index.php;
}

update:
第二次安裝沒有開啟ssl,只不過同樣開始偽靜態(tài),安裝完成后同樣進不了后臺,修改偽靜態(tài)規(guī)則就好了

P.S 我是用一鍵lnmp安裝腳本裝的環(huán)境

情殺 回答

1.你這是數(shù)學問題,不是程序問題
2.你說順序不限,那就是可以重復,任意5個數(shù)里選三個數(shù),那就是5x5x5=125種組合
3.推而廣之,n個數(shù)里選m個數(shù),那就是n的m次方Math.pow(n,m)

雅痞 回答

可以在執(zhí)行npm run dev之前加個eslint校驗

偽碼:

...
"script": {
   "eslint": "eslint a.js",
   "dev":"eslint && webpack ...."
}
...

如果你使用IDE,其實更建議你在IDE中安裝eslint校驗,這樣也能時時的處理不規(guī)范的地方。

妖妖 回答

為啥要用span去包img?
要實現(xiàn)垂直居中又很多方法,個人推薦用flex布局,類似這樣:

//html
<div>
  <img/>
  <img/>
</div>
//css
 div{
  display:flex;
  align-item:center
}
div>img{
//自定義高度與寬度
}

如果要學flex布局,推薦阮一峰的。

澐染 回答

首先 你看看其他的.vue文件,有 new Vue 的嗎?
沒有對吧。

愚念 回答

不建議直接修改node_modules中的文件...
如果你換了一個環(huán)境,在別人npm install 之后你沒辦法去處理的.
如果需要對其源碼進行修改,直接將其js直接拷出來放到static中去進行修改.
這樣也方便webpack打包啊~

話寡 回答

看看第一張圖,resolve(phone), 哪里來的 phone 變量?所以就 undefined 嘍

把 resolve(phone) 放到 let phone = getPhone.phoneNumber 后面才對啊,這才是正確的 resolve 這個 promise 時機

======= 更新 ====

getSessionKey 返回的是 Promise , phone = getSessionKey() 這樣寫是不對的,要么 .then 要么用 async/await :

phone = await getSessionKey() 
安于心 回答

首先better-scroll本身是沒有touchend事件的,是有touchEnd,touchend是原生js事件,其次better-scroll你是想上拉加載更多吧(這是上拉),要開啟這個功能就要設(shè)置pullUpLoad,這個默認是false,你可以設(shè)置true,當然可以設(shè)置數(shù)值,這樣達到了目標才觸發(fā)pullingUp事件,pullingUp就是上拉觸發(fā)的事件,當你加載數(shù)據(jù)完成后還要調(diào)用finishPullUp告訴 better-scroll 數(shù)據(jù)已加載。

    this.meunScroll = new BScroll(document.getElementsByTagName('main')[0], {
                        click: true,
                        scrollY: true,                        
                          pullUpLoad:{
                              threshold: -70, // 負值是當上拉到超過低部 70px;正值是距離底部距離 時,                    
                          }
                   });
                   
 this.meunScroll.on("pullingUp",function(){  
       console.log("000")
           this.$nextTick(function(){   
       this.meunScroll.finishPullUp();                                    
        this.meunScroll.refresh();  
      });
       })             
青黛色 回答

debugger一下,確定data[0].Title是否有值。

墻頭草 回答

我以前的做法是這樣的:
在componentDidMount里面異步加載組件(服務(wù)端渲染不會執(zhí)行到這里), 把加載到的組件賦值到state