2011-08-19 10 views
10

आकस्मिक खेलों में एक आम शोषण गेमप्ले में आगे बढ़ने के लिए कृत्रिम रूप से सिस्टम घड़ी को अग्रिम करना है। आईओएस डिवाइस पर ऐप द्वारा इस तरह के उपयोगकर्ता घड़ी की प्रगति का पता कैसे लगाया जा सकता है?ऐप रन के बीच उपयोगकर्ता द्वारा आईफोन घड़ी की प्रगति का स्थानीय रूप से पता कैसे लगाया जा सकता है?

  • नेटवर्क संचार
  • कल्पना नहीं चाहिए ऐप्स के खुले होने को शामिल नहीं करना चाहिए (चल या निलंबित), जबकि घड़ी उन्नत
  • घड़ी उन्नति का पता लगाने चाहिए है, घड़ी रोलबैक का पता लगाने के लिए पर्याप्त नहीं है

आदर्श रूप में , समाधान रीबूट के खिलाफ मजबूत होगा, लेकिन यह एक आवश्यकता नहीं है।

+1

ऐसा नहीं लगता कि यह नेटवर्क संचार के बिना किया जा सकता है। जीपीएस रिसीवर 'ऐसा कर सकता है', लेकिन मुझे नहीं लगता कि यह एपीआई में किसी भी समय सामान का खुलासा करता है। डिवाइस रीबूट पर – iandotkelly

उत्तर

1

मैं इस तथ्य के बारे में सोच रहा था कि कोरलोकेशन सामान यह कर सकता है अगर जीपीएस डेटा का वह हिस्सा आपको सामने लाया गया था। हालांकि मुझे यह सोचने लगा।

मेरा एकमात्र (दूरसंचार) सुझाव पृष्ठभूमि प्रसंस्करण में कुछ डालना है - जो कि कारणों के एक छोटे से विशिष्ट सेट में से एक के लिए होना चाहिए, उदाहरण के लिए पृष्ठभूमि में स्थान ट्रैक करने के लिए। इसके दुष्प्रभाव के रूप में, नियमित टाइमर पर घड़ी परिवर्तन का पता लगाने का प्रयास करें। ऐप्पल इसे अस्वीकार कर सकता है क्योंकि यह स्पष्ट हो सकता है कि यह स्थान की जानकारी का उपयोग नहीं कर रहा है और यह पृष्ठभूमि प्रसंस्करण का फायदा उठाने का एक कारण है।

नेटवर्किंग शामिल नहीं होने वाला कोई भी समाधान है लागू करने के लिए बहुत कठिन है, मुझे आश्चर्य है कि आप इसका उपयोग क्यों नहीं कर रहे हैं।

11

CACurrentMediaTime & mach_absolute_time

इस सवाल पर एक नज़र डालें:

iOS: How to measure passed time, independent of clock and time zone changes?

Calculating number of seconds between two points in time, in Cocoa, even when system clock has changed mid-way

CACurrentMediaTime mach_absolute_time उपयोग करता है: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreAnimation_functions/Reference/reference.html

यहाँ आप http://www.informit.com/blogs/blog.aspx?b=02b4e309-308c-468a-bab1-cebb1404be6a

यहाँ आप mach_absolute_time पर एक अधिक जानकारी है: कैसे CACurrentMediaTime का उपयोग करने पर एक उदाहरण है http://developer.apple.com/library/mac/#qa/qa1398/_index.html http://shiftedbits.org/2008/10/01/mach_absolute_time-on-the-iphone/

+1

mach_absolute_time रीसेट करता है। यह ठीक है अगर कोई उपयोगकर्ता रीबूट करके धोखाधड़ी का पता लगाता है, लेकिन यह ठीक नहीं है कि रिबूटिंग गलत तरीके से उन्हें घड़ी के रूप में फ़्लैग करता है। –

+0

इसके अलावा, यहां बेन डोडसन के अच्छे ब्लॉग पोस्ट के आधार पर, http://bendodson.com/weblog/2013/01/29/ca-current-media-time/, यह काम नहीं करेगा अगर डिवाइस कुछ के लिए सो गया नाटकों के बीच का समय क्योंकि यह CACurrentMediaTime (और इसलिए mach_absolute_time पर आधारित है, क्योंकि यह उस पर आधारित है) केवल सक्रिय डिवाइस समय को अपटाइम नहीं मानता है। – stuckj

0

जबकि मैं इसे मज़बूती से निर्धारित करने के लिए किया जाए या नहीं उपयोगकर्ता को मैन्युअल रूप है संभव है नहीं लगता है नेटवर्क पहुंच के बिना अपनी घड़ी को आगे बढ़ाया, आप निश्चित रूप से निर्धारित कर सकते हैं कि वे समय पर वापस यात्रा कर चुके हैं या नहीं। और चूंकि हम इसे शारीरिक रूप से असंभव होने के बारे में जानते हैं, इसलिए यह माना जा सकता है कि उन्होंने अपनी घड़ी को धोखा देने में छेड़छाड़ की है।

मेरा मतलब यह है कि कुछ एक्शन ऐप को ट्रिगर करने की सामान्य प्रक्रिया नहीं है, जिसमें प्रतीक्षा की अवधि की आवश्यकता होती है, ऐप से बाहर निकलें और घड़ी को आगे बढ़ाएं, ऐप को फिर से लॉन्च करें जो भी वे थे घड़ी के लिए इंतजार कर रहे हैं और फिर वास्तविक समय पर वापस रीसेट करें?

यदि यह वास्तव में मामला है, तो @smgambel द्वारा सुझाव पर निर्माण करने के लिए, आप प्रत्येक लॉन्च पर भौतिक समय और वर्तमान समय-क्षेत्र संग्रहीत कर सकते हैं और पहले संग्रहीत समय और समय क्षेत्र के साथ तुलना कर सकते हैं।यदि समय पिछला संग्रहीत समय के पीछे है, और डिवाइस का समय-क्षेत्र बदल नहीं गया है तो आप सुरक्षित रूप से मान सकते हैं कि उपयोगकर्ता ने घड़ी को छेड़छाड़ की है।

संबंधित मुद्दे

 संबंधित मुद्दे