Responsive Web Design

Responsive Web design is the approach that suggests that design and development should respond to the user’s behavior and environment based on screen size, platform and orientation. The practice consists of a mix of flexible grids and layouts, images and an intelligent use of CSS media queries. As the user switches from their laptop to iPad, the website should automatically switch to accommodate for resolution, image size and scripting abilities. In other words, the website should have the technology to automatically respond to the user’s preferences. This would eliminate the need for a different design and development phase for each new gadget on the market.

The Concept Of Responsive Web Design

It’s hard to talk about responsive design without mentioning its creator, Ethan Marcotte. If you haven’t read his seminal article about responsive web design, I highly recommend you check it out (seriously, this is required reading). In the article, Ethan discusses all the key ideas that form responsive web design; and that’s really what responsive design is, technically. It’s not a single piece of technology, but rather, a set of techniques and ideas that form a whole. This is one of the main sources of confusion, and in a moment we’ll break things down and take a look at each part.

So, what is responsive design exactly? Actually, a better question to ask might be, what problem does responsive web design solve? Well, as you may have noticed, computers aren’t the only piece of hardware with a web browser anymore. I might get myself in trouble by saying this, but the iPhone was one of the first mobile devices to feature a really great web browser, and it really put the spotlight on upgrading the experience of the mobile web. Many other devices followed suit and, seemingly overnight, the face of the mobile web had changed.

The changing landscape of web browsers meant that users expectations also changed; people expected to be able to browse the web on their phones just as easily as they browse the web on a desktop computer. So, in response to this (if you’ll excuse the pun) the web design community started creating mobile versions of their websites. In hindsight, this wasn’t really the way forward, but at the time it seemed like a reasonable idea. Every website would have their normal ‘desktop’ version of their site, and as a bonus, a ‘mobile’ version.

Technology never stops marching forward, so not long after the phone hardware market had been revolutionized, other form factors surged in popularity. In addition to phones and personal computers, devices like touchscreen tablets and small notebook computers (netbooks, if you prefer the term) started appearing everywhere.

It’s not just small screens, either. Large, high-resolution displays are starting to become much more common than they used to be, and it would be a waste for web designers to not take advantage of this.

In summary, the spectrum of screen sizes and resolutions is widening every day, and creating a different version of a website that targets each individual device is not a practical way forward. This is the problem that responsive web design addresses head on.

Previously, I mentioned that responsive web design is not a single piece of technology, but rather, a collection of techniques and ideas. Now that we have a better idea of the problem space we’re addressing, let’s take a look at each part of the solution.

Adjusting Screen Resolution

With more devices come varying screen resolutions, definitions and orientations. New devices with new screen sizes are being developed every day, and each of these devices may be able to handle variations in size, functionality and even color. Some are in landscape, others in portrait, still others even completely square. As we know from the rising popularity of the iPhone, iPad and advanced smartphones, many new devices are able to switch from portrait to landscape at the user’s whim. How is one to design for these situations?

Image

In addition to designing for both landscape and portrait (and enabling those orientations to possibly switch in an instant upon page load), we must consider the hundreds of different screen sizes. Yes, it is possible to group them into major categories, design for each of them, and make each design as flexible as necessary. But that can be overwhelming, and who knows what the usage figures will be in five years? Besides, many users do not maximize their browsers, which itself leaves far too much room for variety among screen sizes

Image

Fluid Grids

The first key idea behind responsive design is the usage of what’s known as a fluid grid. In recent memory, creating a ‘liquid layout’ that expands with the page hasn’t been quite as popular as creating fixed width layouts; page designs that are a fixed number of pixels across, and then centered on the page. However, when one considers the huge number of screen resolutions present in today’s market, the benefit of liquid layouts is too great to ignore.

Fluid grids go a few steps beyond the traditional liquid layout. Instead of designing a layout based on rigid pixels or arbitrary percentage values, a fluid grid is more carefully designed in terms of proportions. This way, when a layout is squeezed onto a tiny mobile device or stretched across a huge screen, all of the elements in the layout will resize their widths in relation to one another.

In order to calculate the proportions for each page element, you must divide the target element by its context. Currently, the best way to do this is to first create a high fidelity mockup in a pixel based imaged editor, like Photoshop. With your high fidelity mockup in hand, you can measure a page element and divide it by the full width of the page. For example, if your layout is a typical size like 960 pixels across, then this would be your “container” value. Then, let’s say that our target element is some arbitrary value, like 300 pixels wide. If we multiply the result by 100, we get the percentage value of 31.25% which we can apply to the target element. Here’s the math:

Image

If your values don’t work out so neatly, and you get some floating point value with many numbers after the decimal, don’t round the value! We humans may enjoy nice neat numbers and making our code look pretty, but your computer (and the final look of your design) will benefit from the seemingly excessive mathematical precision.

Fluid grids are a very important part of creating a responsive design, but they can only take us so far. When the width of the browser becomes too narrow, the design can start to severely break down. For example, a complex three-column layout isn’t going to work very well on a small mobile phone. Fortunately, responsive design has taken care of this problem by using media queries.

Flexible Images

One major problem that needs to be solved with responsive Web design is working with images. There are a number of techniques to resize images proportionately, and many are easily done. The most popular option, noted in Ethan Marcotte’s article on fluid images but first experimented with by Richard Rutter, is to use CSS’s max-width for an easy fix.

img { max-width: 100%; }

As long as no other width-based image styles override this rule, every image will load in its original size, unless the viewing area becomes narrower than the image’s original width. The maximum width of the image is set to 100% of the screen or browser width, so when that 100% becomes narrower, so does the image. Essentially, as Jason Grigsby noted, “The idea behind fluid images is that you deliver images at the maximum size they will be used at. You don’t declare the height and width in your code, but instead let the browser resize the images as needed while using CSS to guide their relative size”. It’s a great and simple technique to resize images beautifully.

Note that max-width is not supported in IE, but a good use of width: 100% would solve the problem neatly in an IE-specific style sheet. One more issue is that when an image is resized too small in some older browsers in Windows, the rendering isn’t as clear as it ought to be. There is a JavaScript to fix this issue, though, found in Ethan Marcotte’s article.

While the above is a great quick fix and good start to responsive images, image resolution and download times should be the primary considerations. While resizing an image for mobile devices can be very simple, if the original image size is meant for large devices, it could significantly slow download times and take up space unnecessarily

Image

Custom Layout Structure

For extreme size changes, we may want to change the layout altogether, either through a separate style sheet or, more efficiently, through a CSS media query. This does not have to be troublesome; most of the styles can remain the same, while specific style sheets can inherit these styles and move elements around with floats, widths, heights and so on.

For example, we could have one main style sheet (which would also be the default) that would define all of the main structural elements, such as #wrapper,#content#sidebar#nav, along with colors, backgrounds and typography. Default flexible widths and floats could also be defined.

If a style sheet made the layout too narrow, short, wide or tall, we could then detect that and switch to a new style sheet. This new child style sheet would adopt everything from the default style sheet and then just redefine the layout’s structure.

Image

MEDIA QUERIES

CSS3 supports all of the same media types as CSS 2.1, such as screenprintand handheld, but has added dozens of new media features, including max-widthdevice-widthorientation and color. New devices made after the release of CSS3 (such as the iPad and Android devices) will definitely support media features. So, calling a media query using CSS3 features to target these devices would work just fine, and it will be ignored if accessed by an older computer browser that does not support CSS3.

In Ethan Marcotte’s article, we see an example of a media query in action:

<link rel="stylesheet" type="text/css"
	media="screen and (max-device-width: 480px)"
	href="shetland.css" />

This media query is fairly self-explanatory: if the browser displays this page on a screen (rather than print, etc.), and if the width of the screen (not necessarily the viewport) is 480 pixels or less, then load shetland.css.

New CSS3 features also include orientation (portrait vs. landscape), device-widthmin-device-width and more. Look at “The Orientation Media Query” for more information on setting and restricting widths based on these media query features.

One can create multiple style sheets, as well as basic layout alterations defined to fit ranges of widths — even for landscape vs. portrait orientations. Be sure to look at the section of Ethan Marcotte’s article entitled “Meet the media query” for more examples and a more thorough explanation.

Multiple media queries can also be dropped right into a single style sheet, which is the most efficient option when used:

/* Smartphones (portrait and landscape) ----------- */
@media only screen
and (min-device-width : 320px)
and (max-device-width : 480px) {
/* Styles */
}

/* Smartphones (landscape) ----------- */
@media only screen
and (min-width : 321px) {
/* Styles */
}

/* Smartphones (portrait) ----------- */
@media only screen
and (max-width : 320px) {
/* Styles */
}

The code above is from a free template for multiple media queries between popular devices by Andy Clark. See the differences between this approach and including different style sheet files in the mark-up as shown in the post “Hardboiled CSS3 Media Queries.”

CSS3 MEDIA QUERIES

Above are a few examples of how media queries, both from CSS 2.1 and CSS3 could work. Let’s now look at some specific how-to’s for using CSS3 media queries to create responsive Web designs. Many of these uses are relevant today, and all will definitely be usable in the near future.

The min-width and max-width properties do exactly what they suggest. Themin-width property sets a minimum browser or screen width that a certain set of styles (or separate style sheet) would apply to. If anything is below this limit, the style sheet link or styles will be ignored. The max-width property does just the opposite. Anything above the maximum browser or screen width specified would not apply to the respective media query.

Note in the examples below that we’re using the syntax for media queries that could be used all in one style sheet. As mentioned above, the most efficient way to use media queries is to place them all in one CSS style sheet, with the rest of the styles for the website. This way, multiple requests don’t have to be made for multiple style sheets.

@media screen and (min-width: 600px) {
     .hereIsMyClass {
          width: 30%;
          float: right;
     }
}

The class specified in the media query above (hereIsMyClass) will work only if the browser or screen width is above 600 pixels. In other words, this media query will run only if the minimum width is 600 pixels (therefore, 600 pixels or wider).

@media screen and (max-width: 600px) {
     .aClassforSmallScreens {
          clear: both;
		  font-size: 1.3em;
     }
}

Now, with the use of max-width, this media query will apply only to browser or screen widths with a maximum width of 600 pixels or narrower.

While the above min-width and max-width can apply to either screen size or browser width, sometimes we’d like a media query that is relevant to device width specifically. This means that even if a browser or other viewing area is minimized to something smaller, the media query would still apply to the size of the actual device. The min-device-width and max-device-width media query properties are great for targeting certain devices with set dimensions, without applying the same styles to other screen sizes in a browser that mimics the device’s size.

@media screen and (max-device-width: 480px) {
     .classForiPhoneDisplay {
          font-size: 1.2em;
     }
}
@media screen and (min-device-width: 768px) {
     .minimumiPadWidth {
          clear: both;
		  margin-bottom: 2px solid #ccc;
     }
}

There are also other tricks with media queries to target specific devices. Thomas Maier has written two short snippets and explanations for targeting the iPhone and iPad only:

For the iPad specifically, there is also a media query property called orientation. The value can be either landscape (horizontal orientation) or portrait (vertical orientation).

@media screen and (orientation: landscape) {
     .iPadLandscape {
          width: 30%;
		  float: right;
     }
}
@media screen and (orientation: portrait) {
     .iPadPortrait {
          clear: both;
     }
}

Unfortunately, this property works only on the iPad. When determining the orientation for the iPhone and other devices, the use of max-device-width andmin-device-width should do the trick.

There are also many media queries that make sense when combined. For example, the min-width and max-width media queries are combined all the time to set a style specific to a certain range.

@media screen and (min-width: 800px) and (max-width: 1200px) {
     .classForaMediumScreen {
          background: #cc0000;
          width: 30%;
          float: right;
     }
}

The above code in this media query applies only to screen and browser widths between 800 and 1200 pixels. A good use of this technique is to show certain content or entire sidebars in a layout depending on how much horizontal space is available.

Some designers would also prefer to link to a separate style sheet for certain media queries, which is perfectly fine if the organizational benefits outweigh the efficiency lost. For devices that do not switch orientation or for screens whose browser width cannot be changed manually, using a separate style sheet should be fine.

You might want, for example, to place media queries all in one style sheet (as above) for devices like the iPad. Because such a device can switch from portrait to landscape in an instant, if these two media queries were placed in separate style sheets, the website would have to call each style sheet file every time the user switched orientations. Placing a media query for both the horizontal and vertical orientations of the iPad in the same style sheet file would be far more efficient.

Another example is a flexible design meant for a standard computer screen with a resizable browser. If the browser can be manually resized, placing all variable media queries in one style sheet would be best.

Nevertheless, organization can be key, and a designer may wish to define media queries in a standard HTML link tag:

<link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" />
<link rel="stylesheet" media="screen and (min-width: 600px)" href="large.css" />
<link rel="stylesheet" media="print" href="print.css" />

JAVASCRIPT

Another method that can be used is JavaScript, especially as a back-up to devices that don’t support all of the CSS3 media query options. Fortunately, there is already a pre-made JavaScript library that makes older browsers (IE 5+, Firefox 1+, Safari 2) support CSS3 media queries. If you’re already using these queries, just grab a copy of the library, and include it in the mark-up: css3-mediaqueries.js.

In addition, below is a sample jQuery snippet that detects browser width and changes the style sheet accordingly — if one prefers a more hands-on approach:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript">
	$(document).ready(function(){
		$(window).bind("resize", resizeWindow);
		function resizeWindow(e){
			var newWindowWidth = $(window).width();			// If width width is below 600px, switch to the mobile stylesheet
			if(newWindowWidth < 600){ 				$("link[rel=stylesheet]").attr({href : "mobile.css"});	 			} 			// Else if width is above 600px, switch to the large stylesheet 			else if(newWindowWidth > 600){
				$("link[rel=stylesheet]").attr({href : "style.css"});
			}
		}
	});
</script>

There are many solutions for pairing up JavaScript with CSS media queries. Remember that media queries are not an absolute answer, but rather are fantastic options for responsive Web design when it comes to pure CSS-based solutions. With the addition of JavaScript, we can accomodate far more variations. For detailed information on using JavaScript to mimic or work with media queries, look at “Combining Media Queries and JavaScript.”

Conclusion

We are indeed entering a new age of Web design and development. Far too many options are available now, and there will be far too many in the future to continue adjusting and creating custom solutions for each screen size, device and advancement in technology. We should rather start a new era today: creating websites that are future-ready right now. Understanding how to make a design responsive to the user doesn’t require too much learning, and it can definitely be a lot less stressful and more productive than learning how to design and code properly for every single device available.

Responsive Web design and the techniques discussed above are not the final answer to the ever-changing mobile world. Responsive Web design is a mere concept that when implemented correctly can improve the user experience, but not completely solve it for every user, device and platform. We will need to constantly work with new devices, resolutions and technologies to continually improve the user experience as technology evolves in the coming years.

Besides saving us from frustration, responsive Web design is also best for the user. Every custom solution makes for a better user experience. With responsive Web design, we can create custom solutions for a wider range of users, on a wider range of devices. A website can be tailored as well for someone on an old laptop or device as it can for the vast majority of people on the trendiest gadgets around, and likewise as much for the few users who own the most advanced gadgets now and in the years to come. Responsive Web design creates a great custom experience for everyone. As Web designers, we all strive for that every day on every project anyway, right?

Resources

Hopefully this article helped, but if you’re still feeling confused about responsive design, don’t be afraid to leave a question or comment. If you’re already utilizing responsive web design in your site or web application, share the link here so we can see!

Tagged , , , , , , , ,

Fixing the IE 8 SSL warning for showing secure content.

The problem of using HTTP based resources, such as images, on a secure HTTPS page. Internet Explorer interrupts the download and displays a confirmation dialog whenever it detects the use of mixed content on a secure page.

In IE 7 and ealier, this dialog would cause annoyance to users but generally didn’t cause any other significant problems. This was because it was worded in such a way that most users would click on the Yes button and allow non-secure content to be downloaded.

However, the wording in the IE 8 version of this dialog has changed:Image

To download the content a user would now have to click on the No button. As we know, most people using the web onlyscan text and avoid reading it if at all possible! They will usually go for the Yes button if there is not an OK button.

Some sites are going to find that their secure pages in IE 8 have the following problems:

  • Any non-secure HTTP image beacons used for analytics data gathering will often be ignored
  • The page may not display or even work correctly if it relies on non-secure images, CSS or Javascript

Therefore, avoiding mixed content on HTTPS pages is even more important now that IE 10 has been released. It often becomes an issue when using third party services such as analytics or Content Delivery Networks (CDN). For example, we avoided the use of Google hosted Ajax libraries on our site until Google added HTTPS support.

An IE user you can disable this warning by:

  1. Going  to Tools->Internet Options->Security
  2. Select the Security tab
  3. Click on the Internet zone icon at the top of the tab page
  4. Click the Custom Level button
  5. In the Miscellaneous section change Display mixed content to Enable
  6. Repeat steps 1 – 5 for the Local intranet and Trusted sites zones.

But if you’re developing something for client and do not want that your client face this kind of issue than I have a solution for you:

To workaround this problem you could use any server side script hosted on https(e.g. php) that would return an image and act as “ssl bootstrap”. For example you could write PHP script which would retrieve video thumbnail or still using media API and return it as an image (please note this not a production code it’s just to illustrate a concept):

<?php
//https://github.com/BrightcoveOS/PHP-MAPI-Wrapper
include(“bc-mapi.php”);
$video_id = (int)$_GET[‘video_id’];
$bc = new BCMAPI(‘READ TOKEN’);
$params = array(‘video_id’ => $video_id);
$video = $bc->find(‘videobyid’, $params);
$img = file_get_contents($video->thumbnailURL);
header(“content-type: image/jpg”);
echo $img;
?>

An then within html page:
<img src=”https://somedomain.com/path/to/scipt.php?video_id=1231543523523&#8243; alt=”” />

I have implemented it my code and it is working fine, hope it should work for you.

Tagged , , , , , , , , , , ,

Creating Video Sitemaps

Unfortunately, this advice is not much use for the majority of users, who host their content with external providers or social video platforms and are then forced to work out whether or not their hosting service does this for them, and if not, how they should create and structure a video sitemap for their specific circumstances. To help simplify the whole process, I have created this post as a reference guide for those who have video on their site and want an answer to the ”how do i get video snippets?” question without having to do the additional work.

Below is a glossary of the simplest and most reliable (but not the only) ways to get rich snippets for each of the major hosting platforms, which I will keep updated as a reference guide with the most up to date information I have. With Google changing the way they handle video on a regular basis  and platform adjustments being frequently rolled out across the competing online video providers, I’ll add in a caveat that the list below isn’t 100% foolproof, but I’ll do my best to keep it as fresh as possible.

If you have found a simpler or better way to get video rich snippets that isn’t included below, please send through the method with an example to vipulkhandelwal@outlook.com.

Video Sitemap Basics

A video sitemap is essentially an XML feed which details metadata that allows Search Engines to find and index your videos. Google have a created useful page with detailed information about how to structure a video sitemap,but unfortunately it’s a fairly technical and impenetrable page. The following table details each of the required elements and what they mean, in layman’s terms.

Image

So, the minimal requirements to build a video sitemap are as follows:

  • The URL of the page the video is embedded on
  • The URL of the thumbnail image for the video
  • The URL of the file or player being embedded

Image

Additional tips for getting videos indexed

  • You need to have a reasonably strong page for Google to bother crawling your video sitemap entry. As with normal indexation, a lack of PageRank and a large number of pages with videos on is going to mean that a lot of them don’t get crawled frequently and your videos won’t all be indexed. It can take a while for Google to recrawl a video sitemap, even for relatively strong sites, so if you’re desperate for rich snippets on lots of pages, yet don’t have the domain strengh to back it up – keep your video sitemap  restricted to just the most important videos.
  • Pages with additional content outside of a video tend to get video snippets more often. This is somewhat counter intuitive, but pages that only have video (and no supporting text) can seemingly often be viewed as low quality. Pages containing videos that also have text and images will often both rank better and get crawled more often – therefore including text descriptions, stills or transcripts alongside the video is always worthwhile if suitable
  • Google appear to be better an indexing flash filesoEmbeds, or videos embedded with the HTML5 video tag than iframes. Unfortunately, most video platforms use iframe as the standard embed method, as it’s lightweight, mobile friendly and flexible. I’m not saying that iframes can’t get indexed, but it’s typically slower to happen less surefire. While I’m sure they will iterate and improve in due course – if you have a weak site and are desperate to get a video result quickly, it may be worth avoiding an iframe embed.

Creating a sitemap for each video hosting platform

Brightcove:

To get video rich snippets with Brightcove videos, you will currently need to create and maintain your sitemap independently of the platform.

  • You’ll need to upload your chosen thumbnail to your own site to reference in the <video:thumbnail_loc> tag.
  • For a brightcove video sitemap, you’ll need to reference a url for the <video:player_loc> tag, rather than a url for the <video:content_loc> tag. This is because Brightcove occasionally switch which URLs the encapsulated files are held at. Unfortunately (as with many things on the Brightcove platform) locating the appropriate URL for the <video:player_loc> tag is unnecessarily complicated.

I’ve done my best to simplify the process with the steps below:

  • Naviagate to your video within the media section of the VideoCloud control panel
  • Within the “quick video publish” sidebar, select “blog”. Copy and paste the HTML given into a text editor.
  • You then need to pull out the string of numbers that follows the playerID parameter within the code
  • Go back to your control panel and note down the Video ID number referenced just above the “quick video publish” sidebar

Image

Image

  • Your task is now to fill in the blanks of the templates below with the numbers you’ve just pulled together.

If you’ve used the Chromeless Player:

http://c.brightcove.com/services/viewer/federated_f9/INSERTPLAYERID?isVid=1&isUI=1&domain=embed&playerID=INSERTPLAYERID&videoID=INSERTVIDEOID&publisherID=INSERTPUBLISHERID

If you’ve used the Normal Player (Single Video Player):

http://c.brightcove.com/services/viewer/federated_f9/INSERTPLAYERID?isVid=1&domain=embed&playerID=INSERTPLAYERID&videoID=INSERTVIDEOID&publisherID=INSERTPUBLISHERID

  • Double check that the URL you’ve pieced together is correct by putting it into a browser. If all is in order, it should return a full screen version of your video.
Tagged , , , , , , , , , , ,

Sound Manager utility for ActionScript 3.

Sound plays a big and important role in flash, when it comes to gaming because game has to be loaded with sounds, and not only with a single background sound, but with several type of sounds for each activity of the game.

I am going to share a sound manager utility class with you, in whom all the operations related to sound is there like: play, pause, stop, loop play, single sound play at a time, multiple sounds play at a time, sound mute, unmute, transformation (volume up/down).

you can found this class here:

https://github.com/vipul11088/SoundManager

Tagged , , , , ,

Process to upload paid Application on apple app store

This tutorial teaches you the process of provisioning devices and submitting your iOS app to the App Store. (You can start some of these tasks as soon as you are ready to run your app on a device.) You learn this process best using your own Xcode project. But if you created a HelloWorld project in another tutorial, it will work well, too.

Most of your development time is spent on coding tasks. But to develop for the App Store, you must also perform administrative tasks, using Xcode and other tools, throughout the lifetime of your app. The App Store is a curated store, which means that only Apple-approved apps are available for purchase. Apple does this to provide the best experience possible for our users. For example, apps that are sold on the App Store must not crash or exhibit other major bugs.

This tutorial teaches you the process of provisioning devices and submitting your iOS app to the App Store. (You can start some of these tasks as soon as you are ready to run your app on a device.) You learn this process best using your own Xcode project. But if you created a HelloWorld project in another tutorial, it will work well, too.

Most of your development time is spent on coding tasks. But to develop for the App Store, you must also perform administrative tasks, using Xcode and other tools, throughout the lifetime of your app. The App Store is a curated store, which means that only Apple-approved apps are available for purchase. Apple does this to provide the best experience possible for our users. For example, apps that are sold on the App Store must not crash or exhibit other major bugs.

Process to upload paid application on Apple app store:

Log in with your itunes connect account @ https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa

You should be making the app ready for uploading binary on App Store before you even begin building the distribution version of your application, its important in case of XCode 4

2. You will see following screen as given below. You click on Manage Your Applications

Image

3. You will see Add New App on this screen as shown below. Click on it.

Image

4. You will see following screen where you will need to enter your app’s name, fill in SKU number.
Fill in bundle ID.

Image

5. You will get following warning, don’t worry about it. Make sure you have selected the correct Bundle ID. Be sure and press Continue.

Image

6. Fill in Availability date and price tier and other stuff as shown below in screenshot, Press Continue.

Image

7. Then you have to fill all the Meta data (data shown below is an example, you will have to fill metadata of your own app).

Image

8. Next screen would be as shown below. And it says for status: Prepare to upload.

Image

Next you will have to press view details button and you will see a new screen with button prepare to upload button which you can press and it will be ready to upload binary finally!

9. You will see following screen. Notice button on right side of screen which says Ready to upload Binary, just press that button

Image

10. Next you will be asked to fill the encryption compliance. Fill it according to your app.

Image

Then you will see following screen, just presses continue.

Image

12. Then you will see following screen with status of your app to Waiting for Upload.Image

If you want to download a document for the same, you can download it from:

https://github.com/vipul11088/Upload_process_of_paid_app_on_appleStore

Tagged , , , ,

Screen Sharing for desktop Users with Adobe AIR

I have made a tool in adobe AIR, which can capture your screen on runtime and can send it to other user you’re connected to; mean to say that it is a kind of remote desktop component.

I have used an open source screen capture driver named” ScreenCapturer”. It helps me to capture the users screen. The basic idea behind this is that we are capturing screen data on enter Frame and storing it in byte array and then converting it into bitmap and displaying to user.

Driver provide us the data of user’s screen and we convert it into byte array and then into bitmapData. Some C# background processes are there in screen capture device.

You can found the source code here:

https://github.com/vipul11088/Screen_sharing

Tagged , , , , , ,

Recyclable Scroll list for large set of data in pure ActionScript 3.

Some days ago I was working on a project, in which I have to make a scroll component for device because I have to show a very long list on device. First I used simple touch list, which I had used in my earlier projects for desktop and for devices for short list comparatively. When I checked that component on iPhone 4, it completely stuck for only 500 list renderers. It was like a shock or me because I have to load around 2500 list, and it was sticking in 500.

Then I use flex’s recycle list component, which is perfect for my need, but the another problem for me is that I couldn’t use flex component as my project was a pure ActionScript project.

Then I decided to reform that touch list component with pooling concept, so that I can recycle the renderers and can load it for large list. I used the flex recycle concept and apply it in my touch list component. I used object pooling for recycling, which works on following concept:

The List creates an instance of a class called ObjectPool, which manages used and unused renderers. Whenever the List needs a new renderer, it asks the pool for a new one and when it does not need a renderer, it returns it to the pool. The pool tries to find unused renderers to satisfy the request for a new renderer and if it cannot, will create a new object and return that.

The core part of the logic resides in the onVerticalScroll function. The list always maintains a map of all visible renderers and as the scrollbar scrolls, the map is recalculated and renderers managed if the map is changed.

You can find the source code here:

https://github.com/vipul11088/Recycle_scroll_AS3

Tagged , , , , , , , , , , , , ,