Archive for the ‘Symbian’ Category

Who wants their Flash Lite signing?

Wednesday, October 17th, 2007

Okay I’ve banged on about this enough, it’s time for a show of hands.

Q1, If a service were available that would take your Flash Lite content (including a menu icon bitmap/vector) and return to you a fully tested Symbian Signed .sis file, would you be:

  1. Very interested in this service, please contact me now
  2. Interested in this service
  3. Not interested
  4. Are you mental, I can self-sign

Q2, Would you expect to pay

  1. £10 - £50
  2. £50- £100
  3. £100 - £200
  4. More than £200

Q3, If this service were available to you, which S60 edition would you most likely require:

  1. 1st edition
  2. 2nd edition
  3. 3rd edition
  4. 2nd and 3rd editions
  5. All of the above

Q4, If a service were available that would deliver to you, a keyword and shortcode for example “TEXT ‘pocketflash’ to 60999″ which would then deliver your content Over-The-Air, would you be:

  1. Very interested in this service, please contact me now
  2. Interested in this service
  3. More interested in this service if it could detect whether the end user had a version of Flash Lite
  4. Not interested

Apollo apps on your phone?

Saturday, March 17th, 2007

Renaun Erickson has posted the keynotes from ApolloCamp

This pretty much sums up what I’ve been thinking since I watched Christopher Brichford’s Apollo presentation

“But the idea is that Apollo builds on tools and technology that is already out there and move it further into Desktop RIA and phones (Apollo, Flash list).
Interesting note about reasons for choosing WebKit as the HTML engine. It was small, had a mobile version, Nokia has ported it

Surely it’s only a matter of time before we get to develop Apollo mobile apps?

The nightmare has come to an end - Swf2go by Orison

Monday, March 12th, 2007

At last the gap between Flash / Flash Lite developers and a professional .sis file has been bridged. Orison have just announce Swf2go, the all in one package that enables developers to create a .sis file from one application, including:

· Professional SIS Installer and SWF Launcher toolkit
· Supports versions 1.1, 2.0 and 2.1 of Adobe Flash Lite Player
· Supports Symbian S60 platform editions 1st, 2nd & 3rd
· Auto sign SIS installer with provided certificate
· Supports developer certificates
· Built-in Intelli-Launch Technology
o Automatically detects and starts SWF with the latest on-device Flash Lite player
o Shows an info-note with URL to download Flash Lite from adobe’s website, if Flash
Lite is not detected on user’s cellphone
o Allows to launch multiple Flash Lite applications simultaneously *
o Flicker free SWF launch
o Guaranteed launch with Flash Lite 1.1 (on S60 1st & 2nd Editions)
· Command-Line compiler support
· Supports build automation by XML project files
· Quick compile SWF2Go Project file with right-click context menu

swf2go

Interestingly there is a place for a readme.txt file which could be substituted for a privacy statement required by symbian signing if you application uses and of the following features:

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

Criteria CON-02 -
“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.”

The app generates .sis for s60 1st 2nd and the all important 3rd edition, for Flash Lite 1.1, 2.0 and 2.1

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.

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.