2016年馬上就要過去了,回首在公司的一年中,工作遇到了不少坑,也學到了不少新知識,至少對于我來說是新知識_,特此騰出時間記錄一下,程序員、語死早,一些話表達不清楚只能靠代碼和截圖了,見諒見諒。
本篇博文,分三個篇幅:PHP、Ionic、AngularJs。都是在工作項目中接觸到的,還有nodejs,但是接觸時間比較短,還是先多學學。
二、Ionic
Ionic既是一個CSS框架也是一個Javascript UI庫。許多組件需要Javascript才能產生神奇的效果,盡管通常組件不需要編碼,通過框架擴展可以很容易地使用,比如我們的AngularIonic擴展。
Ionic遵循視圖控制模式,通俗的理解和 Cocoa 觸摸框架相似。在視圖控制模式中,我們將界面的不同部分分為子視圖或包含其他視圖的子視圖控制器。然后視圖控制器“驅動”內部視圖來提供交互和UI功能。一個很好的例子就是標簽欄(Tab Bar)視圖控制器處理點擊標簽欄在一系列可視化面板間切換。
ionic整合極光推送插件
APP一般都需要用到消息推送,公司當初選擇了極光推送,還行,到達率和準確率都不錯,而且免費…
首先是插件安裝
Git地址 https://github.com/jpush/jpush-phonegap-plugin.git
安裝步驟git上都有就不重復說明了(別打臉_)
然后是JS部分的代碼
//極光推送初始化
var _init = function () {
//啟動極光推送服務
window.plugins.jPushPlugin.init();
//調試模式
window.plugins.jPushPlugin.setDebugMode(true);
//點擊通知欄觸發
document.addEventListener("jpush.openNotification", function (event) {
var alertContent;
if (device.platform == "Android") {
alertContent = window.plugins.jPushPlugin.openNotification.alert;
var data = window.plugins.jPushPlugin.openNotification;
//業務代碼
} else {
alertContent = event.aps.alert;
//業務代碼
// alert("openNotification:" + alertContent);
}
}, false);
//應用內觸發
document.addEventListener("jpush.receiveNotification", function (event) {
var alertContent;
if (device.platform == "Android") {
alertContent = window.plugins.jPushPlugin.receiveNotification.alert;
var data = window.plugins.jPushPlugin.openNotification;
//業務代碼
} else {
alertContent = event.aps.alert;
//業務代碼
// alert("receiveNotification:" + alertContent);
}
}, false);
//應用內消息
document.addEventListener("jpush.receiveMessage", function (event) {
var alertContent;
if (device.platform == "Android") {
alertContent = window.plugins.jPushPlugin.receiveMessage.message;
} else {
alertContent = event.content;
var confirmPopup = $ionicPopup.confirm({
title: '您有新的消息',
template: alertContent, //從服務端獲取更新的內容
cancelText: '取消',
okText: '查看'
});
confirmPopup.then(function (res) {
if(res){
//業務代碼
}
})
}
// alert("receiveMessage:" + alertContent);
}, false);
//獲取極光推送的id,記得弄個定時器延遲1-2秒獲取,這是個坑
$timeout(function () {
window.plugins.jPushPlugin.getRegistrationID(function (id) {
alert(id);
});
}, 4000);
};
//啟動極光推送
_init();
關于統計代碼報錯
如果遇到統計方面的報錯,可以修改插件內的一個文件,據說生產環境不修改也不會有影響,沒有去測試
文件名和參考路徑:
D:\App\platforms\android\src\com\csm\mallappMainActivity.java
修改為(不懂java,捂臉):
package com.csm.mallapp;
import android.os.Bundle;
import org.apache.cordova.*;
//引入
import cn.jpush.android.api.JPushInterface;
public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
}
//主要是加上以下代碼
@Override
protected void onResume(){
super.onResume();
JPushInterface.onResume(this);
}
@Override
protected void onPause(){
super.onPause();
JPushInterface.onPause(this);
}
}
最后分享同時記錄一下關于ionic熱更新
APP上線發布以后,如果www文件夾下的HTML、CSS、JS代碼發生了改變,可以使用cordova-hot-code-push這個插件進行熱更新,不需要重新發布新版本
Git地址 https://github.com/nordnet/cordova-hot-code-push
具體還可以參考以下兩個博文
ionic熱更新插件cordova-hot-code-push的使用
ionic cordova熱更新