21 4 / 2014

Save Bookmarks in Safari to Open in Stream Web

One month ago, MAZ released a browser called “Stream Web” for iOS. Unlike other iOS browsers, which are scaled down versions of desktop browsers, Stream Web is made specifically with mobile devices in mind. When we started to create the browser, we looked at the ones already out there and asked ourselves: why are their address bars and navigation placed at the top of the screen, where you have to reach for them? Why are there back and forward buttons on phones that are made as touch devices, with full gesture capabilities? And most importantly, why are we still copying and pasting ugly, long URLs to share what we like? The entire MAZ team was along for the journey every step of the way, discussing at length what we all utilized the most in the mobile browsers we were using, and what else we wished we had.

It’s always a proud moment for all of us at MAZ to release something we really believe in. But, one thing we wish it had been possible to fix for everyone is the ability to change your default browser on iOS. Today, I will share a tip for iOS developers (not a developer? skip the code and read what’s next) on how to provide a user with an option to open links from their app to Stream Web.

Use below methods to implement “Open in Stream Web” functionality:

(BOOL) isStreamWebInstalled

    return [[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"strmw://"]];

 

//Use this method to open the URL as a new tab in Stream Web.

    (BOOL) openInStreamWeb:(NSURL *) url

        NSURL *swURL = [self webToStreamWeb:url];

            return [[UIApplication sharedApplication] openURL:swURL];

// Utility method to convert web url to Stream Web custom url.

­   (NSURL *) webToStreamWeb:(NSURL *) url

        NSURL *swURL = nil;

        if([url.scheme isEqualToString:@"http"])

            swURL = [NSURL URLWithString:[url.absoluteString

    stringByReplacingOccurrencesOfString:[url scheme] withString:@"strmw"]];

        else if([url.scheme isEqualToString:@"https"])

            swURL = [NSURL URLWithString:[url.absoluteString

stringByReplacingOccurrencesOfString:[url scheme] withString:@"strmws"]];

Okay, so if that didn’t make sense to you - here is a general tip for everyone to open web pages that you’re reading in Safari to Stream Web. Basically, you need to write a “Bookmarklet”, which is a normal bookmark with some Javascript code (don’t worry). See below for the steps!

1. Open Safari and open any web page 

2. Tap on Share icon at the bottom and choose bookmark

image

3. Change Bookmark title to “Open In Stream Web” Tap on “Save” to save bookmark

image

4. Tap on bookmark icon next to share icon

image

5. Tap on “Edit” at the Bottom right Tap on the “Open In Stream Web”, the bookmark you just made

image

6. Change the URL (e.g. http://streamapp.co/) to:

javascript:location.href=’strmw’+location.href.substring(4);

image

Now you have the option to open Safari pages in Stream Web by tapping on the Bookmark icon and choosing “Open In Stream Web.” For now, that’s all - but there will be more cool tech stuff again soon! Until then, happy Stream browsing.

*If you’re an App developer, you can now have the Stream SDK in your App. Ping us for more info!

Manoj Karki is VP of Engineering in Noida, India. Follow him on Twitter @mskarki.

17 4 / 2014

ExecProtec Magazine created an awesome video to explain all aspects of their digital magazine. Available on both iOS & Android devices from iTunes & Google Play app stores!

16 4 / 2014

How to Shine in Cupertino

How does Apple choose what apps to feature in their store? While it certainly comes from high downloads, positive ratings and good press, these numbers don’t just show up overnight. They can only happen if people know about your app and like it enough to spread the word. How do you create an app like that? Give users a reason to keep coming back.

Newness Factor:

Each time a user launches your app, it should have something new to offer that wasn’t there before. Think of your app like a social networking site that you refresh to find something new.  Magazines, for example, generally publish their content monthly, or weekly at best. Imagine if magazines pushed out new content more frequently; users would be launching the app multiple times a day to read what’s new. Free trials, previews, and incorporating all your social networking sites into your app can be useful tools to showcase such content, and engage users new and old alike, as seen below in our storefront.

image

Point of Difference:

Another important reason for a user to return to your app is what I call its “point of difference.” What makes your app stand out from all other apps? Besides basic functionality, figure out what that extra oomph to the user experience could be. Whether it’s amazing graphics, especially fast and fluid performance, or a novel feature unique to your app, this distinguisher is key. A feature unique to our apps is Stream, demonstrated below, it is a visual archive from both the publication and reader of shared and saved content in app and from the web.

image

While in a perfect world, I would be able to simply say, “Follow these steps and your app will be one of the best on the App Store” — I know it is easier said than done. But to me, these are truly the most important considerations an app developer can do to draw more downloads and keep users coming back for more.

Areeb Ahmad is Director of Quality Assurance in Noida, India. Follow him on Twitter @areebahmad.

 

01 4 / 2014

Using SDWebImage with Images on Amazon S3: A Brief Tutorial from MAZ

For those who don’t know how to read and write code, the “backend” of an app often goes unnoticed when using your phone or computer. But everything that you, as an end user, consider to work well comes from what you don’t see: the code.

For those who do know about code, the below script will make a lot of sense! Let’s begin with two terms I’d like to discuss, relating to how an iPhone app user views images that are sourced from the web.

SDWebImage: A handy iOS library, which scours the internet to download, cache and display web-sourced images.

Amazon S3 ServerAn encrypted cloud storage service provided by Amazon for storing images.

You may use or have heard about MAZ’s new mobile browser Stream Web (available free for iOS here), for which I am a developer. The whole concept behind Stream Web requires images to be stored and recalled instantaneously. I was introduced to SDWebImage when we began work on Stream, the flagship feature behind Stream Web and our app publishing platform.

I noticed that using S3 with SDWebImage could be pretty powerful for developers, but also realized that some developers might not be able to figure out how to use them together since SDWebImage does not support S3 validation (at least not yet!). Delving into the SDWebImage source to code around this issue would not be too helpful, because if a new version of SDWebImage were to be released, the developer would have to redo everything. Instead, a better approach (provided here) would be to keep SDWebImage untouched, and to intercept all its download requests and handle the S3 server downloads via the Amazon S3 SDK.

If you’d like to see what I mean, try the following:

1) Set up SDWebImage and Amazon's S3 SDKs (with credentials)

// File: AmazonClientManager.m

+ (void)validateCredentials

{

    // …

    s3 = [[AmazonS3Client alloc] initWithAccessKey:<YOUR ACCESS KEY> withSecretKey:<YOUR SECRET KEY>];

    // …

}

2) Subclass NSURL Protocol

// File: S3URLProtocol.h

@interface S3URLProtocol : NSURLProtocol

@end

// File: S3URLProtocol.m

#import "S3URLProtocol.h"

#import "AmazonClientManager.h"

#define kS3BucketName <YOUR BUCKET NAME>

@interface S3URLProtocol() <AmazonServiceRequestDelegate>

@property (strong, nonatomic) S3GetObjectRequest *getRequest;

@end

@implementation S3URLProtocol

// All registered protocols are asked if they can handle the request

+ (BOOL)canInitWithRequest:(NSURLRequest *)request

{

    // If the host is not Amazon S3 Server return ‘NO’ to indicate default handling

    if(![request.URL.host isEqualToString:[kS3BucketName stringByAppendingString:@".s3.amazonaws.com"]])

        return NO;

    

    // Yes we can handle it! Go ‘startLoading’!

    return YES;

}

// Required method

+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request

{

    return request;

}

- (void)startLoading

{

    // Extract the key from the request

    NSString *key = self.request.URL.path;

    key = [key substringFromIndex:1];

    

    // Create a ‘S3GetObjectRequest’ with your bucket and the extracted key

    self.getRequest = [[S3GetObjectRequest alloc] initWithKey:key withBucket:kS3BucketName];

    

    // Set delegate to ourselves to handle various callbacks.

    self.getRequest.delegate = self;

    

    // And fire the download. The ‘AmazonClientManager’ will handle the ‘Authentication’ for us.

    [[AmazonClientManager s3] getObject:self.getRequest];

}

- (void)stopLoading

{

    // If someone cancels this, cancel the ‘S3GetObjectRequest’ in turn.

    [self.getRequest cancel];

    self.getRequest = nil;

}

// The ‘AmazonServiceRequestDelegate’ callbacks

- (void)request:(AmazonServiceRequest *)request didReceiveResponse:(NSURLResponse *)response

{

    // We received a response, pass it on to the client (SDWebImage).

    [self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageAllowed];

}

- (void)request:(AmazonServiceRequest*)request didReceiveData:(NSData*)data

{

    // We received some data, pass it on to the client (SDWebImage).

    [self.client URLProtocol:self didLoadData:data];

}

- (void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response

{

    // Download complete! Notify client (SDWebImage) and cleanup.

    [self.client URLProtocolDidFinishLoading:self];

    self.getRequest = nil;

}

- (void)request:(AmazonServiceRequest *)request didFailWithError:(NSError *)error

{

    // Some error encountered! Notify client (SDWebImage) and cleanup.

    [self.client URLProtocol:self didFailWithError:error];

    self.getRequest = nil;

}

@end

3) Finally, hook up our shiny new "S3URLProtocol" by adding (just once!) this line to your initialization code:

[NSURLProtocol registerClass:[S3URLProtocol class]];

Now simply use the SDWebImage’s categories e.g. [imageView setImageWithURL:

<IMAGE FILE URL> …]; the host of <IMAGE FILE URL> should be equal to "<YOUR BUCKET NAME>.s3.amazonaws.com ".

Now you can use the power of the Amazon S3 cloud servers with SDWebImage in your own apps! How neat is that?

Hemant Dabral is an iOS and Android Developer in MAZ's Noida, India office. Check him out on Twitter!

27 3 / 2014

Click the image above to read the story of how Paul Canetti, CEO and Founder of MAZ, spent the past five years of his life and what led him to create a mobile browser, Stream Web. 

Click the image above to read the story of how Paul Canetti, CEO and Founder of MAZ, spent the past five years of his life and what led him to create a mobile browser, Stream Web

19 3 / 2014

Stream Web: A Mobile Browser for a Mobile World

Here at MAZ, we have helped some amazing media brands across the globe to launch hundreds of apps using our publishing platform. And today, for the very first time, we are putting ourselves in their shoes — by launching an app of our own.

We are proud to announce the release of Stream Web, a social, gesture-based web browser for iOS.

How is it that a publishing platform company came to make a web browser? Well, for starters, we see ourselves as much more than a publishing platform. MAZ’s mission has always been to connect people with content. What we learned pretty fast is that on digital devices, people don’t only want to receive content; they also want to participate in it.

That’s why we created Stream, a social layer that lives on top of every MAZ-powered app, allowing the user to “cut out” anything they see on their screen and share or save it instantly. Stream also provides a running visual archive of everything they’ve ever shared or saved.

It works like this:

image

Compare that to how we traditionally share on the web: boring text URLs, copied and pasted. In fact, that’s the same way we’ve been sharing content for the entire 25-year history of the web. Copy and paste into an email, copy and paste onto Twitter, and so on.

With Stream Web, we are bringing the power and beauty of Stream to — you guessed it — the entire web. Instead of sharing URLs, you can now share clips of actual content. And each clip, whether it be an image, text, or both, serves as a link back to the original source. So you are still sharing a link, but it’s a visual one instead of the same old ugly text. Then you can visit your Stream at any time to see a real-time feed of everything you’ve ever shared or saved.

Switching your web browser to Stream Web on your iPhone and iPad will make you feel like you are using the real mobile web for the first time, not just a scaled down version of a desktop browser.

Check out some of the neat features we’ve cooked up below, and of course, go download Stream Web for free right now to see it for yourself!

image

image

image

image

image

image

12 3 / 2014

Run, Bison, run! 5 ways Spotlight Media publishes and promotes ‘Bison Illustrated,’ a killer digital magazine

Spotlight Media publishes Bison Illustrated, the official magazine for the Bison Athletics teams at North Dakota State University.  They’ve taken a valuable lesson from the varsity football team, who recently won their third straight FCS title in January: don’t walk when you can run! As Mike Dragosavich, Founder of Spotlight Media Publishing puts it, “We produced a full functioning app on the app stores within no time. It’s an efficient process, period.”

Incorporating the MAZ publishing platform into their media strategy, Bison Illustrated has entered the app market with an engaging and truly cross-platform product line. And they’ve done it all without adding any additional staff or resources. 

Take a page from their playbook, and learn how to make your app just as competitive as theirs:

1.  In-App Navigation and Custom Help Pages

Spotlight Media craftily included custom help pages into their issues. They quickly familiarize the reader with the navigation and media icons they should look out for, the designated areas to visit, and a “visual” table of contents leading to coach and athlete interviews, team schedules, and game summaries.

image

2.  Featured Video Content

Based on an engagement study that MAZ conducted recently, pages that have a video button are four times more likely to be tapped. Bison Illustrated has video all over it.  And once tapped, the metric for time spent in-page sky rockets.  

image

3.  Custom Landing Page for Promotion

In addition to promoting the Bison Illustrated app through their own properties (website, print, and social), they actually made an exclusive landing page just for the app. And it’s awesome.

image

4.  Advertising: Interactive and Social Ads

Spotlight extends the digital canvas to their advertisers as well.  Check out this in-app advertisement for Pratek Philippe watches, which includes a play button for a video ad, a web button to take the reader to Pratek’s online destination (without ever leaving the app), and MAZ’s patent-pending Stream technology, which allows the user to “cut out” and share anything they see to their favorite social media site, their friend’s inbox, or even via a text message.

image

5.  E-Commerce

On a tablet or smartphone, anything can be made purchasable. For example, Spotlight has integrated One Herd, their clothing line for Bison sports fans.  Users can browse the inventory, tap to learn more, share, and purchase — all in the app!

image

Don’t just take my word for it, though — download the free Bison Illustrated app on iTunes or Google Play, and see for yourself. And check out MAZ Publishing if you’re curious how we can help you create and optimize your app, too!

Mike Ram is a Business Development Manager in New York. Find him on LinkedIn.

04 3 / 2014

New York’s tech & startup culture has officially arrived! We’re just getting started. 

13 2 / 2014

Sneak Peek: Stream Web

MAZ has spent the last three years helping other companies create apps.

For the first time, we have created an app to call our very own– a mobile web browser called Stream Web.

image

Within the hundreds of apps created with MAZ, we saw that many people use Stream to share and save content from the web. Which got us thinking… what if you could use Stream to share and save from any website?

To get a sneak peek at Stream Web visit streamapp.co and sign up to be one of the first to get it when it becomes available (for free!) this spring.

10 1 / 2014

MAZ partner FOUR hailed UK’s Best Food Magazine

Congratulations are in order: MAZ partner FOUR just won Gourmand World Cookbooks Awards’ Best UK Food Magazine for 2013! We are proud to power the app for such a superlative publication and team. Read FOUR’s news post here, and check out their app here. Treat yourself!

image