第七篇 .ipa 离线包部署本地服务器安装

一.准备材料 

     1 .ipa离线包

     2 .pList配置文件

     3.进入入口

      4.https 服务器文件-ipa只支持https协议

二.部署开始

     1 .plist内容

        

        新建一个Henry1.1.0.plist【名字随便起】-文件里面内容如下:

      

<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>

<plist version=”1.0″>

<dict>

<key>items</key>

<array>

<dict>

<key>assets</key>

<array>

<dict>

<key>kind</key>

<string>software-package</string>

<key>url</key>

<string>https://b.henry.com/henry1.1.0.ipa</string><!–离线包放在https下的–>

</dict>

<dict>

<key>kind</key>

<string>display-image</string>

<key>url</key>

<string>https://b.henry.com/henry.png</string><!–图片–>

</dict>

<dict>

<key>kind</key>

<string>full-size-image</string>

<key>url</key>

<string> https://b.henry.com/henry.png</string>

</dict>

</array>

<key>metadata</key>

<dict>

<key>bundle-identifier</key>

<string>henryID</string>  <!–申请时候的bulderID–>

<key>bundle-version</key>

<string>1.0</string>

<key>kind</key>

<string>software</string>

<key>title</key>

<string>邦德云</string>

</dict>

</dict>

</array>

</dict>

</plist>

2.入口页面内容

<html lang=”zh”>

<head>

    <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

    <meta name=”viewport” content=”width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no”>

    <style>

        a {

            text-decoration: none;

        }

        .btn {

            -webkit-appearance: none;

            outline: none !important;

            -webkit-transition: all 0.1s;

            -o-transition: all 0.1s;

            transition: all 0.1s;

            display: inline-block;

            margin-bottom: 0;

            font-weight: normal;

            text-align: center;

            vertical-align: middle;

            touch-action: manipulation;

            cursor: pointer;

            background-image: none;

            border: 1px solid transparent;

            white-space: nowrap;

            padding: 10px 22px;

            font-size: 18px;

            line-height: 1.52857143;

            border-radius: 4px;

            -webkit-user-select: none;

            -moz-user-select: none;

            -ms-user-select: none;

            user-select: none;

        }

        .btn-danger {

            color:

            background-color:

            border-color:

        }

    </style>

    <style type=”text/css” abt=”234″></style>

    <script>

//remove 17173 video ad

doAdblock();

function doAdblock(){

    (function() {

        function A() {}

        A.prototype = {

            rules: {

                ‘17173_in’:{

                    ‘find’:/http:\/\/f\.v\.17173cdn\.com\/(\d+\/)?flash\/PreloaderFile(Customer)?\.swf/,

                    ‘replace’:”http://swf.adtchrome.com/17173_in_20150522.swf”

                },

                ‘17173_out’:{

                    ‘find’:/http:\/\/f\.v\.17173cdn\.com\/(\d+\/)?flash\/PreloaderFileFirstpage\.swf/,

                    ‘replace’:”http://swf.adtchrome.com/17173_out_20150522.swf”

                },

                ‘17173_live’:{

                    ‘find’:/http:\/\/f\.v\.17173cdn\.com\/(\d+\/)?flash\/Player_stream(_firstpage)?\.swf/,

                    ‘replace’:”http://swf.adtchrome.com/17173_stream_20150522.swf”

                },

                ‘17173_live_out’:{

                    ‘find’:/http:\/\/f\.v\.17173cdn\.com\/(\d+\/)?flash\/Player_stream_(custom)?Out\.swf/,

                    ‘replace’:”http://swf.adtchrome.com/17173.out.Live.swf”

                }

            },

            _done: null,

            get done() {

                if(!this._done) {

                    this._done = new Array();

                }

                return this._done;

            },

            addAnimations: function() {

                var style = document.createElement(‘style’);

                style.type = ‘text/css’;

                style.innerHTML = ‘object,embed{\

                -webkit-animation-duration:.001s;-webkit-animation-name:playerInserted;\

                -ms-animation-duration:.001s;-ms-animation-name:playerInserted;\

                -o-animation-duration:.001s;-o-animation-name:playerInserted;\

                animation-duration:.001s;animation-name:playerInserted;}\

                @-webkit-keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}\

                @-ms-keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}\

                @-o-keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}\

                @keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}’;

                document.getElementsByTagName(‘head’)[0].appendChild(style);

            },

            animationsHandler: function(e) {

                if(e.animationName === ‘playerInserted’) {

                    this.replace(e.target);

                }

            },

            replace: function(elem) {

                if(this.done.indexOf(elem) != -1) return;

                this.done.push(elem);

                var player = elem.data || elem.src;

                if(!player) return;

                var i, find, replace = false;

                for(i in this.rules) {

                    find = this.rules[i][‘find’];

                    if(find.test(player)) {

                        replace = this.rules[i][‘replace’];

                        if(‘function’ === typeof this.rules[i][‘preHandle’]) {

                            this.rules[i][‘preHandle’].bind(this, elem, find, replace, player)();

                        }else{

                            this.reallyReplace.bind(this, elem, find, replace)();

                        }

                        break;

                    }

                }

            },

            reallyReplace: function(elem, find, replace) {

                elem.data && (elem.data = elem.data.replace(find, replace)) || elem.src && ((elem.src = elem.src.replace(find, replace)) && (elem.style.display = ‘block’));

                var b = elem.querySelector(“param[name=’movie’]”);

                this.reloadPlugin(elem);

            },

            reloadPlugin: function(elem) {

                var nextSibling = elem.nextSibling;

                var parentNode = elem.parentNode;

                parentNode.removeChild(elem);

                var newElem = elem.cloneNode(true);

                this.done.push(newElem);

                if(nextSibling) {

                    parentNode.insertBefore(newElem, nextSibling);

                } else {

                    parentNode.appendChild(newElem);

                }

            },

            init: function() {

                var handler = this.animationsHandler.bind(this);

                document.body.addEventListener(‘webkitAnimationStart’, handler, false);

                document.body.addEventListener(‘msAnimationStart’, handler, false);

                document.body.addEventListener(‘oAnimationStart’, handler, false);

                document.body.addEventListener(‘animationstart’, handler, false);

                this.addAnimations();

            }

        };

        new A().init();

    })();

}

//remove baidu search ad

if(document.URL.indexOf(‘www.baidu.com’) >= 0){

    if(document && document.getElementsByTagName && document.getElementById && document.body){

        var aa = function(){

            var all = document.body.querySelectorAll(”

            for(var i = 0; i < all.length; i++){

                if(/display:\s?(table|block)\s!important/.test(all[i].getAttribute(“style”))){all[i].style.display= “none”;all[i].style.visibility=’hidden’;}

            }

            all = document.body.querySelectorAll(‘.result.c-container[id=”1″]’);

            //if(all.length == 1) return;

            for(var i = 0; i < all.length; i++){

                if(all[i].innerHTML && all[i].innerHTML.indexOf(‘广告’)>-1){

                    all[i].style.display= “none”;all[i].style.visibility=’hidden’;

                }

            }

        }

        aa();

        document.getElementById(‘wrapper_wrapper’).addEventListener(‘DOMSubtreeModified’,aa)

    };

}

//remove sohu video ad

if (document.URL.indexOf(“tv.sohu.com”) >= 0){

    if (document.cookie.indexOf(“fee_status=true”)==-1){document.cookie=’fee_status=true’};

}

//remove 56.com video ad

if (document.URL.indexOf(“56.com”) >= 0){

    if (document.cookie.indexOf(“fee_status=true”)==-1){document.cookie=’fee_status=true’};

}

//fore iqiyi enable html5 player function

if (document.URL.indexOf(“iqiyi.com”) >= 0){

    if (document.cookie.indexOf(“player_forcedType=h5_VOD”)==-1){

        document.cookie=’player_forcedType=h5_VOD’

        if(localStorage.reloadTime && Date.now() – parseInt(localStorage.reloadTime)<60000){

            console.log(‘no reload’)

        }else{

            location.reload()

            localStorage.reloadTime = Date.now();

        }

    }

}

    </script>

    <style type=”text/css”>

        object, embed {

            -webkit-animation-duration: .001s;

            -webkit-animation-name: playerInserted;

            -ms-animation-duration: .001s;

            -ms-animation-name: playerInserted;

            -o-animation-duration: .001s;

            -o-animation-name: playerInserted;

            animation-duration: .001s;

            animation-name: playerInserted;

        }

        @-webkit-keyframes playerInserted {

            from {

                opacity: 0.99;

            }

            to {

                opacity: 1;

            }

        }

        @-ms-keyframes playerInserted {

            from {

                opacity: 0.99;

            }

            to {

                opacity: 1;

            }

        }

        @-o-keyframes playerInserted {

            from {

                opacity: 0.99;

            }

            to {

                opacity: 1;

            }

        }

        @keyframes playerInserted {

            from {

                opacity: 0.99;

            }

            to {

                opacity: 1;

            }

        }

    </style>

</head>

<body>

    <div >

        <div >

            <a class=”btn btn-danger” href=”itms-services://?action=download-manifest&amp;url=https://b.henry.com/henry1.1.0.plist”>下载</a>

        </div>

        <div>

        </div>

    </div><div id=”cntvlive2-is-installed”></div>

</body>

</html>

更多技术请关注

第七篇 .ipa 离线包部署本地服务器安装

第七篇 .ipa 离线包部署本地服务器安装》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:https://www.hashtobe.com/1023.html