Archive for the ‘Mobile’ Category

No Flash for the iPhone?

Wednesday, January 10th, 2007

Okay so I’ve digested the keynotes about the iPhone, and I’m still unapologetically excited about this device. In fact probably even more so.

BUT I did notice when Steve Jobs browsed to the New York Times website using iPhones Safari there was a missing plugin icon (below), which I can only assume by the placement, was Flash.

Personally I can’t see Apple leaving The Flash player out, due to the sheer volume of web based Flash content out there, and the amount of effort Apple seem to have put into getting a fully functional web browser onto their device. But you can’t help get a bit nervous.

iPhone missing plugin

iPhone

Tuesday, January 9th, 2007

Well, whilst doing a little late night surfing I came across the Apple iPhone.
iPhone

I’m a massive apple fan, and for one I’ve been getting fed up with the lack of mac support for every mobile device I’ve ever owned. My lovely Nokia N91 with it’s 4Gb hard drive is almost wasted because it needs work arounds or third party software just to get any kind of playlist etc working. And quite frankly i’m getting tired of things not working out of the box. Maybe I’m getting old and intolerant of things/devices not working as marketing hype had lead my to believe. Maybe I’ve had a thing about multi touch user interfaces since i saw this video on yt.

Flash Lite 2.1 FREE

Tuesday, December 5th, 2006

Well that will make a few peoples Christmas.

See Bill Perry’s Blog for more details, though one thing to notice is the EULA prohibits redistribution, but hey it’s a massive step in the fight direction. Being able to point end users in the direction of a FREE Flash Player is a much easy sell to potential users of Flash Lite content.

All we need now is a device detection script and we’re set.

Mobisite gets funded

Friday, November 10th, 2006

mobisite
Pocket marketing have been granted funding to develop ‘mobisite’, a social networking application which will of course be developed in Flash Lite.

The spec and architecture are on the drawing board as I type, and I’ll be blogging the whole process over the next 5 months from idea to fully signed .sis.

Although I expect to see Flash Lite 2.0 appear over here in the UK during this time, the intention is to stay faithful to 1.1 development whilst future proofing with a 2.0 version at the same time. And you never know you may even see a web based interface trialled in Flex.

Flex - you tube interface

Friday, November 10th, 2006

I’m still loving Flex and stumbled across this you tube Flex interface  on you tube

flex yt interface

14′ Flash and the BBC

Thursday, October 26th, 2006

I know it’s not Flash Lite but our latest project did involve mobiles and Adobe Flash, so it’s getting a post here.

Blink media asked us to come up with a solution that enabled joe public to Bluetooth the pictures onto BBC’s 14′x9′ Big Screens in Leeds, Bradford and Hull, and required a front-end interface to present the images.

The end result included, a 100m Bluetooth dongle, a cat 5 usb extender, a computer, nifty ftp coding, nifty php coding and 1 lovely Flash application pulling the images onto the screen in a slideshow.

The first use of the setup involved all three cities in a simultaneous event for the Illumination celebration. Images went through a sheep-dip process via BBC event managers, using an online approval/delete system.

BBC were so please with the end result that they bought the system outright as they loved the potential it offered them for, all manner of events (in fact, they have since used it during Hulls’ rugby team promotion celebration) so expect to see it rolled out in all seven cities soon.

Symbian signed ask the impossible

Friday, October 20th, 2006

It’s been an ongoing nightmare as you may know, but we’ve got some further feedback from Symbian Signed via MphasiS testing house:

“Finally, we have got the feedback from Symbian Signed team.

As manufacture (Nokia) required any applications that cause actions such as
billable events etc, whether they are c++ applications or flash should all
be treated the same. They should be subject to all test cases.

Only submissions that do not exercise any of these events or do not contain
any executables can be classed as passive content.

Thus, we do think the privacy statement is required for your application.

Please feel free to contact us, if you would like to modify and resubmit a
new version for testing. We will reject the current submission without
charge.

Thanks. We are looking forward to your reply.”

Without persistent data, how can a Flash Lite 1.1 application know whether the the application has been run previously, or in fact allow the user to select a check box to ‘never show this message again’?

Q. When is passive content not passive content?

Tuesday, September 19th, 2006

A. When it’s bundled with active content.

So I finally got my ACS publishers ID from verisign, and as I thought the next step is to follow the instructions to download your certificate and replace it for the developers *.cert file we used to create a dev .sis for testing.

So I finally had my .sis signed with an ACS publishers ID and everything, all that was left to do was to upload my application through the Symbian signed website it’s fairly self explanatory, but in the interests of documenting everything I’ll blog that too at a later date.

Onto the passive / active saga

A day or so after I submitted my application I received this response from the testing house:
We have received your application and for your interest, we performed a free
basic check for it.

During the basic check, we observed that the application needs connect to
network but privacy statement for it is missing.

According to Symbian Signed criteria (CON-02), there are two display modes
for Privacy Statement as following and either of them can meet the Symbian
Signed criteria,

Mode 1: Privacy Statement is displayed at the first ever launch of the
application and after user confirmed the statement, it will not prompt again
for subsequent runs.

Mode 2: A checkbox can be made available in Privacy Statement to enable the
user to disable the prompt for subsequent runs. Or a query dialog text can
be used instead of the checkbox.

Following is Best Practice for privacy statement,

TITLE: For your information

BODY: This application will make use of the following features of your
phone. If you have any questions or concerns, please contact us at


e-mail address>:

Bluetooth to connect to other Bluetooth-enabled devices
Sending SMS messages
Sending MMS messages
Making phone calls
Making a connection to the Internet
Allowing you to add or edit contacts
Reading existing information from your contacts database
Recording sounds using your phone’s microphone

TICKBOX: Do not show me this information again

Could you please kindly have a double check?

(more…)

SWF3SIS - The journey so far

Friday, August 18th, 2006

Summary:

This post is the chronicle of my journey into S60 9.x or Nokia 3rd edition development from a Flash Lite developers perspective. In this epic post I show how I have gone about creating a .sis file with the intention of having it signed together with the development of a native C++ .exe which launches my .swf file (my Flash Lite application) from an icon in the mobile phone menu. This is not intended to be the definitive answer, more a documentation of my personal holy grail.

Okay so for a while now we’ve all been developing Flash Lite apps, and the first major hurdle was, duh no pre-installed players. That was fine we were able to buy a player and install it onto our 60 series Nokias, develop some cool content and test it on our phone. And back in the good old days, when we had absolutely no idea when ‘pre-installed’ phones were going to hit the shelves, we were able to use the lovely swf2sis from those nice guys from Blue Sky North So we had cool installable content and no phones to send the content to without trying to convince end users to go off to Adobe Store and buy the player for £6.

Now nearly two years later there are so many Flash Lite pre-installed mobile devices that I’m personally having trouble keeping up, and everything should be just rosie, shouldn’t it? Hmm not quite, as now Symbian have moved the goal posts on signing applications, which is fine if it means my N91 isn’t going to get riddled with smallpox. What I have found to be a major pain is that, to a designer developer like myself, the whole process is a perceived nightmare. This means we’ve now got the reverse, lots of smashing content, lots of devices capable of playing our content ’straight out of the box’ and absolutely no idea how to get the two together*. Hopefully this, my very first tutorial should help you take your Flash Lite content and package it into a nice neat signed and distributable, S60 application.
(*let’s ignore BREW for the time being, as I’m in the UK and just jealous)

How to package, sign and get your Flash Lite content tested for commercial distribution.

First off here’s a shopping list of application you are going to need and joy of joys they’re all free.

NB Download and install in this order

1, Active Perl 5.6.1 build 631
2, Java Runtime version 1.4.1_02
3, Carbide C++ EXpress
4, S60 Platform SDK for symbian OS C++ Choose S60 3rd Edition SDK for Symbian OS, for C++ (262MB)

(Edit) This is now 3rd edition FP1

Now go over to VeriSign and apply for your ACS Publishers ID, this will take a day or two to get back to you and may require a signed letter from a Notary (as in my case and should be sorted by within a couple more days) The ACS ID will cost £185 or $350 and will last a year.

No go over to Symbian Signed and register yourself there, part of the application form asks for your ACS ID, if you have it cool, I didn’t and I’m asuming I can add it later. Once you have an account you need to “Request UID’s” these are the unique numbers which will be allocated to your application.

As this application is going to be signed click ‘protected range’, Fill in the details here the UID’s for your UID can now be seen by clicking “View UID’s”.

Signing S60 .sis files requires:

  • a .sis
  • a certificate file *.cer
  • and a key file *.key

First of all we get our certificate from Symbian Signed website, click Developer Certificates from here you can download the ‘DevCertRequest‘ tool. Once downloaded, install the tool and run it, you are asked a series of questions:

  1. Browse to, or enter the location you want to create your csr file in ie ‘C:\carbideDev\certs\pocketflash.csr’ click next
  2. Key File Information - if you have an ACS pub ID then this is where it gets used, I don’t so for the time being I’ll click no and again browse or enter the location you want to create your *.key file ie ‘C:\carbideDev\certs\pocketFlashKey.key’ below this input box it requires a ‘private key file password’ and asks to verify this I entered ‘flash’ but you can use something a little more ‘password like’ click next.
  3. Personal Information - as it sounds file in as appropriate my I used ‘pocket marketing’ as my common name. click next.
  4. Phone and capabilities - As this is a developers certificate it is locked to one phone and requires it’s IEMI number, which can be found by pressing *#06# on your phone, enter it in here. You are also asked to add the capabilities you will require, I’ll be honest with you here I’m not sure what you need so I added them all. Click next / Finish and you should now have your very own developer certificate and key ‘pocketFlash.csr’ and ‘pocketFlashKey.key’

Now back to Symbiansigned.com and click ‘Request DevCert’ (make sure you log in to see this in the menu) browse to your *.csr file in my case ‘C:\carbideDev\certs\pockflash.csr’ and click send.

After a minute or two you can click ‘View DevCerts’ where your certificate will appear click download and save it into the folder with your *.csr file and your *.key file

Now lets open Carbide

File > New > C++ Application for S60 Project

Enter the name of your project eg ‘pocketflash’
The most important tip I have about Carbide is this, make sure your workspace path contains NO spaces as in:

BAD

C:\Documents and Settings\gareth

I chose

GOOD

C:\carbideDev

and it works for me.

Click Next

From the templates wizard select ‘S60 3.x GUI Application and click next

Now you are asked which SDK to use, hopefully there should be a tree structure ‘All SDK’s > S60_3rd’ and below there should be two SDK’s ‘S60 3.0 Emulator Debug’ and ‘S60 3.0 Phone (GCCE) Release’ make sure both are checked and click next

Here you are asked for your basic properties, you will now need your UID which will look something like 0×20000000 from symbian signed (click view UID’s)

Author - ‘Gareth Evans’

Copyright notice - ‘Copyright Pocket Marketing, all rights reserved’

Text to be shown - ‘pocketflash’

Click next

Directories - leave as defaults and click finish

You now have a directory structure for a default S60 GUI application, well done.

In explorer navigate to your workspace folder, in my case it’s ‘C:\carbideDev’ there you should find a new folder for this project again mine’s called ‘pocketflash’ inside it there should be a folder called sis, this is where you need to put your *.swf file. eg ‘C:\carbideDev\sis\pocketflash.swf’

Creating a Menu Icon

The initial setup wizard also creates a default icon here ‘C:\carbideDev\pocketflash\gfx\qgn_menu_pocketflash.svg’

Open this in an editor that is capable of saving out .svg file formats (I used Illustrator) from here you can delete the default icon generate your own, save and close the file.

Now back into Carbide

Click ‘Project’ from the top menu bars and down to ‘properties’ on the left of the properties panel click ‘C/C++ Build’ and change the ‘Configuration type’ from ‘S60 3.0 Emulator Debug’ and ‘S60 3.0 Phone (GCCE) Release’

The menu in the middle of the panel should refresh, under the option ‘CreateSis (installation File Generation)’ click ‘general options’. On the right hand side there should be a new this is where we add our certificate and key files that we created with our ‘DevCertRequest’ tool earlier. Add your passphrase in here, mine was ‘flash’ and then browser to your *.cer and .key files respectively. Now add the name you want to call you signed .sis file I called mine ‘pocketflashsigned.sis’.

While we in the properties window, again under the central ‘Tool Settings’ panel, underneath ‘GCCE Linker’ select ‘Libraries’.

Now on the right hand side, there is a panel titled Libraries. Click the Green Plus icon and enter ‘${EPOC32_RELEASE_ROOT}\ARMV5\LIB\apmime.dso’ click Okay.
Click the green plus icon again and this time enter ‘${EPOC32_RELEASE_ROOT}\ARMV5\LIB\apgrfx.dso’ (without the quote marks) click okay and apply then okay which should take you back the main carbide window.

On the left handside, there should be a ‘Navigation’ panel, if not click ‘Window > Show view > Navigation’. This show a directory tree for your project(s).

Click the plus symbol next to your project to expand the tree, from here there are a list of directories that make up your application.

Click the plus symbol next to the ’sis’ directory and then double click on the file with the .pkg extension eg ‘pocketflash.pkg’.

At the end of this file we will add one line of code that will break down into two sections:

  • The local path to the .swf file you want to package.
  • And the directory structure you want to create on the device.

eg, ALL ON ONE LINE, INCLUDING THE QUOTE MARKS
“C:\carbideDev\pocketflash\sis\pocketflash.swf” -”!:\pocketflash\pocketflash.swf”

Save and close the .pkg file

Now click the plus symbol next to the ’src’ folder icon, now we can see it’s contents, double-click to open the file that ends ‘AppUi.cpp’ eg ‘pocketflashAppUi.cpp’

This is where we will enter the code that opens our .swf file.

NB. THIS CODE IS AS-IS, ALTHOUGH I’VE COMPILED AND TESTED IT ON MY DEVICE I CANNOT GUARANTEE THAT I HAVEN’T OVERLOOKED OR COMPLETELY MISSED SOMETHING WHICH MAY BE DEEMED IMPORTANT.

What I can say is this, I fully intend to get this checked out by someone who know’s a lot more about C++ for S60 than I do, and as soon as that happens I’ll post any amendments here.

Onto the code:

In the pocketAppUi.cpp file find the line:

// INCLUDE FILES

And add these two lines

#include <apgcli.h>
#include <aknutils.h>

Add these two lines below all if the include calls
_LIT(KFile, “\pocketflash\pocketflash.swf”);
TFileName aFileName(KFile());

Now we nee to change the ‘ConstructL()‘ function

My function looks like this:

void CpocketflashAppUi::ConstructL()
{
// Initialise app UI with standard value.
BaseConstructL();

// Create view object
iAppView = CpocketflashAppView::NewL( ClientRect() );

// Create a file to write the text to
RFs fsSession;
User::LeaveIfError(fsSession.Connect());
CleanupClosePushL( fsSession );

TInt err = fsSession.MkDirAll(KFileName);
if ( KErrNone != err )
{
CleanupStack::PopAndDestroy(1); // fsSession
return;
}

RFile file;
err = file.Replace(fsSession, KFileName, EFileWrite );
CleanupClosePushL( file );
if ( KErrNone != err )
{
CleanupStack::PopAndDestroy(2); // file, fsSession
return;
}

RFileWriteStream outputFileStream( file );
CleanupClosePushL( outputFileStream );
outputFileStream << KText;

CleanupStack::PopAndDestroy(3); // outputFileStream, file, fsSession

}

//Replace the whole function with this

void CpocketflashAppUi::ConstructL()
{
// Initialise app UI with standard value.
BaseConstructL();

CompleteWithAppPath(aFileName);

//start of my code trials
RApaLsSession session;
session.Connect();

// Gets the UID and MIME type for the given file name.
TUid uid;
TDataType dataType;
session.AppForDocument(aFileName, uid, dataType);

// Runs the default application using the MIME type, dataType.
// You can also use the UID to run the application.
TThreadId threadId;
User::LeaveIfError(session.StartDocument(aFileName, dataType, threadId));

session.Close();
User::Exit(0);

}

Remember to change the first line

void CpocketflashAppUi::ConstructL()

to

void CYOURAPPNAMEHEREAppUi::ConstructL()

There is one more line of code you need to change in this file, which can be found ‘around line 130, give or take’

User::LeaveIfError(rFile.Open(fsSession,KFileName, EFileStreamText));//EFileShareReadersOnly));// EFileStreamText));

Change ‘KFileName‘ to ‘aFileName

Save this file and close it

Okay nearly there, in the main menu click ‘Project > Build Project’

Give Carbide a minute or two to do it’s thing and then check inside your ’sis’ folder where you should now find your shinny new pocketflash.sis file.If for some reason it’s not there Carbide comes with ‘problems and console’ windows at the bottom part of the applicaton, which makes debuggin a bit easier. Check over everything and try again, this time instead of clicking ‘Project > Build Project’ choose ‘Project > Clean’ check the box entitled ‘Clean projects selected below’ and tick your project. Click okay and hopefully everything should work and give you your .sis file.

I personally use nokia application installer to get it onto my N91 but you can use whatever you like, run the installer and and launch your application, which will now be placed inside the ‘My Own’ folder.

As I haven’t received my AC Publishers ID as yet I haven’t had my application signed, as far as I am aware once this has gone through I can download another *.cer and *.key pair and replace the developer pair I’ve used in this tutorial.

Once I’ve re-compiled the .sis in carbide the .sis is sent to a testing house (see test houses on Symbiansigned.com for more info) to be tested. This is the theory anyway, as soon as I’ve put this into practice I’ll be updating here.

About Gareth

Friday, July 7th, 2006

10 years in the business, with a continual love affair with Flash.

Experience with Flash for mobile, video, game development, website assets and full site development.

Languages:
Actionscript AS 1.0 / 2.0
Actionscript for Flash Lite 1.1 / 2.0 /3.0
HTML - XHTML
W3C accessibility guidelines
XML
CSS
PHP
MYSQL
Ruby on Rails
Applescript
Applications:
Flash
Flash video streaming
Flash for mobile devices
Photoshop
Illustrator
Freehand
Fireworks
Dreamweaver
In-design
MDM Zinc
After Effects
Final Cut pro
Premiere
Infini-d
Poser
Director
Experience with:
Carbide Express C++
Xcode
Web hosting knowledge
Streaming media - Quicktime broadcaster
SWF desktop
Podcasting
SMS gateway - incoming and outgoing
SMS, MMS premium billing
Bluetooth content delivery