আইফোন সিমুলেটারে আমি কীভাবে অবস্থানটি নির্ধারণ করতে পারি?
আইফোন সিমুলেটারে আমি কীভাবে অবস্থানটি নির্ধারণ করতে পারি?
উত্তর:
আইওএস 5 হিসাবে, সিমুলেটারটির একটি কনফিগারযোগ্য অবস্থান রয়েছে।
ডিবাগ মেনুতে, সর্বশেষ এন্ট্রিটি "অবস্থান"; এটি আপনাকে এর সাথে একটি উপ মেনু দেয়:
কাস্টম অবস্থান আপনাকে একটি ল্যাট / দীর্ঘ মান প্রবেশ করতে দেয়। সাইকেল যাত্রা, সিটি রান এবং ফ্রিওয়ে ড্রাইভ একটি চলন্ত অবস্থানের অনুকরণ (অবশ্যই কাপের্টিনোতে))
অবশ্যই, এটি আইওএস 4 (বা পূর্ববর্তী) এর ডিবাগিংয়ে সহায়তা করার জন্য কিছুই করে না; তবে এটি একটি নির্দিষ্ট উন্নতি!
টেক্সটএডিট ফাইলটি নিম্নলিখিত ফাইলটিতে তৈরি করুন, উদাহরণস্বরূপ এটিকে মাইঅফিস কল করুন। .Gpx হিসাবে এক্সটেনশন করুন
<?xml version="1.0"?> <gpx version="1.0" creator="MyName"> <wpt lat="53.936166" lon="27.565370"> <name>MyOffice</name> </wpt> </gpx>
সিমুলেট অঞ্চলে এক্সকোডে নির্বাচন করুন Add GPX File to Project...
আমার প্রতিনিধি কলব্যাকে, আমি সিমুলেটারে চালাচ্ছি কিনা তা পরীক্ষা করে দেখি ( #if TARGET_ IPHONE_SIMULATOR
) এবং যদি তাই হয় তবে আমি নিজের, প্রাক-সন্ধানী, ল্যাট / লং সরবরাহ করি। আমার জানা মতে, অন্য কোনও উপায় নেই।
Debug
করে, Location
এন্ট্রিটি ব্যবহার করে সিমুলেটারের মেনুতে এখন একটি উপায় রয়েছে যা একটি কাস্টম অবস্থান নির্ধারণ করতে বা কিছু পূর্বনির্ধারিত রাইড এবং অবস্থানগুলি থেকে নির্বাচন করতে দেয় allows
Debug -> Location -> Custom Location
Features -> Location -> Custom Location
আপনার কাছে কোন এক্সকোড সংস্করণ রয়েছে তা সন্ধান করার জন্য
$ /usr/bin/xcodebuild -version
আইওএস 5 এর পূর্বে আপনি কোডটিতে এটি করতে পারেন:
আমি এই স্নিপেটটি @implementation
ক্লাসের ঠিক আগে যেখানে আমার নকল শিরোনাম এবং অবস্থানের ডেটা প্রয়োজন তার আগে ব্যবহার করি ।
#if (TARGET_IPHONE_SIMULATOR)
@interface MyHeading : CLHeading
-(CLLocationDirection) magneticHeading;
-(CLLocationDirection) trueHeading;
@end
@implementation MyHeading
-(CLLocationDirection) magneticHeading { return 90; }
-(CLLocationDirection) trueHeading { return 91; }
@end
@implementation CLLocationManager (TemporaryLocationFix)
- (void)locationFix {
CLLocation *location = [[CLLocation alloc] initWithLatitude:55.932 longitude:12.321];
[[self delegate] locationManager:self didUpdateToLocation:location fromLocation:nil];
id heading = [[MyHeading alloc] init];
[[self delegate] locationManager:self didUpdateHeading: heading];
}
-(void)startUpdatingHeading {
[self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1];
}
- (void)startUpdatingLocation {
[self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1];
}
@end
#endif
আইওএস 5 এর পরে আপনার প্রোজেক্টে একটি জিপিএক্স ফাইলটি অন্তর্ভুক্ত করুন হিলারøড.gpx: অবিরত অবস্থান আপডেট করার জন্য:
<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode">
<wpt lat="55.93619760" lon="12.29131930"></wpt>
<wpt lat="55.93625770" lon="12.29108330"></wpt>
<wpt lat="55.93631780" lon="12.29078290"></wpt>
<wpt lat="55.93642600" lon="12.29041810"></wpt>
<wpt lat="55.93653420" lon="12.28998890"></wpt>
<wpt lat="55.93660630" lon="12.28966710"></wpt>
<wpt lat="55.93670240" lon="12.28936670"></wpt>
<wpt lat="55.93677450" lon="12.28921650"></wpt>
<wpt lat="55.93709900" lon="12.28945250"></wpt>
<wpt lat="55.93747160" lon="12.28949540"></wpt>
<wpt lat="55.93770000" lon="12.28966710"></wpt>
<wpt lat="55.93785620" lon="12.28977440"></wpt>
<wpt lat="55.93809660" lon="12.28988170"></wpt>
<wpt lat="55.93832490" lon="12.28994600"></wpt>
<wpt lat="55.93845710" lon="12.28996750"></wpt>
<wpt lat="55.93856530" lon="12.29007480"></wpt>
<wpt lat="55.93872150" lon="12.29013910"></wpt>
<wpt lat="55.93886570" lon="12.28975290"></wpt>
<wpt lat="55.93898590" lon="12.28955980"></wpt>
<wpt lat="55.93910610" lon="12.28919500"></wpt>
<wpt lat="55.93861330" lon="12.28883020"></wpt>
<wpt lat="55.93845710" lon="12.28868000"></wpt>
<wpt lat="55.93827680" lon="12.28850840"></wpt>
<wpt lat="55.93809660" lon="12.28842250"></wpt>
<wpt lat="55.93796440" lon="12.28831520"></wpt>
<wpt lat="55.93780810" lon="12.28810070"></wpt>
<wpt lat="55.93755570" lon="12.28790760"></wpt>
<wpt lat="55.93739950" lon="12.28775730"></wpt>
<wpt lat="55.93726730" lon="12.28767150"></wpt>
<wpt lat="55.93707500" lon="12.28760710"></wpt>
<wpt lat="55.93690670" lon="12.28734970"></wpt>
<wpt lat="55.93675050" lon="12.28726380"></wpt>
<wpt lat="55.93649810" lon="12.28713510"></wpt>
<wpt lat="55.93625770" lon="12.28687760"></wpt>
<wpt lat="55.93596930" lon="12.28679180"></wpt>
<wpt lat="55.93587310" lon="12.28719940"></wpt>
<wpt lat="55.93575290" lon="12.28752130"></wpt>
<wpt lat="55.93564480" lon="12.28797190"></wpt>
<wpt lat="55.93554860" lon="12.28833670"></wpt>
<wpt lat="55.93550050" lon="12.28868000"></wpt>
<wpt lat="55.93535630" lon="12.28900190"></wpt>
<wpt lat="55.93515200" lon="12.28936670"></wpt>
<wpt lat="55.93505580" lon="12.28958120"></wpt>
<wpt lat="55.93481550" lon="12.29001040"></wpt>
<wpt lat="55.93468320" lon="12.29033230"></wpt>
<wpt lat="55.93452700" lon="12.29063270"></wpt>
<wpt lat="55.93438280" lon="12.29095450"></wpt>
<wpt lat="55.93425050" lon="12.29121200"></wpt>
<wpt lat="55.93413040" lon="12.29140520"></wpt>
<wpt lat="55.93401020" lon="12.29168410"></wpt>
<wpt lat="55.93389000" lon="12.29189870"></wpt>
<wpt lat="55.93372170" lon="12.29239220"></wpt>
<wpt lat="55.93385390" lon="12.29258530"></wpt>
<wpt lat="55.93409430" lon="12.29295010"></wpt>
<wpt lat="55.93421450" lon="12.29320760"></wpt>
<wpt lat="55.93433470" lon="12.29333630"></wpt>
<wpt lat="55.93445490" lon="12.29350800"></wpt>
<wpt lat="55.93463520" lon="12.29374400"></wpt>
<wpt lat="55.93479140" lon="12.29410880"></wpt>
<wpt lat="55.93491160" lon="12.29419460"></wpt>
<wpt lat="55.93515200" lon="12.29458090"></wpt>
<wpt lat="55.93545250" lon="12.29494570"></wpt>
<wpt lat="55.93571690" lon="12.29505300"></wpt>
<wpt lat="55.93593320" lon="12.29513880"></wpt>
<wpt lat="55.93617360" lon="12.29522460"></wpt>
<wpt lat="55.93622170" lon="12.29537480"></wpt>
<wpt lat="55.93713510" lon="12.29505300"></wpt>
<wpt lat="55.93776000" lon="12.29378700"></wpt>
<wpt lat="55.93904600" lon="12.29531040"></wpt>
<wpt lat="55.94004350" lon="12.29552500"></wpt>
<wpt lat="55.94023570" lon="12.29561090"></wpt>
<wpt lat="55.94019970" lon="12.29591130"></wpt>
<wpt lat="55.94017560" lon="12.29629750"></wpt>
<wpt lat="55.94017560" lon="12.29670520"></wpt>
<wpt lat="55.94017560" lon="12.29713430"></wpt>
<wpt lat="55.94019970" lon="12.29754200"></wpt>
<wpt lat="55.94024780" lon="12.29816430"></wpt>
<wpt lat="55.94051210" lon="12.29842180"></wpt>
<wpt lat="55.94084860" lon="12.29820720"></wpt>
<wpt lat="55.94105290" lon="12.29799270"></wpt>
<wpt lat="55.94123320" lon="12.29777810"></wpt>
<wpt lat="55.94140140" lon="12.29749910"></wpt>
<wpt lat="55.94142550" lon="12.29726310"></wpt>
<wpt lat="55.94147350" lon="12.29687690"></wpt>
<wpt lat="55.94155760" lon="12.29619020"></wpt>
<wpt lat="55.94161770" lon="12.29576110"></wpt>
<wpt lat="55.94148550" lon="12.29531040"></wpt>
<wpt lat="55.94093270" lon="12.29522460"></wpt>
<wpt lat="55.94041600" lon="12.29518170"></wpt>
<wpt lat="55.94056020" lon="12.29398010"></wpt>
<wpt lat="55.94024780" lon="12.29352950"></wpt>
<wpt lat="55.94001940" lon="12.29335780"></wpt>
<wpt lat="55.93992330" lon="12.29325050"></wpt>
<wpt lat="55.93969490" lon="12.29299300"></wpt>
<wpt lat="55.93952670" lon="12.29277840"></wpt>
<wpt lat="55.93928630" lon="12.29260680"></wpt>
<wpt lat="55.93915410" lon="12.29232780"></wpt>
<wpt lat="55.93928630" lon="12.29202740"></wpt>
<wpt lat="55.93933440" lon="12.29174850"></wpt>
<wpt lat="55.93947860" lon="12.29116910"></wpt>
<wpt lat="55.93965890" lon="12.29095450"></wpt>
<wpt lat="55.94001940" lon="12.29061120"></wpt>
<wpt lat="55.94041600" lon="12.29084730"></wpt>
<wpt lat="55.94076450" lon="12.29101890"></wpt>
<wpt lat="55.94080060" lon="12.29065410"></wpt>
<wpt lat="55.94086060" lon="12.29031080"></wpt>
<wpt lat="55.94092070" lon="12.28990310"></wpt>
<wpt lat="55.94099280" lon="12.28975290"></wpt>
<wpt lat="55.94119710" lon="12.28986020"></wpt>
<wpt lat="55.94134130" lon="12.28998890"></wpt>
<wpt lat="55.94147350" lon="12.29007480"></wpt>
<wpt lat="55.94166580" lon="12.29003190"></wpt>
<wpt lat="55.94176190" lon="12.28938810"></wpt>
<wpt lat="55.94183400" lon="12.28893750"></wpt>
<wpt lat="55.94194220" lon="12.28850840"></wpt>
<wpt lat="55.94199030" lon="12.28835820"></wpt>
<wpt lat="55.94215850" lon="12.28859420"></wpt>
<wpt lat="55.94250700" lon="12.28883020"></wpt>
<wpt lat="55.94267520" lon="12.28893750"></wpt>
<wpt lat="55.94284350" lon="12.28902330"></wpt>
<wpt lat="55.94304770" lon="12.28915210"></wpt>
<wpt lat="55.94325200" lon="12.28925940"></wpt>
<wpt lat="55.94348030" lon="12.28953830"></wpt>
<wpt lat="55.94366060" lon="12.28966710"></wpt>
<wpt lat="55.94388890" lon="12.28975290"></wpt>
<wpt lat="55.94399700" lon="12.28994600"></wpt>
<wpt lat="55.94379280" lon="12.29065410"></wpt>
<wpt lat="55.94364860" lon="12.29095450"></wpt>
<wpt lat="55.94350440" lon="12.29127640"></wpt>
<wpt lat="55.94340820" lon="12.29155540"></wpt>
<wpt lat="55.94331210" lon="12.29198450"></wpt>
<wpt lat="55.94315590" lon="12.29269260"></wpt>
<wpt lat="55.94310780" lon="12.29318610"></wpt>
<wpt lat="55.94301170" lon="12.29361530"></wpt>
<wpt lat="55.94292760" lon="12.29408740"></wpt>
<wpt lat="55.94290350" lon="12.29436630"></wpt>
<wpt lat="55.94287950" lon="12.29453800"></wpt>
<wpt lat="55.94283140" lon="12.29533190"></wpt>
<wpt lat="55.94274730" lon="12.29606150"></wpt>
<wpt lat="55.94278340" lon="12.29621170"></wpt>
<wpt lat="55.94280740" lon="12.29649060"></wpt>
<wpt lat="55.94284350" lon="12.29679100"></wpt>
<wpt lat="55.94284350" lon="12.29734890"></wpt>
<wpt lat="55.94308380" lon="12.29837890"></wpt>
<wpt lat="55.94315590" lon="12.29852910"></wpt>
<wpt lat="55.94263920" lon="12.29906550"></wpt>
<wpt lat="55.94237480" lon="12.29910850"></wpt>
<wpt lat="55.94220660" lon="12.29915140"></wpt>
<wpt lat="55.94208640" lon="12.29902260"></wpt>
<wpt lat="55.94196620" lon="12.29887240"></wpt>
<wpt lat="55.94176190" lon="12.29794970"></wpt>
<wpt lat="55.94156970" lon="12.29760640"></wpt>
</gpx>
আমি জিপিএক্স ডেটার জন্য বেস ফাইল তৈরি করতে জিপিএস.কম ব্যবহার করি । যদিও কিছুটা সাফাই প্রয়োজন।
সিমুলেটর চালিয়ে এবং আপনার ফাইল নির্বাচন করে সক্রিয় করুন
(উত্স: castleandersen.dk )
আপনি সহজেই করতে পারেন ভাগ কোন পছন্দসই অবস্থান থেকে MacOS মানচিত্র আবেদন করতে Xcode কাল্পনিক ।
ভৌগোলিকভাবে অবস্থানটি কোথায় (যেমন জিওফেন্সিংয়ের পরীক্ষা করার জন্য) এবং এটি পরবর্তী স্থানে কোথায় যেতে হবে তা রানটাইম স্থির করে (যেমন ডিবাগিং এবং সূক্ষ্ম-সুরকরণ স্টাফের জন্য) তা বোঝার পরে এটি আপনাকে কয়েকটি অবস্থান দ্রুত পরীক্ষা করতে দেয়।
এটি ম্যাকস ক্যাটালিনা 10.15.4 এবং এক্সকোড 11.4 এ পরীক্ষিত।
এ ধরনের লোকেরা FutureTap FTLocationSimulator বিনামূল্যে জন্য উপলব্ধ করা আছে GitHub । এটি আপনাকে উদাহরণস্বরূপ গুগল আর্থ ব্যবহার করে একটি পরীক্ষার রুট প্রস্তুত করার অনুমতি দেয় এবং তারপরে সিমুলেটরটি আপনার অ্যাপ্লিকেশনটিতে এই স্থানাঙ্কগুলি ফিড করে।
লোকেশন বৈশিষ্ট্যগুলির পরীক্ষার সময় কীভাবে সহজেই একাধিক রুটের মধ্যে স্যুইচ করতে FTLocationSimulator ব্যবহার করতে হয় সে সম্পর্কে আমি একটি ব্লগ পোস্ট লিখেছি ।
আপনি আপনার প্রকল্পে জিপিএক্স ফাইলগুলি যুক্ত করতে পারেন এবং এটি ব্যবহার করতে পারেন:
স্কিম সম্পাদনা করুন> বিকল্পগুলি> অবস্থানের সিমুলেশনকে অনুমতি দিন> ফাইলের নাম বেছে নিন যা উদাহরণস্বরূপ:
<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode">
<wpt lat="41.92296" lon="-87.63892"></wpt>
</gpx>
allyচ্ছিকভাবে কেবল স্থান / পরিচালক দ্বারা ফিরে আসা ল্যাট / ল্যান মানগুলি হার্ডকোড করুন। যদিও এটি পুরানো স্টাইল।
সুতরাং আপনি এটি সিমুলেটারে যুক্ত করবেন না, তবে আপনার এক্সকোড প্রকল্পে।
এটি লেখার হিসাবে, আইওএস সিমুলেটারের জন্য অবস্থান বিকল্পটি বৈশিষ্ট্যগুলিতে -> অবস্থান -> কাস্টম অবস্থানটিতে সরিয়ে নেওয়া হয়েছে
আগের চেয়ে ভাল দেরী :)
আমি এই আইসিমুলেটটি পেরিয়ে এসেছি যা আপনাকে অ্যাপটিতে নকল লোকেশন প্রেরণের অনুমতি দেয়। সমাধানটি নিখরচায় নয়।
> Q: How does iSimulate work?
> A: When added to your project, the iSimulate
> SDK library creates a listening server
> on your iPhone Simulator that waits
> for a connection from an iPhone/iPod
> running the iSimulate client. When
> such connection is established, the
> iSimulate client running on your
> iPhone/iPod captures all data from the
> accelerometer sensor, the touch
> events, the location and device ID and
> streams them to the server. The
> iSimulate SDK library then recreates
> all input events synthetically. This
> is entirely transparent to your
> application and does not interfere
> with your application's functionality.
যাইহোক, আমি এটি পাওয়ার পরিকল্পনা করছি। আরও শীঘ্রই আপডেট হবে!
আপনি কোথায় আপনার অবস্থান সেট করতে চান? আপনার অবস্থানের অবস্থানটি দেখানোর জন্য আপনি ম্যাপকিট এপিআই ব্যবহার করতে পারেন। ম্যাপকিট কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও তথ্যের জন্য আইকোডব্লগ.কম দেখুন। এছাড়াও আপনি আপনার পছন্দসই কর্ডিনেটগুলি সঞ্চয় করতে পারেন কেবল একটি বস্তু তৈরি করুন CLLocation2D * অবস্থান; অবস্থান.লম্বিটি = আপনার পছন্দসই দ্রাঘিমাংশ মান; লোকেশন.এলটিটিউড = আপনার কাঙ্ক্ষিত অক্ষাংশের মান;