A call of help from iOS developers out there. I am trying to recognize different Ad Networks in mobile phones. For this the only data available to me are the URL from HTTP headers from the Apps and browser. I could identify certain Ad Networks like Admob, Jumptap easily with the url structure. For example, the admob one is something like this:
http://a.admob.com/*
http://p.admob.com/*
But I can't figure how to identify iAds from Apple. Does anyone know what kind of URLs these produce?
Okay. I've done some snooping into the matter with the aid of a couple of iPhones and my local firewall/web proxy server here, and this is what I've found:
Alas, no hostnames to help you, either. The requests for both banners and ad units have IP addresses in the URLs, not hostnames. Which IP addresses, incidentally, appear to be Akamai content distribution servers all over the place; the addresses I've seen have mostly been in 70.183.* and 174.*, but no guarantees on that point.
The URL structures I've seen are quite complex. Stripping out and replacing with ~ the parts which I've observed varying over the few hundred requests I've sniffed gives me this as a URL pattern for a banner request:
http://~~~~~~~~/~~~~~~~.ad/AdUnit/WebArchive.webarchive
http://~~~~~~~~/~~~~~~~.ad/Creatives/~~~~~~/HTMLBanner/WebArchive.webarchive
http://~~~~~~~~/~~~~~~~.ad/Creatives/~~~~~~/ImageBanners/~~~~~~~.png
And this for an actual ad being downloaded after a banner touch:
http://~~~~~~~~/adunits/~~~~~~~~~~~/1.ad/AdUnit/~~~~~~~~~~~
What may be of more use, if you don't have any need to distinguish ad banner displays from clickthroughs, is to look for the user agent, which for all the banner requests is "AdSheet/1.0". (Noting of course that there are multiple banner requests for any given banner being downloaded - all the different sizes the app writer indicates to iAd that he wants to use; and also that this is NOT the case when ad content is being downloaded, which just uses the iPhone's regular user agent. But if all you're wanting to do is detect that iAd is in use, etc., that probably doesn't matter so much.)
It seems that it uses https with Akamai for the content distribution. Checking the iAd framework for text strings reveals https://iadsdk.apple.com/adserver, which looks promising as the base address from which the list of ads are loaded.
Your best bet here is to snoop the actual urls that the device is using. There are many ways to do this, some involving Jailbreaking, but the way described on TUAW seems to be pretty good. This way you can observe many ads and look for common traits.
Related
I've noticed in the AWS console that our website got a lot of more requests than normally. Especially in the night hours (Europe time).
Then I've checked the nginx logs and now I know that a lot of devices with different IP addresses request the root of the website, most of them with the user agent swcd (unknown version) CFNetwork/978.0.7 Darwin/18.7.0. Sometimes one of the versions is different.
I have absolutely no idea what is going on so I hope that someone can help.
swcd runs on iOS and macOS devices and will periodically attempt to access /apple-app-site-association and /.well-known/apple-app-site-association. This is used for several features which mediate between an Apple native app and the web, including Shared Web Credentials, Handoff, and Universal Links.
This process will typically run overnight in the user's local time zone, but specific timing is not guaranteed.
See also Setting Up an App’s Associated Domains for more information on associated domains.
Hard to guess the cause of the spike without knowing more about your product - but some possible causes:
you recently released an update to your iOS or macOS app
a larger customer just signed up for your service or rolled out your product to more employees
a larger customer just deployed an iOS or macOS operating system update to their managed devices
Anyway, I would ignore the spike. If it's causing you trouble, ensure your load balancer is configured correctly.
Recently this same behavior was detected by our CDN and our WAF's, and what we detected here in some clients, was a botnet doing enumeration of users in a distributed way, there is even a name for it, user enumeration spraying.
Anyone who doesn't know how web attacks work would say this is normal.
Looks to me like someone with a botnet is trying to take advantage of the shared web credentials to compromise your site, doing it at night to try to avoid detection. Other evidence is the "a lot of devices with different IP addresses request the root of the website". If it was just a "viral" event, just certain classes of devices would show, rather than a wide diversity of devices. Accessing the root of the web-site -- these are devices that have never been to your site before. It's not a denial of service attack because they are doing it at night, therefore not denying anybody their service, and night is the natural time for break-ins.
I'm not a cracker myself, just an old-school developer, and I'm not even terribly familiar with ios, but I could not remain silent while there was a possibility that your web site was attacked without you at least suspecting and investigating. HTH.
Apologies in advance for the general-ness of the question.
I'm writing a multiple client iOS app for viewing the video feed from a single camera. Can the QX10 api support two (or 3) iPad's discovering/viewing the same QX10 at the same time?
I've been looking QX10 sample code, the camera api docs, StackOverflow, and of course the dev website and haven't seen an answer. I'd just buy the bloody thing to test with, but there are none nearby and I was hoping to avoid having to mail order/return it if it didn't work.
....And we're not locked into HW. If there's a better option, I'm open....
I don't believe it does. For ios, the camera creates a network that the ios connects to. (In ios settings/wireless) Any further attempts to connect to the camera from another device fail. Since the API only works after a network connection is established, I don't see how the API could possibly allow 2 devices could connect at once.
(No extraneous words in this post b/c that will get edited which auto down votes the question.....ahhh internet)
I did not try it, but you could use a computer with nat. For example an openrwt router to open up multiple wifi interfaces, one to connect to the camera, using the 10.0.0.0 network the camera uses and then an other network to connect your clients with NAT.
The question would be when the API would start to get confused.
So depending on what you want, maybe some mapper on that helper-computer could
do some proxying of information.
So in theory with an external box, maybe, but as Oldmicah said, it seems that only
one device can connect at the time (at least my QX100 also behaves like that). :(
Ok, I have a client who is a utility provider (like power, water, etc). They want their customers to be able to pay their bill from an iOS app. Since this isn't a product will it be okay to use an alternative payment gateway using WebView?
This specific usage sounds fine. Apple doesn't allow you to sell app content through anything but the store, but taking payment for an entirely external service should be fine, there are dozens of similar apps for general payment processing (LevelUp, 4square, etc.), and this is the same sort of thing, just for a more specific debt.
That said, if all your app is is a WebView wrapper for your site, Apple will reject it because of that. An app that wraps a webview must additionally use a nontrivial amount of native functionality.
In general, if your application is just a UIWebView embedded in a UIView, it will almost certainly be rejected. What is the benefit of an application embedding a mobile version of the website, compared to just loading the mobile site in the default Safari web browser?
If you are going to do this, Apple requires that the application be more than just a web browser loading a default URL. This can be one component of the app, but it cannot be the only component.
Building a multi player iOS game where players compete one against the other. Nature of the game is synchronous. Basically, players either invite each other through facebook, email, etc and then start playing.
We debate what is the best strategy for facilitating the real time communication between players (sending events, etc). Coming from web development, we used comet and long polling which worked great. However, it's not clear what's the best way to achieve that on iOS.
Seems like APN (Apple Push Notifications) is not suitable in our case for two reasons: the delay can be pretty significant, up to few seconds, as far as we understand. Also, using APN requires the user to authorize notifications. If the user doesn't authorize this then it won't be possible to play the game.
Also, we understand Apple's Game Kit (Game Center) can be of value in our case however it's not clear how it interacts with invites through facebook etc. Also, not clear if we need to get into bed with Apple's Game Center and how it'll affect the user experience.
Any guidance on this matter as well as other options that you might think of would be greatly appreciated.
Thanks for your help.
Before you read the rest, a disclaimer: I work for Realtime.co but I do believe I can help here so I'm not trying to "pitch a sale".
If you need to have real time updates, you can check out Realtime (www.realtime.co). It's basically a set of tools for developers to use real time technologies on their projects. It uses websockets but does fallback to whatever the user's browser supports (such as long polling, for example) if you are using a browser (which is not your case, but it's always good to know).
Behind Realtime you have a one-to-one/one-to-many/many-to-many messaging system that will transport your messages to and from your users.
There's a iOS API too which you can use in your project. You can download it here: http://www.xrtml.org/downloads_62.html#ios and check the documentation here: http://docs.xrtml.org/getting_started/hello_message.html#ios.
There's also a plus which is the fact that the Realtime framework is actually cross-platform. This means that you can even have your iOS players to communicate with players using Android, Windows Phone, HTML5, Flash, etc. if you decide on expanding your game to other platforms.
I hope that helps!
I'll just provide some insights on the question.
APN should never be used for synchro communication as for iOS at least, you'll never have both way communication (basically the Apple APN servers are pushing an information to the device).
You should probably play with C sockets in order to open a tunnel (depends if your game is real time or not).
Using the Apple Framework GameKit is great! But might take some time to understand all the functionnalities.
Check out Gree
https://developer.gree.net/en/
Parse:
https://www.parse.com/
Sparrow:
http://gamua.com/sparrow/
There are a few things that your talking about, there is the joining/starting of a game, and then the communication between the players. They are not necessarily related.
You can use game-center and at the same time another framework for facebook, they are not mutually exclusive (but it would be more work.)
I want to get to know how I can transfer data easily between 2 iPhones, over wifi. I would like to know if I could do that without having a server or database, but within an app (so without using email).
Game Kit has support for Peer-to-Peer-Connectivity and is, despite the name, not only usable for games:
The GKSession class allows your application to create and manage an
ad-hoc Bluetooth or local wireless network, as shown in Figure 1.
Copies of your application running on multiple devices can discover
each other and exchange information, providing a simple and powerful
way to create multiplayer games on iOS. Further, sessions offer all
applications an exciting mechanism to allow users to collaborate with
each other.
You can also check out Bonjour API from Apple. I am not sure if you need a static IP for it to work or it can just work over wifi. Just trying to give a pointer.
Based on your exact usecase, it can work well.
Check it out here, Game center is also there.
http://developer.apple.com/technologies/ios/networking.html