在后台定期检查网页

时间:2016-02-16 15:42:24

标签: swift background uiwebview

我需要定期检查一个网页。 我的想法是定期设置本地通知,例如每20分钟。当通知离开时,设备应该加载网页,检查条件,如果条件为真,设备应该响铃,否则没有。

(NOTIFICATION) -> (LOAD WEB PAGE) -> [VERIFY CONDITION]-|if true|-> (RING)

技术上可行吗?如何在应用未运行时加载网页?

我的代码草图是这样的:

func check () {

    pageCode = // find a way to load the page

    let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(NSEC_PER_MSEC * 100))
    dispatch_after(delayTime, dispatch_get_main_queue()){       

        let readCode = self.pageCode.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].outerHTML")

        if letturaCodice?.containsString("Some text") == true {
            ringPhone()
        }
    }
}

3 个答案:

答案 0 :(得分:0)

使用UILocalNotification无法使用,但您可以使用远程通知执行此操作。

Apple有一个指南:请参阅 - "使用推送通知启动下载" https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

之前使用过的远程通知平台名为OneSignal,它完全免费,可让您安排通知。 https://onesignal.com

编辑: 没有回答关于响铃的问题,不确定对不起!

答案 1 :(得分:0)

选项1:

您可以构建应用程序以使用后台应用程序刷新功能,如果我们说您没有获得200的http状态代码,则可能会发出警报。 如果你使用这个选项,你可以在函数中构建一个自定义的音调来构建应用程序。

选项2:

使用服务器端脚本检查并启动推送通知。此方法将取决于通知如何运行的电话设置。

答案 2 :(得分:0)

您可以尝试使用require_once ('app/Mage.php'); Mage::app(); // Define the path to the root of Magento installation. define('ROOT', Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)); // Obtain the general session and search for an item called 'customer_id' $core_session = Mage::getSingleton('core/session', array('name' => 'frontend')); if(isset($coreSession['visitor_data']['customer_id'])){ $customerId = $coreSession['visitor_data']['customer_id']; } else { header('Location: '.ROOT.'customer/account/login/'); } // Load the user session. Mage::getSingleton('customer/session')->loginById($customerId); $customerSession = Mage::getSingleton("customer/session"); // We verified that created successfully (not required) if(!$customerSession->isLoggedIn()) { header('Location: '.ROOT.'customer/account/login/'); } // Load customer $customer = $customerSession->getCustomer(); // We get cell phone $telefono = $customer->getTelefonoMovil(); 来运行后台进程,并在其中添加通知观察器。

UPD:像这样:

Grand Central Dispatch