Re: Buttons Won't Respond to MouseOver

2020-11-20 Thread Erik Thomas
Well, it would be nice to know why your components are defaulting to mobile 
skins on desktop. That is probably a question for the developer mailing list. 

If I was in your shoes, I would be sharing a single codebase between desktop 
and mobile, and while it's a little bit brute force, just use the @media query 
in your main css file: 

@media (os-platform: "IOS") or (os-platform: "android") {
s|Button {
skinClass:ClassReference("spark.skins.mobile.ButtonSkin");
}
}

@media (os-platform: "Macintosh") or (os-platform: "Windows") {
s|Button {
skinClass:ClassReference("spark.skins.spark.ButtonSkin");
}
}



Re: Buttons Won't Respond to MouseOver

2020-11-20 Thread Erik Thomas
Have you given thought to just adding type descriptors to your CSS that changes 
the skins to spark throughout your app? Seems you could do this for the grid, 
text inputs, and buttons in a few minutes per app. Or if you have custom skins, 
just derive them from the spark skins instead of mobile skins? All you really 
need is for the skin to declare an "over" state, and then set "over.color" and 
other attributes for the "over" state.



Re: Future of Flex

2020-09-12 Thread Erik Thomas
Hey Carlos:

Our decision to commit to React Native was because: 

1.) It is very difficult to find skilled (or even interested in learning) Flex 
developers anymore. I posted a job on this very forum six weeks ago and 
received no interest from anyone wanting to go full-time as a Flex/AIR remote 
developer, and our other recruiting channel also came up empty.

2.) Schools are teaching React, and there are many young, passionate developers 
who want to work with it.

3.) The right business decision for us was to identify and embrace a platform 
that's proven, yet young enough to still be growing in adoption, and shares 
language, tools, libraries, design patterns etc., between web front-end (React) 
and mobile (React Native), and supports implementing native access to devices 
without relying solely on a plug-in marketplace. 

I'm not really interested in learning and developing with React myself, but 
I've been coding less and less as our company has started growing pretty fast 
now since we released an MVP in February that has gone pretty viral among 
investors who want to invest in pre-IPO companies, like Robinhood, Ripple, and 
more.

If I were to start another company with a great app idea by myself, I will 
certainly use Flex/AIR for mobile, and almost certainly use Royale for web and 
continue with a Java/Spring back-end with MySQL all running in AWS cloud. That 
is my comfort zone tech-stack I've been working in for many years.

Thanks for making me think about Royale for my next web project and I wish you 
the best of luck evangelizing and recruiting a strong team to push this tech 
back into the mainstream. 

Best regards,

Erik

=

Hi Erik,

As I said, I understand your company wants to go React. It's just natural.
I'd love to see more companies trusting Royale and going with us, but while
that is attractive don't think that should be our final purpose. I must say
I'm glad to work on improving Royale since I believe in this technology and
its programming model, I think there's nothing better than it and enjoy it!
:). So getting others (individuals and companies) to jump and use it, would
be very cool, but don't want that to make any difference, but the potential
people that could invest his time in submitting PRs, patches or work in new
outputs like WASM/IOS/Android.

I think Royale should be fun and make people work with it for his personal
apps or try to introduce in its business or company, but knowing there's a
team of passionate people behind it that love to invest his time on making
it better and better over time, and that nowadays is already working, and
maybe we still could miss some things, but now anyone can learn Royale and
make anything he still miss on the current state.

Techs, frameworks,...all come and go all the time :), so I feel comfortable
pushing something that is not behind the commercial business tentacles of
Google (Angular), Facebook (React), Microsoft or Apple...

So just say you, don't worry about your company going React, if you love
the Flex (now Royale) programming model and have some personal Flex Apps
you want to migrate, try to go yourself with Royale and enjoy it, I'm sure
you will! :)

Best,

Carlos



Re: Future of Flex

2020-09-11 Thread Erik Thomas
Hey Carlos and all who responded to my philosophical waxing about my sadness at 
abandoning such an amazing platform for developing mobile apps. 

I plan to play with Royale and consider it for a new side project I'm looking 
at for web, and I really appreciate the people who put so much of their time 
into creating Royale. Being able to continue with the MXML/AS3 model is 
extremely attractive, especially since I have such a large collection of my own 
UI widgets and utilities. When the mobile theme was initially released I 
immediately set out to create mobile apps but needed some of the heavier weight 
controls in spark (not mobile theme) and so I ended up recreating a lot of UI 
functionality from containers that didn't need to solve for every use case 
under the sun which resulted in better performance when mobile devices were so 
very slow. Of course now that devices are so much faster, that issue faded away 
for the most part. But being able to continue using my libraries with Royale 
for a web app is too good to resist. 

But the decision to go with React Native for mobile has been made and the 
investment in reworking our flagship mobile app will break ground later this 
month. And we recently replaced our web app version of the mobile app with 
React and are going live next week, so there's no room for Royale or Flex at my 
company anymore, except for RTB sunsetting of the existing AIR apps until we 
replace them.

However, I agree with Paul's comments too about inconsistent DOMs preventing 
even Royale from fully achieving what we've so enjoyed from Flash all these 
years. It's just sad that Adobe lost their passion for Flex and Flash/AIR so 
long ago and didn't keep up. I keep thinking how amazing it would have been if 
the Flash/AIR was kept competitive, like incorporating new device capabilities 
directly into the runtime by wrapping the native calls, rather than depending 
on ANE developers to fill the gaps. ANE is a great model, but Adobe relied too 
much on the ANE marketplace to provide Flex developers with native 
functionality that really should have been part of the runtime, organic 
functionality that nearly every app needs.

And my only other complaint about the AIR runtime on mobile is the kludgy 
implementation of stage text input that never kept up. Custom soft keyboards 
should have been available as XCode and Android Studio exposed new keyboards, 
like a Phone number keyboard for instance. And the way stage text input fields 
have to be destroyed (not simply hidden) to avoid showing up on top of other 
views. But we worked around all that. 

I am sorry to see the day we stop using Flex/AIR at my company. Oh well.

I raise my glass to all the awesome designers, architects, and engineers who 
worked at Macromedia, and later at Adobe, and later on the Apache Flex OS 
project (and Royale) for creating such an amazing platform that brought me such 
joy, some pain, frustration too, but most of all, pride in the products I 
created with it. Since earning my ACE years and years ago I've been so 
passionate about the platform, it's going to be hard to leave it and this 
amazing community.

Peace.

Erik





Future of Flex

2020-09-10 Thread Erik Thomas
Hey all:

If you are a Flex devotee, like me, a longtime admirer of the beauty in Flex 
that introduced a declarative + procedural model that preceded Microsoft's C 
sharp and WPF models that essentially stole the idea from Flex for a structural 
MVC where the view and controller were represented by the MXML and as3 
respectively, I believe there is much life left in Flex.

It is still a very relevant platform for creating single-codebase mobile apps 
for Android and iOS. It produces far smaller executables than Swift and most 
all other competing platforms. The availability of ANEs to access native 
capability provides near parity with native app development, not quite, but 
close enough to get multiplatform support for a single platform.

I've been developing Flex apps since 2007 with the release of Flex 3 by Adobe. 
I was working for Intuit at the time Flex was a huge departure from Intuit's 
C++/MFC centric development platform that was used for QuickBooks (I was a 
QuickBooks engineer prior to accepting a challenge to develop a new product 
using Flex). It was refreshing to start a new project and not have to maintain 
and develop on a 6 million LOC C++ application.

While I was at it I was also one of a team that was evaluating MS WPF so I 
learned that too, and while I still think WPF was amazing, it stole much of 
it's design from Macromedia that designed Flex, and I haven't seen a new 
paradigm to challenge the declarative/procedural design even today, IMHO. But 
the real power is in the runtime. Just like Java practically replaced C and C++ 
based web development because of the amazing advantages of a sandboxed runtime 
environment, the AIR runtime is brilliant, even today. No other major platform 
for mobile (or web, though the flash player is definitely dying) can equal the 
performance of the AIR runtime. One must compile to native and that comes with 
a boatload of problems especially multi-platform support. A runtime engine is 
still brilliant, just as Java runtimes still power nearly half of the billions 
of web apps on the internet.

What I don't understand is why Flex doesn't attract more developers, but I'm 
sure it's because universities and colleges, and tech schools don't teach it 
because it's considered fringe. If people really understood what it could do we 
could see third party tools, ANEs, and new innovations that pushed it back into 
the mainstream.

Oh well. Sometimes the best ideas and designs don't achieve mindshare and fail 
for reasons entirely unrelated to capability.

Ancients like me will remember the VHS vs. Betacam wars where the latter was 
10X better and still failed because of marketing, mindshare, and somewhat 
political reasoning.

My company still has two very successful mobile apps built with Flex/AIR and 
some ANEs by Distriqt (the very best ANE developer on the planet without 
doubt): Linqto and Keiretsu Forum.

Alas, we have even succumbed to pressure to replace these apps with REACT 
Native and will be embarking on this road in the next month. It's a sad day. 
But now that a big company like Adobe has relinquished the reins of both Flex 
(some years ago) and AIR (to Harmann recently), it seems the fate of this 
amazing development platform is destined to the graveyard.

I know there's lots of great innovation with Royale to breathe live back into 
Flex apps, and there are migration options as well. These are great things, but 
in my opinion, unnecessary because the AIR runtime is FAR, FAR better than 
relying on any browser-based rendering engine to render javascript, html, and 
CSS.

Just sharing my opinion as someone who has made his living with Flex since 
2007, was once a master/guru of MFC/C++ since Windows 1.5, and got my first 
contract in 1983.

Erik Thomas
Chief Architect
http://linqto.com





Re: In App Purchase ANE for Android

2020-08-31 Thread Erik Thomas
We've been using Distriqt ANEs exclusively for the past two or three years. 
They are really great and Michael keeps them up to date. Can't say enough good 
about them. We are using Distriqt's Firebase Push Notifications, Application, 
Scanner, Dialog, PDF Reader, Local Auth (biometrics auth), Native Web View, and 
Network Info ANEs. We don't use in-app-purchases so I can't vouch specifically 
for that one, but Distriqt is the one vendor dependency we have that we don't 
worry about. I can't say that about plenty of other dependencies in creating 
AIR apps for Android and Apple.



Re: Apache Flex Installer

2020-08-24 Thread Erik Thomas
I just make a copy of my current Flex/AIR combined folder and overlay the new 
AIR SDK. I never saw a need to keep a clean Flex-only SDK for that and have 
never run into trouble for the past 4 or 5 SDK updates I've done. 

Just be sure to use -rf switches on the cp command (if using Mac bash Terminal) 
to force the overwrites of existing files of same name and copy recursively the 
entire directory tree:

> cp -rf /* 

Just don't use Finder to copy the AIR SDK over the Flex/AIR SDK folder. For 
some reason that causes all kinds of errors that are avoided with the "cp" 
command.

If you don't have a Flex SDK installed already, I suppose you can download it 
without the installer, though I don't know where you'd find that.



Re: ADT fails to install on iPhone 11, iOS 13

2020-08-18 Thread Erik Thomas
I think I found the answer I Harman's AIR SDK Release notes for build 176:

"Gamua-287: Installer on MacOS now copes with iPhone XR and the newer UDID 
format"

So the UDID format change appears to have broken the ADT installer. We'll be 
upgrading our SDK from build 33.1.1.86 to latest build 33.1.1.217 soon and see 
if that fixes it for us.




ADT fails to install on iPhone 11, iOS 13

2020-08-18 Thread Erik Thomas
Anybody seen this? Using IntelliJ 2020 with ADT, and ADT fails to install debug 
builds from the IDE. There are no Intellij logged entries, not even the ADT 
command is being logged, and viewing the install from XCode Console, there 
isn’t even a handshake from ADT. The UI shows it being installed for a moment 
and then it waits to connect, but the app is never installed. But use a 
different phone and it works just fine.

It seems specific to iPhone 11 XS Max. This phone is registered in Apple 
Developer Device list, and included in the mobile provisioning file. The odd 
thing we noticed was the UUID was in a slightly different format than the UUIDs 
for older phones. Probably nothing, but we’re grasping at straws to make this 
11 XS work.

We did try to set the phone to dev mode, but can’t figure out how to do it. 
There’s many conflicting and out-of-date methods of button-pushing voodoo to 
make it go into some weird state and they so far don’t work and I’ve never had 
to do that for any of my other 4 iOS devices, one of which is an iPhone X.

Thanks for any ideas.

Erik



Re: Unable to build air IOS app - asking SDK13

2020-07-16 Thread Erik Thomas
Sorry, there are a couple spaces in the commands that could mess you up. Here 
are the corrected commands, note that AIRSDK_Flex_MacOS is the directory 
created by double clicking the zip file.

> cp -rf ~/Downloads/AIRSDK_Flex_MacOS/* ~/SDK4.16.1-H33.1.1.86

There was a space in the SDK path in my first post. Here is the corrected 
version just in case, but you'll use your own naming convention I'm sure.

In ~/.bash_profile (create the file if it doesn't exist, or edit ~/.profile 
instead:

export FLEX_HOME=~/SDK4.16.1-H33.1.1.86

On 7/16/20, 10:18 AM, "Erik Thomas"  wrote:

It's not difficult to do this. Here are simple instructions for Mac. BTW, 
you don't need airHome (see FLEX_HOME below). The key here is to NOT use Finder 
to copy the AIR SDK over the Flex SDK. Doing that will end up with build errors 
for reasons I don't understand. Just use the command line for the copy -rf and 
it will work fine.

1. Install the Flex 4.16.1 using the installer and keep a copy of it for 
overlaying with newer versions of AIR. 

2. Create a folder for the new combined SDK. Mine is named like this:

~/SDKs/SDK4.16.1-H33.1.1.86

...where the Flex SDK version is 4.16.1, H33 is Harmon AIR SDK version 33, 
and 1.1.86 is the build number since Harmon releases new builds of the 33 
version. I am at 86 since it works for me and when it comes to AIR SDKs, so 
many things seem to get busted with new releases, I stick with what works and 
upgrade only when necessary. But you need 33 to get past lots of breakage in 
32. I name the folder with the full build number because I may have to roll 
back to using a previous build if I run into troubles.

3. Copy the Flex 4.16.1 backup SDK to the new folder.

4. Download the AIR SDK zip file from Harman:

https://airsdk.harman.com/download

5. Save the zip file to downloads or a temp location.

6. Unzip the file by double-clicking it in Finder.

7. In the terminal (shell), execute these commands (assuming your AIR SDK 
is unzipped and in ~/Downloads/airsdk):

> cp -rf ~/Downloads/airsdk /* ~/SDK4.16.1-H33.1.1.86

8. Update FLEX_HOME env var to the new SDK path by editing your ~/.profile 
or ~/.bash_profile:

> open -e ~/.bash_profile

9. Add this line:

export FLEX_HOME=~/ SDK4.16.1-H33.1.1.86

10. Restart your IDE and any open terminal windows to "get" the FLEX_HOME 
env var which is used by ADT and ant if you do any command line builds. 

11. Switch to the new SDK in your IDE project and/or modules, any build 
scripts (if you automate builds) your app descriptor swf version, etc.

Any time you get a new AIR SDK just use the Flex 4.16.1 SDK you saved and 
put it into a new folder and follow the directions above. I have been doing it 
this way for years, though they changed slightly since Harman took over (just 
the SDK location and the fact it's a zip file).




Re: Unable to build air IOS app - asking SDK13

2020-07-16 Thread Erik Thomas
It's not difficult to do this. Here are simple instructions for Mac. BTW, you 
don't need airHome (see FLEX_HOME below). The key here is to NOT user Finder to 
copy the AIR SDK over the Flex SDK. Doing that will end up with build errors 
for reasons I don't understand. Just use the command line for the copy -rf and 
it will work fine.

1. Install the Flex 4.16.1 using the installer and keep a copy of it for 
overlaying with newer versions of AIR. 

2. Create a folder for the new combined SDK. Mine is named like this:

~/SDKs/SDK4.16.1-H33.1.1.86

...where the Flex SDK version is 4.16.1, H33 is Harmon AIR SDK version 33, and 
1.1.86 is the build number since Harmon releases new builds of the 33 version. 
I am at 86 since it works for me and when it comes to AIR SDKs, so many things 
seem to get busted with new releases, I stick with what works and upgrade only 
when necessary. But you need 33 to get past lots of breakage in 32. I name the 
folder with the full build number because I may have to roll back to using a 
previous build if I run into troubles.

3. Copy the Flex 4.16.1 backup SDK to the new folder.

4. Download the AIR SDK zip file from Harman:

https://airsdk.harman.com/download

5. Save the zip file to downloads or a temp location.

6. Unzip the file by double-clicking it in Finder.

7. In the terminal (shell), execute these commands (assuming your AIR SDK is 
unzipped and in ~/Downloads/airsdk):

> cp -rf ~/Downloads/airsdk /* ~/SDK4.16.1-H33.1.1.86

8. Update FLEX_HOME env var to the new SDK path by editing your ~/.profile or 
~/.bash_profile:

> open -e ~/.bash_profile

9. Add this line:

export FLEX_HOME=~/ SDK4.16.1-H33.1.1.86

10. Restart your IDE and any open terminal windows to "get" the FLEX_HOME env 
var which is used by ADT and ant if you do any command line builds. 

11. Switch to the new SDK in your IDE project and/or modules, any build scripts 
(if you automate builds) your app descriptor swf version, etc.

Any time you get a new AIR SDK just use the Flex 4.16.1 SDK you saved and put 
it into a new folder and follow the directions above. I have been doing it this 
way for years, though they changed slightly since Harman took over (just the 
SDK location and the fact it's a zip file).



Looking for a Flex AIR FTE

2020-07-13 Thread Erik Thomas
Hey all:

We’re looking for a senior Flex AIR mobile developer. This is a full-time 
employee position that includes competitive salary and stock options and the 
candidate will work remotely, even after the pandemic.

Why consider this position? 

* We offer Industry standard salary with options in a growing company based out 
of the San Francisco Bay Area.
* Get in on the ground floor. We are pre-IPO.
* Work on our flagship products. Our apps ARE our business.
* Work remotely, both during and after the pandemic.
* Flexible hours.

Responsibilities:

* Creating, maintaining, extending and testing Flex-based AIR mobile apps that 
interface with multiple back-end services via REST APIs.
* Deploying mobile apps to Google Play and Apple App Store (iTunes Connect).
* Assisting in designing mobile-first user interfaces and interaction models.
* Maintaining and provisioning various development certs and provisioning 
profiles (Apple Developer)
* Coordinating feature development with web app developers who are creating web 
versions of the mobile apps.
* Leveraging various off-the-shelf Air Native Extensions (ANEs).
* Keeping up-to-date on mobile developments, technologies, and trends.

Qualifications:

* BS in computer science or equivalent education/work experience.
* Senior level expertise in Flex/ActionScript development.
* Familiarity with AIR mobile (or desktop) app development and deployment to 
stores.
* Strong written and verbal communication skills.
* Strong problem solving and analytical skills.
* Self-starter, ability to be successful working remotely with an 
English-speaking team.
* Experience working with MacOS and shell scripting desired.
* Familiarity with deploying and using Air Native Extensions a plus.
* Experience with deploying mobile apps on Play and Apple Stores a plus.

Who is Linqto?
 
What Coinbase did for crypto and Robinhood did for public securities, Linqto is 
doing for private securities. Linqto is democratizing the purchase of pre-IPO 
Unicorns shares by making them accessible, affordable and liquid to the average 
accredited investor. We are a mobile-first, early adopter platform with the 
tagline (also our vision) private investing made simple. After two years in 
R&D, Linqto launched its MVP in February and by May started hitting our hockey 
stick. Now we are about execution and scale. Be ready to fasten your seat belt 
and put the pedal to the metal. Join a company that has fun and is on the 
cutting edge of disrupting the investment industry.

If you are qualified and interested, please contact me directly via email or 
phone.

Thank you!

Erik Thomas
Chief Architect
Linqto, Inc.
http://linqto.com
Office: 541-247-2995 / Mobile: 303-304-1466
Erik Thomas
Chief Architect
 <https://www.linqto.com/>http://linqto.com <%0b%0bhttp:/linqto.com>
Office: 541.247.2995 / Mobile: 303.304.1466


This email may contain confidential and privileged material for the sole use of 
the intended recipient. Any review or distribution by others is strictly 
prohibited. If you are not the intended recipient, please contact the sender 
and delete all copies.
 



CFBundleDisplayName in app descriptor

2020-03-11 Thread Erik Thomas
Hey all:

When creating a new app on Apple's App Store Connect the app title must be 
globally unique which caused us to create a longer name that wasn't taken.

This results in our app name being truncated with ellipses beneath the app icon 
on the device desktop.

We want to set a shorter name that will display beneath the icon, and Apple 
supports just that by simply setting this element in Info.plist:

CFBundleDisplayName
Keiretsu

But Adobe designed the AIR SDK (specifically ADT) to prevent us from defining 
this element in the application.iPhone.InfoAdditions section of the application 
descriptor file for iOS. This is documented on this page: 
https://help.adobe.com/en_US/air/build/WSfffb011ac560372f-5d0f4f25128cc9cd0cb-7ffe.html

I tried anyway, and ADT threw this fatal error:

"error 105: application.iPhone.InfoAdditions contains an invalid value"

This seems like a pretty big miss on Adobe's part not to support this in ADT.

Just seems this should be supported in InfoAdditions. I wonder why Adobe didn't 
do this. Perhaps Harman will listen and fix ADT. I'm trying to figure out how 
to submit this to Harman.

I know it seems like a tiny issue, but we've created dozens of apps in the past 
several years, and finding unique names on App Store Connect that aren't taken 
and don't truncate on the desktop is a very real issue for us. We have written 
scripts to unzip, update Info.plist, and zip/sign before but this shouldn't be 
so difficult.

Thoughts?

Erik


Re: Flex 4.16.1 broken for AIR33.1?

2020-03-09 Thread Erik Thomas
On the original topic, it certainly seems easiest to release 4.16.2 with just 
fixes to the native function calls that are broken. Seems like it would be a 
small change for a developer familiar with the affected package. Then everyone 
who wants to milk the last few months from AIR 33.0 (prior to geom package 
breaking-changes) or older can just use Flex 4.16.1 and those who need AIR 33.1 
starting with the geom breaking-changes just need 4.16.2.

We can consider all the other wonderful ideas in this thread, independent of 
getting started on this particular fix. 

Just my $.02

Erik

On Mar 9, 2020, at 1:59 PM, Frost, Andrew  wrote:

Hi

Responding to a few of these:

1) what's the actual  support of Adobe for Flash Player, or if it will left to 
Harman as part of the AIR deal
[AF] Yes we have certain rights around the licensing of Flash Player, as we 
have had since the days of the OSP many years ago! but there are limitations to 
this :-)

2) Flash will be just present on AIR
[AF] This is where we need to clarify terminology: "Flash" as a rendering 
engine and ActionScript VM, yes it's in AIR. "Flash Player" as a browser 
plug-in, no that's not in AIR and hasn't been for several years.

3) donating to Apache has no sense at all, since Flash Player has many licensed 
closed source parts that can't be open source
[AF] Yes sadly this is very much true..

4) Browser vendors are closing plugin doors
[AF] and this is the crux of it. Doesn't matter if you're looking at Flash, 
Java, Silverlight, whatever .. plug-ins aren't going to be a viable solution 
longer term..

5) Why couldn't Adobe/Harman changed Flash to use the methodology Flash uses 
for deployment?
[AF] I'm assuming there's a typo, not quite sure what's meant, but the real 
issue is deployment via the web. If you can deploy a standalone application, 
then you can continue to use workarounds here, but if you need the app to be 
accessed via a standard browser then your best bet (for a Flex app) is likely 
to be Royale :-)

thanks

  Andrew



-Original Message-
From: Paul Stearns  
Sent: 09 March 2020 19:47
To: Carlos Rovira ; users@flex.apache.org
Subject: [EXTERNAL] Re: [Spam] :Re: Flex 4.16.1 broken for AIR33.1?

I am investing Royale, but haven't seen any results yet.

I am showing my ignorance here, but, my confusion is, will Java still be 
deployable via web browsers? If so, what is the difference between using a web 
browser to deploy a Java app, and a Flash app? 

Why couldn't Adobe/Harmon changed Flash to use the methodology Flash uses for 
deployment?

Paul R. Stearns
Advanced Consulting Enterprises, Inc.

15280 NW 79th Ct.
Suite 250
Miami Lakes, Fl 33016

Voice: (305)623-0360 x107
Fax: (305)623-4588


From: Carlos Rovira 
Sent: 3/9/20 3:31 PM
To: users@flex.apache.org, Paul Stearns 
Subject: [Spam] :Re: Flex 4.16.1 broken for AIR33.1?
Hi Paul, 

must say don't know what's the actual  support of Adobe for Flash Player, or if 
it will left to Harman as part of the AIR deal, maybe Andrew can give some 
light on this. Since Flash will be just present on AIR, and not in any other 
place, that could have sense. But that will mean more maintenance effort and 
people needed by Harman.

Anyway, donating to Apache has no sense at all, since Flash Player has many 
licensed closed source parts that can't be open source, or at least that's what 
they always says. But again...donating Flash Player and making it OS, if it 
could be something doable at some point (let's go utopic ;), does not change 
anything, since Browser vendors are closing plugin doors. So even in that case, 
it continue to be a death end.

I think Apache Royale is this days in a very good shape, and is better each 
day... so I maybe people should give a try and consider it as an option for the 
future.

Thanks

El lun., 9 mar. 2020 a las 20:04, Paul Stearns () 
escribió:
Has Adobe stopped supporting it, and has not turned it over to Apache? Now that 
is just unconscionable.

Paul R. Stearns
Advanced Consulting Enterprises, Inc.

15280 NW 79th Ct.
Suite 250
Miami Lakes, Fl 33016

Voice: (305)623-0360 x107
Fax: (305)623-4588


From: Carlos Rovira 
Sent: 3/9/20 1:28 PM
To: users@flex.apache.org, Paul Stearns 
Subject: Re: Flex 4.16.1 broken for AIR33.1?
Hi Paul,

not bad idea, but don't know a browser that will support Flash, and the problem 
is Adobe is stopping supporting flash player as a plugin, so I'm afraid that's 
not possible.

El lun., 9 mar. 2020 a las 17:40, Paul Stearns ()
escribió:

> Better yet, how about supporting a browser whose main feature is the 
> support of Flex?
> 
> My applications are 99.9% flex. The main things I use the browser for 
> is application deployment, file upload/download and displaying PDF files..
> 
> Paul R. Stearns
> Advanced Consulting Enterprises, Inc.
> 
> 15280 NW 79th Ct.
> Suite 250
> Miami Lakes, Fl 33016
> 
> Voice: (305)623-0360 x107
> Fax: (305)623

Re: Flex 4.16.1 broken for AIR33.1?

2020-03-09 Thread Erik Thomas
On Mar 9, 2020, at 7:14 AM, leokan23  wrote:

>> "I don't see a reason to keep Flex working with old AIR versions."

+1

Erik


Re: iPhoneSimulator.sdk error

2020-03-05 Thread Erik Thomas
The XCode simulator was working when my Mac was running High Sierra and the 
iPhone SDK dylib version was 12.1 with all the same ANEs. Here is my ANE list, 
all from Distriqt.


   com.distriqt.Core
   com.distriqt.androidsupport.V4
   com.distriqt.androidsupport.AppCompatV7
   com.distriqt.androidsupport.CustomTabs
   com.distriqt.playservices.Base
   com.distriqt.PushNotifications
   com.distriqt.Dialog
   com.distriqt.Scanner
   com.distriqt.PDFReader
   com.distriqt.Firebase
   com.distriqt.NetworkInfo


But somewhere along the line, either with upgrading the Mac to Mojave, or XCode 
to latest, it stopped working. I just gave up on it at the time, but now I'd 
like to get it working again to save time.

I guess I'll turn off SIP and copy that dylib to my /usr/lib/system directory 
and see if that makes the difference since it's not where the ADT tool expects 
to find it.

Thanks.

Erik

On Mar 5, 2020, at 3:03 AM, leokan23  wrote:

This some times is related to the anes used. Which ones are you using?



--
Sent from: http://apache-flex-users.246.n4.nabble.com/



iPhoneSimulator.sdk error

2020-03-04 Thread Erik Thomas
Hey all:

I'm trying to debug using the XCode iPhoneSimulator sdk with ADT and I'm having 
no luck. When I run the ADT command, it gives me this error:

ld: file not found: /usr/lib/system/libsystem_containermanager.dylib for 
architecture x86_64
Compilation failed while executing : ld64

Relevant ADT command line options:

adt -package -target ipa-debug-interpreter-simulator . . . -platformsdk 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk
 . . .

Searching the Xcode.app contents I found what might be the dylib I need here:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/libsystem_containermanager.dylib

But due to Apple's SIP on MacOS, I cannot copy this dylib to /usr/lib/system or 
create a simlink to point to the XCode version even when root user. I'm 
assuming ADT is hardcoded to look in /usr/lib/system for this dylib and since 
it's not there, will fail to run the simulator. I'm a little hesitant to 
disable SIP for this purpose, but maybe that's my only option.

I want to use the XCode simulator because my ANEs don't support the built-in 
emulators in IDEs.

Anybody figure out a solution? Anybody use the Xcode iPhone simulator at all?

Thanks!

Erik




example pom for flexmojo builds using maven

2020-01-30 Thread Erik Thomas
Hey all:

Wondered if any of you are building any flex mobile (airi) projects with maven 
and flexmojos plugin? If so would you consider sending me a sample pom.xml file?

I've mavenized my Flex SDK, etc., and are using sample pom from the Apache Flex 
site, but I'm getting various errors. Just be nice to see how others are 
successfully doing this. I've used maven for many years for java projects and 
know maven. I'm just trying to get the flexmojo plugin build working once. I'll 
be good to go once I can do the simple case.

Thanks very much.

Erik

-- 
Message  protected by MailGuard: e-mail anti-virus, anti-spam and content 
filtering.http://www.mailguard.com.au



Re: Localizable Phone Number Formatting

2020-01-03 Thread Erik Thomas
Another reason I need this is if our users format the number themselves the 
soft keyboard needs to be qwerty which is really lousy at entering phone 
numbers.

On Jan 3, 2020, at 2:41 PM, Erik Thomas 
mailto:e...@linqto.com>> wrote:

Hey all:

I need to develop, find, or buy a telephone number formatter that's i18n.

mx.PhoneFormatter is ancient and not globalized. You have to specify the format 
and there are just too many different formats to hard code as you can see in 
this list:

https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers

I was hoping to find something like flash.globalization.DateTimeFormatter which 
does a great job of localization based on locale without having to specify 
patterns.

Anyone ever create such a component in Flex/ActionScript? Or know where I can 
get one? Just want to avoid doing this from scratch, encoding every country 
code in the world associated with the appropriate pattern string.

Thanks.

Erik



-- 
Message  protected by MailGuard: e-mail anti-virus, anti-spam and content 
filtering.http://www.mailguard.com.au



Localizable Phone Number Formatting

2020-01-03 Thread Erik Thomas
Hey all:

I need to develop, find, or buy a telephone number formatter that's i18n.

mx.PhoneFormatter is ancient and not globalized. You have to specify the format 
and there are just too many different formats to hard code as you can see in 
this list:

https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers

I was hoping to find something like flash.globalization.DateTimeFormatter which 
does a great job of localization based on locale without having to specify 
patterns.

Anyone ever create such a component in Flex/ActionScript? Or know where I can 
get one? Just want to avoid doing this from scratch, encoding every country 
code in the world associated with the appropriate pattern string.

Thanks.

Erik



-- 
Message  protected by MailGuard: e-mail anti-virus, anti-spam and content 
filtering.http://www.mailguard.com.au



Re: PopUp Problems on Amazon Devices

2019-12-16 Thread Erik Thomas
What do you think of just calculating the top y coordinate of the popup instead 
of depending on the PopupManager to properly center it? 

(screenHeight - popupHeight) / 2

I'd also open an issue of course but not hold my breath on a quick fix. :-)

Erik

On Dec 16, 2019, at 3:25 PM, bilbosax  wrote:

Nobody else has encountered this problem before??

On a modern Amazon Fire device, PopUps won't center vertically.  Do I report
this to the guys here with Flex, or at Harmaan?



--
Sent from: http://apache-flex-users.246.n4.nabble.com/
-- 
Message  protected by MailGuard: e-mail anti-virus, anti-spam and content 
filtering.http://www.mailguard.com.au




Re: Copy and Paste Text

2019-12-16 Thread Erik Thomas
Hi Bill:

If I was doing this, I'd create a custom component with a Label and upon a tap 
and hold for 1 second, display a custom popup button that looks exactly like 
the Android or iOS "Copy" button that shows up when selecting text in native 
fields. The user can just tap that button to copy to clipboard.

I think discoverability will be a slight issue, but not too hard for users 
since to copy text in a native field, one of the gestures is to tap and hold to 
display the selection menu button. They may organically just try that and see 
the "Copy" button. Of course this approach won't allow "selecting" a sub range 
of the field's text, it would be all or nothing. But you can consider providing 
a help "overlay" for first time use and from settings that explain the shortcut 
to copy cell contents. 

It's super easy to make a TextInput field look like a label, by setting focus, 
border, and background colors, but the soft keyboard cannot be prevented if 
editable property is true. A soft keyboard popping up when the user just wants 
to select text would be a bad UI design (IMO). :-)

Erik


On Dec 16, 2019, at 3:43 PM, Alex Harui  wrote:

What would you like the interaction to be to determine which labels are copied 
to the clipboard?  AFAIK, the Flex SDK doesn't have any built-in support for 
Copy and Paste on anything other than TextInput and TextArea.  But you can 
probably code up some other interaction if you want.

I've only heard of one other company that wanted to select text that wasn't in 
a TextArea/TextInput, and that was secondhand information from a VP, so I 
haven't seen many requests for Copy.

HTH,
-Alex

On 12/16/19, 3:12 PM, "bilbosax"  wrote:

   Thanks for the reply Erik.  That is definitely an option if I just wanted to
   make a few lines of text in the app copyable.  Unfortunately, I have a LOT
   of fields that I think a user may want to copy and paste at some point, and
   my app would be littered with icons and would look messy.  Thanks for the
   thought though, as that would definitely work.

   SURELY there has to be some type of text display element that is copyable
   other than textInput and textArea isn't there???



   --
   Sent from: 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapache-flex-users.246.n4.nabble.com%2F&data=02%7C01%7Caharui%40adobe.com%7Cf8f7149be0554f757da808d7827d5de2%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637121347277646955&sdata=vb5qOJHSOZL9M7SbqZ08fo37DAynWcnY%2FrVI7JOUNyE%3D&reserved=0


-- 
Message  protected by MailGuard: e-mail anti-virus, anti-spam and content 
filtering.http://www.mailguard.com.au




Re: Copy and Paste Text

2019-12-16 Thread Erik Thomas
Can you use an icon that depicts copying the value of the label when tapped? 
LineAwesome or FontAwesome have a "copy" icon. Then programmatically place the 
label content on the clipboard.

On Dec 16, 2019, at 7:33 AM, bilbosax  wrote:

I have written a mobile real estate app that displays a lot of property
information using Spark Labels.  Unfortunately, Spark Labels are not
selectable, and a user might want to copy and paste a long MLS # or address
to Zillow, or copy the agent's phone number or email address to some other
tool.  I tried switching to RichEditableText and setting the "selectable"
property to true, but all I could do was get my text to highlight in blue,
but I had no ability to modify the amount of text that I wanted to copy and
paste, and I was given no option anywhere on the component to actually
"Copy" the text that was highlighted.


How can I make a text field of some sort Copyable to to the operating
system's clipboard so that I can offer users the ability to copy and paste
text on a mobile device?



--
Sent from: http://apache-flex-users.246.n4.nabble.com/
-- 
Message  protected by MailGuard: e-mail anti-virus, anti-spam and content 
filtering.http://www.mailguard.com.au




Re: Debug Worker

2019-12-12 Thread Erik Thomas
It appears maybe a bug?

https://github.com/BowlerHatLLC/vscode-as3mxml/issues/398 


Maybe get an older build?

Erik

On Dec 12, 2019, at 12:03 PM, ImadEddine  wrote:

Hi ...

I am using this https://github.com/doublefx/easyWorker 
When i try debug a worker i have this error
I don't understand what is it

Type.forName error: A class with the name
'com.doublefx.as3.thread.api.IProperty' could not be found. The class
'com.doublefx.as3.thread.api.IProperty' is probably an internal class or it
may not have been compiled.
Type.forName error: A class with the name
'com.doublefx.as3.thread.api.SharableData' could not be found. The class
'com.doublefx.as3.thread.api.SharableData' is probably an internal class or
it may not have been compiled.
Type.forName error: A class with the name
'com.doublefx.as3.thread.api.IDataProducer' could not be found. The class
'com.doublefx.as3.thread.api.IDataProducer' is probably an internal class or
it may not have been compiled.
Type.forName error: A class with the name
'com.doublefx.as3.thread.util.AsynchronousDataManager' could not be found.
The class 'com.doublefx.as3.thread.util.AsynchronousDataManager' is probably
an internal class or it may not have been compiled.
Type.forName error: A class with the name
'com.doublefx.as3.thread.error.IllegalStateError' could not be found. The
class 'com.doublefx.as3.thread.error.IllegalStateError' is probably an
internal class or it may not have been compiled.
Type.forName error: A class with the name
'com.doublefx.as3.thread.error.UnsupportedOperationError' could not be
found. The class 'com.doublefx.as3.thread.error.UnsupportedOperationError'
is probably an internal class or it may not have been compiled.
Dep: com.doublefx.as3.thread.event.ThreadProgressEvent tag: [82:DoABC] Lazy:
true, Name: com/doublefx/as3/thread/event/ThreadProgressEvent, Length: 1384
Dep: com.doublefx.as3.thread.api.IWorker tag: [82:DoABC] Lazy: true, Name:
com/doublefx/as3/thread/api/IWorker, Length: 617
Dep: com.doublefx.as3.thread.api.Runnable tag: [82:DoABC] Lazy: true, Name:
com/doublefx/as3/thread/api/Runnable, Length: 456
Dep: workers.ComplexWorker tag: [82:DoABC] Lazy: true, Name:
workers/ComplexWorker, Length: 1288
Dep: com.doublefx.as3.thread.event.ThreadFaultEvent tag: [82:DoABC] Lazy:
true, Name: com/doublefx/as3/thread/event/ThreadFaultEvent, Length: 1074
Dep: com.doublefx.as3.thread.event.ThreadResultEvent tag: [82:DoABC] Lazy:
true, Name: com/doublefx/as3/thread/event/ThreadResultEvent, Length: 1079
Dep: mx.core.DebuggableWorker tag: [82:DoABC] Lazy: true, Name:
mx/core/DebuggableWorker, Length: 957
Dep: com.doublefx.as3.thread.error.NotImplementedRunnableError tag:
[82:DoABC] Lazy: true, Name:
com/doublefx/as3/thread/error/NotImplementedRunnableError, Length: 693
Dep: com.doublefx.as3.thread.event.ThreadActionRequestEvent tag: [82:DoABC]
Lazy: true, Name: com/doublefx/as3/thread/event/ThreadActionRequestEvent,
Length: 834
Dep: com.doublefx.as3.thread.event.ThreadActionResponseEvent tag: [82:DoABC]
Lazy: true, Name: com/doublefx/as3/thread/event/ThreadActionResponseEvent,
Length: 1100
Dep: com.doublefx.as3.thread.util.ClassAlias tag: [82:DoABC] Lazy: true,
Name: com/doublefx/as3/thread/util/ClassAlias, Length: 555
Dep: com.doublefx.as3.thread.api.CrossThreadDispatcher tag: [82:DoABC] Lazy:
true, Name: com/doublefx/as3/thread/api/CrossThreadDispatcher, Length: 1477
Dep: com.doublefx.as3.thread.util.Closure tag: [82:DoABC] Lazy: true, Name:
com/doublefx/as3/thread/util/Closure, Length: 973
Dep: com.doublefx.as3.thread.util.DecodedMessage tag: [82:DoABC] Lazy: true,
Name: com/doublefx/as3/thread/util/DecodedMessage, Length: 682
[SWF]
 Header:
   Version: 43
   Compression: None
   FileLength: 22177
   FileLengthCompressed: 22177
   FrameSize: (550,400)
   FrameRate: 50
   FrameCount: 1
 Tags:
   [69:FileAttributes] AS3: true, HasMetadata: true, UseDirectBlit: false,
UseGPU: false, UseNetwork: false
   [64:EnableDebugger2] Password: null, Reserved: 0x1975
   [09:SetBackgroundColor] Color: #ff
   [77:Metadata]  http://www.w3.org/1999/02/22-rdf-syntax-ns#";>
 http://purl.org/dc/elements/1.1";>
   application/x-shockwave-flash
   Apache Flex Application
   http://flex.apache.org/
   Apache Software Foundation
   Apache Software Foundation
   en_US
   Dec 12, 2019
 

   [65:ScriptLimits] MaxRecursionDepth: 1000, ScriptTimeoutSeconds: 60
   [41:ProductInfo] ProductID: 3, Edition: 6, Version: 4.16 r20171115,
CompileDate: Thu Dec 12 20:51:36 GMT+0100 2019
   [43:FrameLabel] Name: ThreadRunner
   [82:DoABC] Lazy: true, Name:
com/doublefx/as3/thread/event/ThreadProgressEvent, Length: 1384
   [82:DoABC] Lazy: true, Name: com/doublefx/as3/thread/api/IWorker,
Length: 617
   [82:DoABC] Lazy: true, Name: com/doublefx/as3/thread/api/Runnable,
Length: 456
   [82:DoABC] Lazy: true, Name: workers/ComplexWorker, Length: 1288
   [82:DoABC] Lazy: true, Name:
com/doublefx/as3/thread/event/ThreadFaultEvent, Length:

Re: ADT incompatible with iOS 13?

2019-10-19 Thread Erik Thomas
Thanks for your reply, Leokan. I did some research since posting this question 
and found that Harmon is working on this fix in a future build of AIR 33 but as 
of this week it still wasn't available.

I'll be watching for that fix before we have to start paying Harmon for the 
Enterprise license. We're holding off as long as possible. Unfortunately our 
revenues put us into the Enterprise category, even though we are a startup and 
haven't made a profit yet. 

We have our apps in the stores so we don't need to get 64 bit Android builds 
until August 2020 and we will squeeze every drop out of AIR 32. 

Erik



ADT incompatible with iOS 13?

2019-10-14 Thread Erik Thomas
Hey all:

I updated my iPhone devices to iOS 13 last week and while I'm not sure this is 
the issue, for some reason ADT will not connect to my devices anymore to 
install my development app when doing a Run or Debug session from IntelliJ.

Of course this has nothing to do with IntelliJ since it simply shells out to 
ADT, but the ADT command to install the app fails every time. I've included 
some information about what I've tried to no avail.

Has anyone else run into this issue? I'm running AIR 32 and I can still 
run/debug local app on Android devices, just not iOS.

Thanks.

Erik

Steps to reproduce:

  1.  USB tether the iOS device to a Mac running IntelliJ IDEA for Flex 
development.
  2.  Initiate a Run or Debug session.

Expected results:

App is built, iOS package is created, and installed on the device.

Actual results:

App is built, iOS package is created, but while ADT is attempting to install on 
the device, it fails:

[cid:7F764BC9-5494-42ED-89A5-06E79425D6D1]
Best Hints:

Opening the recent logs for the Run / Debug session I see no explanation of 
what is wrong (see below log output), but the iOS console logs may indicate 
something of value:

default 09:33:32.049636 -0700 rapportd CLink: Found CUBonjourDevice 
94:E2:DB:D0:CB:30, 'Eriks Linqto Laptop'
...
default 09:33:32.171674 -0700 rapportd CLink: Lost CUBonjourDevice 
86:72:0A:1D:90:23, 'Eriks Linqto Laptop'

I don't recognize anything else in the iOS console output as being related to 
this issue. If you need full logs, I can attach them to the issue.

What I've tried:


  *   Restarted IntelliJ.
  *   Restarted the iOS device(s).
  *   Restarted the Mac.
  *   Cleared caches and restarted IntelliJ.
  *   Researched ADT command line options to see if there is a -v (verbose) 
setting that will provide more information about the failure. Nothing available 
I could find.
  *   Ran XCode console to view installd or any process containing our bundle 
ID. It appears that when ADT is connecting to the device to install the app, 
the device loses its connection.
  *   Switched USB/Lightning cable between device and computer.
  *   Switched USB port on computer where the cable is connecting to the device.
  *   Tested both iPhone 8, and iPhone X.

So far I have not been able to find a solution. Do you have any suggestions? 
Following are logs for both IntelliJ and XCode console:

HERE ARE THE INTELLIJ LOGS RELATED TO A RUN SESSION:

2019-10-14 09:06:55,996 [4360715]  DEBUG - ript.flex.actions.ExternalTask - 
[1637622198] Executing task: /Applications/IntelliJ IDEA 
2018.2.app/Contents/jbr/Contents/Home/bin/java 
-Dapplication.home=/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-32-43 
-Dfile.encoding=UTF-8 -Djava.awt.headless=true -Duser.language=en 
-Duser.region=en -Xmx1024m -jar 
/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-32-43/lib/adt.jar -devices -platform 
ios

2019-10-14 09:06:57,380 [4362099]  DEBUG - ript.flex.actions.ExternalTask - 
[1637622198] Process output: List of attached devices:
Handle DeviceClass DeviceUUID DeviceName
 349 iPhone   7106c07ee312794b64790f18777cf1397ff6c44d Erik’s iPhone X

2019-10-14 09:06:57,417 [4362136]  DEBUG - ript.flex.actions.ExternalTask - 
[190529528] Executing task: /Applications/IntelliJ IDEA 
2018.2.app/Contents/jbr/Contents/Home/bin/java 
-Dapplication.home=/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-32-43 
-Dfile.encoding=UTF-8 -Djava.awt.headless=true -Duser.language=en 
-Duser.region=en -Xmx1024m -jar 
/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-32-43/lib/adt.jar -installApp 
-platform ios -device 349 -package 
/Users/ethomas/linqto/FlexDev/InvestorID/out/debug/globalinvestorid.ipa

2019-10-14 09:07:00,066 [4364785]  DEBUG - ript.flex.actions.ExternalTask - 
[190529528] Process output: Error connecting to your device!

HERE ARE THE IOS CONSOLE LOGS RELATED TO THE MOMENT OF INSTALL:

default 09:33:32.049636 -0700 rapportd CLink: Found CUBonjourDevice 
94:E2:DB:D0:CB:30, 'Eriks Linqto Laptop'
default 09:33:32.050171 -0700 rapportd Bonjour peer changed : 
CUBonjourDevice 94:E2:DB:D0:CB:30, 'Eriks Linqto Laptop', 0x2 < Attrs >
default 09:33:32.051654 -0700 callservicesd Device changed: 
default 09:33:32.051766 -0700 callservicesd Updating nearby device routes using 
devices: 
default 09:33:32.052090 -0700 callservicesd Current calls do not support nearby 
devices () or device doesn't support primary calling ()
error 09:33:32.052355 -0700 assistantd -[ADCompanionService 
_updateAssistantIDMapForDevice:] unable to find assistant identifier for 
device: 
default 09:33:32.168417 -0700 mDNSResponder [R26407->Q0] 
DNSServiceQueryRecord(, TXT) RESULT ADD interface 8: (mortal)
default 09:33:32.169052 -0700 rapportd Add without remove new:   Eriks Linqto 
Laptop._companion-link._tcp.local.%8: rpHN=ab13a044e7cc | rpFl=0x2 | 
rpVr=174.23 | rpHA=1fe2d0de39af | rpAD=fa673ffe250c | rpHI=e6660d8b7a2c | 
rpBA=94:E2:DB:D0:CB:30
default 09:33:32.169350 -0700 rapportd Add without remove old 1: Eriks Linqto 
Laptop._companion-li

Re: Adobe AIR Maintenance and support changes

2019-06-12 Thread Erik Thomas
All mobile development tools have their pros and cons, but our evaluation of 
the situation have led us to these conclusions:

Having more than 25 combined years of Flex development experience between my 
three-man team, about half that in mobile AIR, we somehow got very good along 
the way and can knock out new mobile apps and add features quickly without 
stress or climbing new learning curves. When you use the same tool for that 
long you develop your own extensive libraries, frameworks, widgets, utilities, 
etc., and you fine tune them during every new project. Switching platforms now 
would cost us dearly in learning curves, waiting on functionality from tool 
vendors, working around various limitations, developing our own foundation of 
code, etc., and we figure it would take a few years to get to where we'd be as 
fast as we are today.
None of the tools out there are so significantly better, faster, quicker than 
Flex/AIR that we'd realize significantly improved development velocity or app 
performance.
We have a number of apps we maintain and switching platforms means we have to 
maintain the old ones on AIR as long as possible, while learning a new stack. 
We believe this will drastically reduce overall development velocity. 
We do not see a business reason to rewrite existing apps on a new platform.
Cross platform mobile app tools are jockeying for position and some will fail 
by the time we need to switch, so deciding on any one platform now is a waste 
of time. New tools are showing up with great promise, but they have a lot of 
maturing to do to reach parity with AIR/Flex. Xamarin is mature and would be 
one we'd look at when the time comes, but who knows what this space will look 
like in a few years.

In conclusion, we have decided to ride the AIR train as long as possible, and 
if paying a vendor to maintain AIR gets us more life out of our IP and 
investment in our tech stack, then that's what we will do. It makes sense to 
pay for value. We've had a free ride on AIR for so long, that it's only right 
we pay for what we get, and with someone maintaining it for profit, we may not 
need so many ANEs, and it may be a lot less painful to deal with Apple/Google 
whims to piss off all of us with new requirements. I'd pay a lot to have 
someone else deal with Apple/Google headaches.

And it makes sense for Adobe to get out of the business anyway. They have been 
so gracious for so many years, maintaining it with virtually no revenue stream 
other than AMS licenses for folks using AIR to serve video (correct me if I'm 
wrong and there is some hidden revenue stream Adobe gets for maintaining 
AIR--but I doubt it exists).

This move was inevitable, and we are quite optimistic that we'll get another 5+ 
years out of our current mobile tech stack. 

We'll switch when the business decision becomes compelling, not before.

But for folks who don't have a lot invested in AIR, their business decision 
could be very different. 

My $.02.

Cheers,

Erik

On Jun 12, 2019, at 7:00 AM, hugo  wrote:

This can't be bad for AIR, comparing to the current state.
AIR is beeing in maintenance mode for least the last 2 years.
I was just waiting for them to officially end it.

Unfortunately Android x64 bits thing and the Adobe silent for so long until
almost until the dead line forced me to evaluate other options and I did it.
I'm moving from Flex/AIR on Mobile to Xamarin so it's hard to go back to
Flex/AIR on Mobile after this and I believe that many others are doing the
same, skrinking even futher the Flex comunity.
Xamarin, it's a complete new fresh paradigm for better, I must say.

Even so, Flex/AIR, on Desktop for me, continue to be the best option.
Desktop market is stable (comparing with Mobile).

I still don't understand why this was made silent for so long time !
It's not the launching of a rocket (even that, would be less secret !).
It was all too exaggerated, unnecessary and the result it's on your front.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/
-- 
Message  protected by MailGuard: e-mail anti-virus, anti-spam and content 
filtering.http://www.mailguard.com.au




Re: Eliminating "delete" button in TextInput field on moble

2019-05-20 Thread Erik Thomas
Using TextArea works as a replacement. With a little styling and configuration 
I was able to make it do what I needed, and it doesn't automatically show the 
"delete" icon when there is content and it has input focus.

Thanks.

Re: Eliminating "delete" button in TextInput field on moble

2019-05-20 Thread Erik Thomas
Unfortunately that didn't get rid of it. Remember, this is using mobile theme. 
Perhaps that's part of the issue.

But thanks for the suggestion! I never did try that one.

Erik

On May 18, 2019, at 5:48 PM, Lydecker  wrote:

Hi, I think this is an easy fix (we had this issue a few years back).

If memory serves, we simply add the following attribute to out spark text
input:

autoCorrect="false"


If that doesn't work - let me know and I'll have a look at out code. 



--
Sent from: http://apache-flex-users.246.n4.nabble.com/
-- 
Message  protected by MailGuard: e-mail anti-virus, anti-spam and content 
filtering.http://www.mailguard.com.au




Re: Huge space between list elements in RichText

2019-04-25 Thread Erik Thomas
Another approach you might try is using StyleableTextField, which I use a lot 
in mobile apps for rendering html:

var textField:StyleableTextField = new StyleableTextField();
var styles:String = "p { leading: 2px; }"; // add all the css you need here
var styleSheet:StyleSheet = new StyleSheet();
styleSheet.parseCSS(styles);
textField.styleSheet = styleSheet;
textField.styleName = this; // inherit other styles from parent
textField.lineBreak = LineBreak.TO_FIT; // implicitly sets wordWrap to true
textField.percentWidth = 100;
textField.htmlText = yourHtml;
this.addElement(textField); // assumes this is a container like HGroup

Don't believe some posts that say you can't add StyleableTextField to 
containers, yes you can. And it's lighter weight than RichText which is not 
recommended for mobile apps anyway. Of course the renderer only supports a 
subset of html, but your example seems pretty simple and should work fine.




Running AIR apps in iOS Simulator - How To

2019-03-19 Thread Erik Thomas
Have you ever tried to set up and use the XCode iOS Simulator to test your app, 
and to see if the DPI mapping makes your app look good on all of them? If you 
haven't yet tackled it, this might be of some help to you (if you develop on 
MacOS). You can create other scripts that call this one in a loop with all 
devices if you want to launch them all to see how your app lays out on each one.

The reason I created this script is because I use IntelliJ IDEA and it doesn't 
support selecting a target simulator device when using iOS Simulator, and the 
only workaround is to set an environment variable with the device name you want 
in a shell and launching the IntelliJ app from the shell, i.e., $ open -a 
"IntelliJapp" which is very inconvenient. Here is my feature request for 
this to be added to IntelliJ IDEA 
.

Requirements:

MacOS
Flex SDK 4.16.1
AIR SDK 32 (in this example we point to the iOS SDK 12.1 version of the 
simulator) 

To use an older SDK, change the XCODE_SIM_SDK assignment from 
.../iPhoneSimulator12.1.sdk to .../iPhoneSimulator.sdk.

When you run the script you'll see...

$ ./sim.sh "iPad Pro (12.9-inch) (3rd generation)"
Packaging for iOS Simulator: iPad Pro (12.9-inch) (3rd generation)...
Uninstalling app from iOS Simulator if exists...
Installing on iOS Simulator...
Launching app on iOS Simulator...

Usage: ./sim.sh "iPad Pro (12.9-inch) (3rd generation)"

To get a list of simulator devices that you can pass to sim.sh, do this:

$xcrun simctl list devices
== Devices ==
-- iOS 12.1 --
iPhone 5s (ADB3343E-C7FE-4AE5-9765-D093C9936B90) (Shutdown) 
iPhone 6 (5E6C728C-64BF-4AD7-9A37-A34D416D8ABE) (Shutdown) 
iPhone 6 Plus (9A3816FB-0319-476D-A916-F82F0446B1E6) (Shutdown) 
iPhone 6s (5D4E1908-A7A4-465E-B5C3-618D5E22A334) (Shutdown) 
iPhone 6s Plus (B913BBF2-4A1F-4E22-A10F-017062F204A4) (Shutdown) 
iPhone 7 (C49F37AE-6A8C-4098-AE10-C6BD05454D6C) (Shutdown) 
iPhone 7 Plus (795BCC5F-8AE7-4B34-B937-8904D44003F1) (Shutdown) 
iPhone 8 (2D14F1ED-62B1-47B6-8823-C50AB861E0A5) (Shutdown) 
iPhone 8 Plus (D570AFFD-D8DD-4C66-8D25-878759CBB234) (Shutdown) 
iPhone SE (95A0E23F-B7D3-4A71-B3A8-B57808678D4B) (Shutdown) 
iPhone X (822CEC4C-CF15-429A-8BFB-0BC69F5A0CE3) (Shutdown) 
iPhone XS (7A3EDBA6-5A90-4626-9140-DB1C7C650B63) (Shutdown) 
iPhone XS Max (8368B225-9E7D-454A-A726-452120A018C5) (Shutdown) 
iPhone XR (285CBE47-656C-427A-9A42-21EE78C90135) (Shutdown) 
iPad Air (B0D2085D-0B75-495E-9F9E-D0AFC52785F6) (Shutdown) 
iPad Air 2 (F36F5E8F-39B6-49D9-A062-D69337973BAE) (Booted) 
iPad (5th generation) (D2044591-EB6B-4ABC-90D4-3D1C58E46001) (Shutdown) 
iPad Pro (9.7-inch) (ED4405C9-5F7E-4583-9717-BFA08709FC49) (Shutdown) 
iPad Pro (12.9-inch) (3A10023B-7730-4F4E-AF7C-B0094B95DDF8) (Shutdown) 
iPad Pro (12.9-inch) (2nd generation) 
(79493241-8938-42C6-AEF5-BDF4D087FA3F) (Shutdown) 
iPad Pro (10.5-inch) (A79319D2-BDF3-459B-B737-8B7194691860) (Shutdown) 
iPad (6th generation) (78D1258E-571C-4E96-9376-FF983EC0212E) (Shutdown) 
iPad Pro (11-inch) (0D4EBB0C-059E-4320-BEDB-14E5A0591641) (Shutdown) 
iPad Pro (12.9-inch) (3rd generation) 
(8AE329BE-DE28-4FEE-A0ED-983E435E980B) (Shutdown) 

Copy the full name without the (UUID) or device status, and pass it to your 
bash script.

Copy the following bash code to a sim.sh file, change all the assigned env 
vars, and chmod +x the file to execute. Oh, be sure the quotes are straight, 
not curly after pasting. Finally, note that the package command requires 
signing cert values, but they are ignored by the simulator, so just leave the 
package command values for -keystore "keep_this_as_is" and -storepass 
"keep_this_as_is" so the ADT command won't fail param validation phase.

Assumes you already built the app so there is an output directory with your 
swf, etc.

Begin File:

# !/bin/bash

# Edit the following assignments to your own, keeping in mind to use full 
paths, or source your .bash_profile to use ~/

CURRENT_FLEX_SDK="/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-32-43"
IPA_PATH="/Users/ethomas/linqto/FlexDev/keiretsu/out/production/keiretsu/keiretsuforum.ipa"
APP_DESCR_PATH="/Users/ethomas/linqto/FlexDev/keiretsu/out/production/keiretsu/keiretsu-app.xml"
APP_BUNDLE_ID=com.linqto.keiretsuforum.debug
XCODE_SIM_SDK="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk"
ADT_EXTRA_PARAMS="-extdir /Users/ethomas/linqto/FlexDev/EventANE \
-C /Users/ethomas/linqto/FlexDev/keiretsu/out/production/keiretsu 
Main.swf \
-C /Users/ethomas/linqto/FlexDev/keiretsu/appicons . \
-C /Users/ethomas/linqto/FlexDev/keiretsu/launchscreens . \
-C /Users/ethomas/linqto/FlexDev/keiretsu Assets.car" 

function adt() {
java -Dapplication.home=${CURRENT_FLEX_SDK} -Dfile.encoding=UTF-8 
-Djava.awt.headless=true \
-Duser.language=en -Duser.region=en

Re: Auto changing the gaps,font size based on application DPI in Flexmobile

2019-03-19 Thread Erik Thomas
You shouldn't need to change any css. A 12 - 14pt font face in 160dpi is about 
like the typical body text you'll see in most mobile apps. But if your app is 
running on a 480 dpi display that 14pt font (still the same property setting or 
css) will appear roughly the same size as the typical body text you'll see in 
most mobile apps.

You never need to change font sizes or use any css directives to change font 
sizes, ever. It's unnecessary because the designers of Flex/Flash were smart 
about making it easy for your app to look good on all devices without changing 
any settings but the runtime DPI.

Oh, and if you don't extend the default RuntimeDPIProvider with your own 
settings, it will still map higher DPIs to scaled fonts and layouts.

The only real need for your own RuntimDPIProvider is where the defaults aren't 
quite as good as you want.

I always develop AIR apps with applicationDPI="160" which makes my optimal font 
sizes feel more like fonts you might set in a Word document, so instead of a 
high application DPI where your font has to be like 30pt for regular text, you 
can work with more intuitive sizes, e.g., 12-14pt for body text, 16 for h3, 18 
for h2 and 20 for h1, or something like that.

Anyway, don't over think this. All the hard work has been done for you.

On Mar 19, 2019, at 11:54 AM, agm65  wrote:

Hi Erik, 

thanks alot for your answer.
For my better understanding: The runtimeDPI value is the value of my device
and it sets my applicationDPI value to one of those 6 values (120-640). And
this applicationDPI value is used in the css to switch my font sizes etc?

So with defining new ranges i can finetune my settings. 

got it?



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Auto changing the gaps,font size based on application DPI in Flexmobile

2019-03-19 Thread Erik Thomas
You can override the default DPI mappings that scale your app to devices with 
different DPIs. In your Application MXML file, add this property:

runtimeDPIProvider="com.yournamehere.CustomRuntimeDPIProvider"

And implement a class that extends the default RuntimeDPIProvider. These are 
settings one of my apps actually uses (with a starting applicationDPI setting 
of 160. It makes the portrait only iphone layout look good on an iPad as well 
as some of the super hi res devices that are coming out.

public class CustomRuntimeDPIProvider extends RuntimeDPIProvider {

   override public function get runtimeDPI():Number {
  if (Capabilities.screenDPI > 550) {
 return DPIClassification.DPI_640;
  } else if (Capabilities.screenDPI > 400) {
 return DPIClassification.DPI_480;
  } else if (Capabilities.screenDPI > 250) {
 return DPIClassification.DPI_320;
  }
  return super.runtimeDPI;
   }
}

You can experiment to fine-tune the right scaling based on DPI and to find the 
right starting applicationDPI. But essentially, all your layouts and fonts will 
scale together based on the runtimeDPI settings. This allows you to develop for 
a single applicationDPI, and different devices with higher DPI will show larger 
fonts, etc.

On Mar 19, 2019, at 9:15 AM, agm65  wrote:

Hi all,

what is the difference between runtimeDPI and application DPI?
I have some problems with very large displays like the google pixel2.

It runs with 480 dpi. Everything looks to small with my 480 dpi settings. If
i use the values for 640dpi it looks good.

Any idea? And where to find the multidpi gaps? 

thx alot!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: New issue with iOS builds using iOS 12.1

2019-03-18 Thread Erik Thomas
I use Distriqt ANEs. And just updated to latest builds of all 13 of them, and I 
successfully uploaded to iTC without any errors or warnings.

Thanks!

On Mar 16, 2019, at 12:17 AM, Lydecker  wrote:

Hi Erik,
Just I have build against 103 and uploaded it to Apple successfully.

There are 2 things I needed to do:

1) in my app descriptor, I needed to make sure that the minimum ios value
was set to 8.0

2) in EVERY ANE I used, I needed to make sure that the ANE's minimum ios
value was set to 8.0. This can either be done by getting the ANE author to
re compile thier ANEs targetting ios 8.0 OR you can do it yourself by
opening up the ANE in something like WINRAR (on windows) - and modifying the
platform.xml files (there are 2 for each ANE as there are 2 target
architectures for ios) which has the minimum ios value. I used WINRAR to
open up the ANEs, check the platform.xml files to see which ANEs were on
less than 8.0, then emailed the developer to update them.

Which ANEs are you using? 



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Trying to use iOS Simulator: library not found for -lstdc++

2019-03-14 Thread Erik Thomas
Thank you Prabhu.




Re: Auto-Correct Oddities

2019-03-12 Thread Erik Thomas
It depends on the project type you create in FlexBuilder or IntelliJ. If 
mobile, it will default to mobile theme, otherwise it defaults so spark. It's 
unlikely that your project is using spark if you set it up as a mobile project 
to begin with.

I haven't been enabling auto-correct in my apps because it turned out to be 
more of an annoyance than helpful when frequent terms are acronyms, product 
names, or industry vertical terminology. Without auto-correct, you'll still get 
the suggested words and misspellings will be red underlined. We decided that 
was the better user experience than frequently correcting what the phone thinks 
you were trying to say.

$.02

On Mar 12, 2019, at 10:17 AM, kamcknig  wrote:

Again, I haven't themed much so I'm guessing, and I don't currently have
4.16.1, but in Flex 4.15 if you check the /frameworks/flex-config.xml I see that it looks like it's using the
Spark theme. I have no idea if there is anything internally that changes
that when compiling/packaging for mobile though.




  themes/Spark/spark.css


Kyle



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: SDK Version Issue for iOS

2019-03-12 Thread Erik Thomas
This link:

https://labs.adobe.com/downloads/air.html 


Shows only download links for the AIR runtime, or AIR SDK & Compiler, or AIR 
SDK For Flex Developers. I downloaded the last one, thinking it may not include 
the compiler.

I guess I'll try again from fresh install of AIR 32 from Flex SDK Installer, 
and download 103 build with the AIR SDK & Compiler download. 

And thanks for the suggestion Olaf, I checked those config files and all are 
correct.

Erik




Re: SDK Version Issue for iOS

2019-03-12 Thread Erik Thomas
Sorry to ask an old question again, but I copied the 103 build over my current 
FlexSDK directory created with the Flex SDK installer last week and it has 
hosed my builds:

Error:[EventCommons]: java.lang.NoClassDefFoundError: flex2/tools/VersionInfo
at 
com.intellij.flex.compiler.FlexCompiler.(FlexCompiler.java:19)
Caused by: java.lang.ClassNotFoundException: flex2.tools.VersionInfo
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more

Is there some second step needed when overlaying a new AIR SDK over existing 
Flex/AIR SDK directory?

Thanks.

On Mar 12, 2019, at 1:43 AM, Piotr Zarzycki  wrote:

Never mind. I miss last email and see that is beta still.

wt., 12 mar 2019 o 09:41 Piotr Zarzycki 
napisał(a):

> Hi Guys,
> 
> In other words this build 103 wasn't released yet ?
> 
> Thanks,
> Piotr
> 
> wt., 12 mar 2019 o 00:58 bilbosax  napisał(a):
> 
>> This is the post on Adobe where I asked the same question:
>> 
>> https://forums.adobe.com/thread/2597960
>> 
>> I was directed to use the AIR 32 Beta that had been updated since AIR 32
>> was
>> added to the Apache installer
>> 
>> https://labs.adobe.com/downloads/air.html
>> 
>> 
>> It worked for me like a charm.  No issues so far.
>> 
>> 
>> 
>> --
>> Sent from: http://apache-flex-users.246.n4.nabble.com/
>> 
> 
> 
> --
> 
> Piotr Zarzycki
> 
> Patreon: *https://www.patreon.com/piotrzarzycki
> *
> 


-- 

Piotr Zarzycki

Patreon: *https://www.patreon.com/piotrzarzycki
*



Re: SDK Version Issue for iOS

2019-03-11 Thread Erik Thomas
Do you know where I can download the AIR SDK (build 103)? I am searching and 
can only find the older build for download. Thanks!



Re: SDK Version Issue for iOS

2019-03-11 Thread Erik Thomas
Thanks, Bill. So just copying the new AIR SDK over the existing Flex SDK 
directory that contains the AIR SDK installed from the installer works?

Re: SDK Version Issue for iOS

2019-03-11 Thread Erik Thomas
Found the problem.

Turns out the latest Flex 4.16.1 installer (as of last week) installs an older 
build of AIR SDK 32 that does not contain this fix:

The installer installed this version of AIR:

32.0.0.89

But the iOS 12.1 SDK wasn't put into the AIR SDK until this build:

32.0.0.103

Is there a plan to update the latest Flex SDK installer to include build 103 
with the fix? While I understand I can update AIR myself with ANT, I'd prefer 
to use the installer if it's going to be updated. 

Thanks.

Erik

On Mar 9, 2019, at 11:16 AM, Kerogi  wrote:

Eric, just released the app with following Distriqt ANEs and latest AIR
32.0.0.103.
com.distriqt.Core

   com.distriqt.Firebase

   com.distriqt.PushNotifications

   com.distriqt.Location

   com.distriqt.firebase.Auth
   com.distriqt.GoogleIdentity

   com.distriqt.FacebookAPI
   com.distriqt.Bolts

   com.distriqt.Scanner

   com.distriqt.NetworkInfo
   com.distriqt.Application

   com.distriqt.firebase.Database

Just letting know upload was fine without any warnings. Hope this can help
you to look at other possible issues.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: SDK Version Issue for iOS

2019-03-08 Thread Erik Thomas
This thread explains the issue, and apparently AIR 32 really does fix this 
problem: 

https://forums.adobe.com/thread/2582887 


So I guess it's the ANEs I'm using. I've contacted Distriqt but haven't yet 
heard back. I reviewed the github checkin comments and last updated dates, and 
it appears they have not yet been compiled with 12.1. That is most likely the 
issue. I will confirm the ANEs are built with 12.1 before I contact AIR team.

Thanks for responding, Alex. 

Erik

On Mar 8, 2019, at 9:14 AM, Alex Harui  wrote:

Erik,

Have you contacted the Adobe AIR team?

-Alex

On 3/8/19, 8:28 AM, "Erik J. Thomas"  wrote:

   Has nobody else on this forum encountered this issue? Do none of you create 
iOS mobile apps with AIR? I'm still waiting on an answer from our ANE provider 
but we're receiving the 12.1 warning on our app uploads and figure it must be 
our ANEs that may not be up-to-date.

   Just looking for a clue. Thanks.

   Erik

   On Mar 6, 2019, at 10:54 AM, Erik J. Thomas  wrote:

   Well, the release notes for AIR 32 claim it uses iOS 12.1 so this must be 
related to some of my ANEs.

   Can anyone verify this error goes away with AIR 32 (if you have no ANEs or 
have recompiled your ANEs with iOS SDK 12.1?

   Thanks.

   Erik

   On Mar 5, 2019, at 4:15 PM, Erik J. Thomas  wrote:

   Anyone else run into this error from Apple when uploading an app? 

   "SDK Version Issue - This app was built with the iOS 12.0 SDK. Starting 
March 2019, all iOS apps submitted to the App Store must be built with the iOS 
12.1 SDK or later, included in Xcode 10.1 or later."

   I built this app with the latest AIR SDK 32. 









Re: Multilanguage support doing the right way?

2019-02-26 Thread Erik Thomas
Though it's old, here is a great article on how to do it:

https://www.adobe.com/devnet/flex/articles/flex_localization_pt1.html 


On Feb 25, 2019, at 4:39 AM, agm65  wrote:

Hi all,

i want to make my app in 4 languages.
I need to know how to setup those languages correctly.
Also how to localize the os language to set the right language automaticly.


Thx for help!




--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: ApplicationVerificationFailed - caused by connectivity problem?

2018-10-31 Thread Erik Thomas
Great news, Douglas!

Best regards,

Erik



Re: ApplicationVerificationFailed - caused by connectivity problem?

2018-10-31 Thread Erik Thomas
Hi Douglas:

I don't recognize the URL-specific errors you are seeing, so none of this may 
be relevant, but I've set up and currently use 5 different iOS devices when 
developing and testing (plus I've set up two older iOS devices I used 5 or 6 
years ago that have since become unsupported) and yet, I find I still have to 
follow a strict checklist to not make a little mistake in the overly complex 
Apple developer portal set up process for certs/profiles/appIDs, APNs, etc.

Can you ensure/recheck the following?

Your UDID registered in device list is correct (just double check there wasn't 
a copy/paste error).

You chose the right developer team cert when generating the prov profile, and 
that cert is registered in your dev computer's keychain?

You chose Ad Hoc profile and not Developer which is for native dev? 

The new iOS device is registered with your Apple ID? 

The device is on WiFi with good signal?

The device Is an iPhone 5s or later?

You're using AIR 31 (AIR 28 broke debugging, and it wasn't fixed until AIR 31) 
- I understand this worked on your last phone, so this may not be relevant, 
just covering the bases.

Anyway, retracing my steps by setting it all up again has fixed similar 
problems for me over the years and it's quicker to do this again than searching 
the web and troubleshooting the hard way. Good luck! 

Re: Persisting ContentCache to disk between sessions

2018-10-29 Thread Erik Thomas
Hi Javier:

With your suggestion, every new company onboarded will download the entire 
sprite. Sure it's only one image but it's 1500+ x 200px square. Our current 
architecture just downloads the single image that's new or changed at about 500 
bytes.

Using a sprite is definitely an interesting option for down the road, perhaps 
only downloaded on launch and then update individual images on updates, but I 
have to get back to higher priority work. 

Thanks for sharing.

Erik

On Oct 29, 2018, at 5:07 PM, Javier Guerrero García  wrote:

You're welcome, but... what's the exact problem with spriting in that
scenario? You could generate the sprite bitmap dynamically at any given
time (just paste every known logo one below another), even with bare PHP
(or needless to say with ImageMagic libraries), and then just poll for the
last modified date of the generated sprite bitmap :-?

On Mon, Oct 29, 2018 at 10:48 PM Erik Thomas  wrote:

> Hi Javier:
> 
> The thing is we have 52 investor groups in 26 countries on 3 continents
> and they each have admins entering information that is then displayed in
> our app. Part of that information are companies that are presenting at
> regular investor meetings in these different countries. These companies all
> have logos. Our app polls for changes every 20 seconds, and if someone has
> added a new company, all users worldwide will see it appear in the app
> within 20 seconds.
> 
> But thanks for your suggestion!
> 
> Erik
> 
> On Oct 29, 2018, at 1:30 PM, Javier Guerrero García 
> wrote:
> 
> Just my 2 cents: have you considered getting rid of everything and just use
> one sprite image for all the logos?
> 
> https://www.w3schools.com/css/css_image_sprites.asp
> 
> You minimize connections to just 1 download, that if properly compressed
> and if logos share a fair amount to colors, could get the size per logo to
> a ridiculously few bytes. All item renderers would use the same image (100%
> bitmapCache hits), but at the cost of downloading the whole bitmap each
> time one of the logos change (how often?).
> 
> It could be a fairly simple solution, and may it can improve your app
> responsiveness without too much trouble.
> 
> Hope it helps ;-)
> 
> On Mon, Oct 29, 2018 at 6:22 PM Erik Thomas 
> wrote:
> 
>> Thanks everyone for your ideas.
>> 
>> Alex, I already knew how to do the serialization by encoding/decoding,
> and
>> I may go down that path someday, but if FileStream would just serialize a
>> ContentCache (seems like a common want), it would have been a quick
>> improvement to app responsiveness.
>> 
>> Having to write my own serializing logic pushes this down on our
>> priorities list since improving app responsiveness is more of a "nice to
>> have" and not a high priority.
>> 
>> I'm going to drop this idea for now.
>> 
>> Thanks again for your insights, everyone.
>> 
>> Erik
>> 
>> 
> 
> 



Re: Persisting ContentCache to disk between sessions

2018-10-29 Thread Erik Thomas
Hi Javier:

The thing is we have 52 investor groups in 26 countries on 3 continents and 
they each have admins entering information that is then displayed in our app. 
Part of that information are companies that are presenting at regular investor 
meetings in these different countries. These companies all have logos. Our app 
polls for changes every 20 seconds, and if someone has added a new company, all 
users worldwide will see it appear in the app within 20 seconds.

But thanks for your suggestion!

Erik

On Oct 29, 2018, at 1:30 PM, Javier Guerrero García  wrote:

Just my 2 cents: have you considered getting rid of everything and just use
one sprite image for all the logos?

https://www.w3schools.com/css/css_image_sprites.asp

You minimize connections to just 1 download, that if properly compressed
and if logos share a fair amount to colors, could get the size per logo to
a ridiculously few bytes. All item renderers would use the same image (100%
bitmapCache hits), but at the cost of downloading the whole bitmap each
time one of the logos change (how often?).

It could be a fairly simple solution, and may it can improve your app
responsiveness without too much trouble.

Hope it helps ;-)

On Mon, Oct 29, 2018 at 6:22 PM Erik Thomas  wrote:

> Thanks everyone for your ideas.
> 
> Alex, I already knew how to do the serialization by encoding/decoding, and
> I may go down that path someday, but if FileStream would just serialize a
> ContentCache (seems like a common want), it would have been a quick
> improvement to app responsiveness.
> 
> Having to write my own serializing logic pushes this down on our
> priorities list since improving app responsiveness is more of a "nice to
> have" and not a high priority.
> 
> I'm going to drop this idea for now.
> 
> Thanks again for your insights, everyone.
> 
> Erik
> 
> 



Re: Persisting ContentCache to disk between sessions

2018-10-29 Thread Erik Thomas
Thanks everyone for your ideas. 

Alex, I already knew how to do the serialization by encoding/decoding, and I 
may go down that path someday, but if FileStream would just serialize a 
ContentCache (seems like a common want), it would have been a quick improvement 
to app responsiveness. 

Having to write my own serializing logic pushes this down on our priorities 
list since improving app responsiveness is more of a "nice to have" and not a 
high priority.

I'm going to drop this idea for now.

Thanks again for your insights, everyone.

Erik



Re: Persisting ContentCache to disk between sessions

2018-10-27 Thread Erik Thomas
Hi Alex:

The icons and logos are loaded from a server on startup, and then kept up to 
date via a 20 second polling pattern where the app checks if anything has 
changed on the server. We timestamp all images and when one does change we get 
latest and update the image in the app.

The way a ContentCache is used for BitmapImage and Image is to set the loader 
like this:

public static var imageCache:ImageCache = new ImageCache(); // subclass of 
ContentCache
_image.contentLoader = Model.imageCache;
_image.source = "https/someImageUrl"

When the image is first retrieved from the URL, the ContentCache loader will 
save the image into a Dictionary (key/value pairs) where the key is the URL and 
the value is the bitmapData of the image.

Then when using ItemRenderers, and they get recycled, the when the image URL 
changes, ContentCache will look up the URL in it's Dictionary and if it's 
already been downloaded it will simply display it without having to make an 
HTTP request. 

ContentCache is a very cool thing the Adobe engineers designed into Flex/Flash 
and it makes lists with icons and pictures far more responsive.

What I want to do is persist the cache to disk and load it when the user logs 
in again. If any image have changed since the last time they launched the app, 
the first 20 second poll will indicate a timestamp has changed and the app will 
retrieve images with a timestamp after the one returned when polling. So they 
will always be up to date.

I said the images don't change but that's not actually true, they just don't 
change often, maybe once a week we'll onboard new organizations and events with 
images. 

Embedding images is not an option because every new onboarded entity will 
require a new app build, full regression testing, submission to Apple for 
review and the entire release process. That's a bad business model.

Anyway, there must be a way in FileStream to save a Dictionary with key as 
String and value as ByteArray, but I haven't figured it out yet. Was hoping 
someone else knows how.

Thanks, Alex.

Erik

PS: I know how I can do this, but it's too much work the way I know how, I 
would have to take each cached image, use pngencoder to encode the bitmapData 
(ByteArray) to a PNG and save each image as a separate file. Last count our 
image cache has about 1500 images so that means 1500 files, plus a hash file to 
match the image URL to a generated filename for the image. Loading will then 
require reversing the process. If you've used image encoders in Flash/AIR you 
know they're  pretty slow. If we don't gain any speed, it's not worth the 
effort.


On Oct 26, 2018, at 3:44 PM, Alex Harui  wrote:

Erik,

How do the icons and logos get into the cache in the first place?  If they 
don't change, is there any reason not to embed them in the application?

-Alex

On 10/26/18, 3:36 PM, "Erik J. Thomas"  wrote:

   Hey all:

   Have any of you come across an example of persisting a ContentCache to disk 
and reading it back on app launch? We have lots of icons and logos for hundreds 
of companies and they don't change between sessions. 

   Like this (doesn't work though). ImageCache is a subclass of ContentCache to 
get access to the protected cachedData:Dictionary which is key/value pairs, 
with key as URL to image, and value is bitmapData.

   public function saveImageCache(imageCache:ImageCache):void {
  var cacheFile:File = File.applicationStorageDirectory;
  cacheFile = cacheFile.resolvePath(IMAGE_CACHE_FILE_NAME);
  if (cacheFile.exists) {
 cacheFile.deleteFile();
  }
  var fileStream:FileStream = new FileStream();
  fileStream.open(cacheFile, FileMode.WRITE);
  fileStream.writeObject(imageCache.getEntries()); // this is a Dictionary 
with byte array for image as value
  fileStream.close();
   }

   The writeObject API of FileStream does not marshal the bitmapData to disk. 

   /**
* Loads a persisted image cache from disk.
*
* @return ContentCache
*/
   public function loadImageCache():ImageCache {
  var cacheFile:File = File.applicationStorageDirectory;
  cacheFile = cacheFile.resolvePath(IMAGE_CACHE_FILE_NAME);
  if (cacheFile.exists) {
 var fileStream:FileStream = new FileStream();
 fileStream.open(cacheFile, FileMode.READ);
 var entries:Dictionary = fileStream.readObject() as Dictionary;
 fileStream.close();
 var imageCache:ImageCache = new ImageCache();
 imageCache.loadEntries(entries);
 return imageCache;
  }
  return null;
   }

   The entries variable does populate with all the keys as URLs, but the values 
are null. FileStream won't read just raw binary data in this way.

   I don't want to have to save every image using an encoder into separate 
files and then load them all back if I can help it. 

   Just seems FileStream should be able to just write a blob of binary data to 
disk and retrieve it "as-is" but it doesn't or I can't find th

Re: In-app Purchases

2018-10-22 Thread Erik Thomas
Sounds like a good plan for now. You can assess how it's working and change it 
if you need to.

We don't let anyone sign up in our apps. They learn about our apps through a 
different channel and are directed to our website where they sign up for a 
membership or to be a guest for a given investor meeting and then are directed 
to the appropriate installer on app, or play store for mobile, or directly 
download and install a Mac or Windows version from the same web page. 

I don't know if play store will be a problem for you in the future. We've never 
been rejected for our android apps. I don't believe they have a human reviewer.

There's a place to display your website URL on iOS App Store. Folks may tap 
that as their entry point for getting your app if they can't figure out how to 
sign up.

Good luck.

Erik

On Oct 22, 2018, at 8:24 AM, bilbosax  wrote:

Erik, thanks for all the advice and insights.  I am going to move the account
information and payments to my website, but on desktops and androids, you
will be able to do it on both the website and in the app, but for iOS, it
will all be done on the website only.  This is the only way I can think to
do this.  I hope it is not too confusing for my users, I wanted a seamless
solution.  But it is a professional tool, and I feel like if they are really
interested in the tool, they will figure it out.  It is not for the casual
user.

I have only one other concern - Android.  I understand that for games, they
make you do something similar to Apple with in-app purchases.  But when I
submitted my apps to Android, they just simply went live as if there was no
review process.  I am concerned that they may one day actually look at my
app and have an issue with it.  Are people able to sign up and pay for your
Keiretsu Forum service on Android with no problems in the app, or do they
also have a policy where you can't unlock content by paying with a source
outside of in-app purchases?

I've never seen a Review Guidelines for Google.  There wasn't even a place
to give them login credentials to test the app.

Thanks!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: In-app Purchases

2018-10-20 Thread Erik Thomas
Bill:

I feel your pain. The big boys are making it harder and harder for the little 
guys to have a great idea and become successful.

>> "Are you sure that you can't get around this if a user signs up on your 
>> website to create and manage their account, and then just logs into an app 
>> from the app store?"

Yes, you can do that! It's what I would do because it's exactly how we do our 
flagship product Keiretsu Forum, of course a membership costs thousands so it's 
not going to work with in app purchase anyway.

I'd then remove the "sign up" link from your app for the iOS 
version--signupLink.visible = !Platform.isIOS. Problem solved. All other 
platforms can use your Stripe sign up from the app, but you can advertise your 
product in a way that gets them to sign up on the web prior to logging into 
your app and for those Apple users who are confused how to sign up, that is the 
cost of not paying apple 30%.

Or, just embrace in-app payments or change your business model to 
transactional, e.g., charge the seller when your user buys a property and make 
the app free. Of course you have overhead then. But what do I know about real 
estate? Cheers,

Erik

On Oct 20, 2018, at 12:27 PM, bilbosax  wrote:

Thanks for the reply guys.  I really can't believe this. 10 months ago, I
contacted Apple Pay (since you can't talk to App Review until you submit an
app), and they told me that since I was a cross-platform "service", I could
choose any merchant that I wanted.  Now I am being told that I cannot make a
payment inside of the app without in-app purchase, and now you guys are
suggesting that if I redirect them to my website to create their account
there, that Apple probably won't allow this either.  This just feels like
highway robbery.

The government is going to take 40%
Apple is going to take 30%
Overhead for the business is %10 - %15

Leaving me with a measely %15  Hardly seems worth all the effort! 
Stripe was only going to charge me like 4%, which would leave me with 41%. 
How is it even legal that Apple can charge for 30% of everything done in an
app when most financial services are between 4-6%, and there hasn't been a
class-action lawsuit?

Are you sure that you can't get around this if a user signs up on your
website to create and manage their account, and then just logs into an app
from the app store?  I was told this was perfectly acceptable if you were a
service and you were not simply targeting iOS devices but were
cross-platform.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: In-app Purchases

2018-10-20 Thread Erik Thomas
Hey Bill:

Some more thoughts since I didn't answer all your questions. 

In-app purchases will get you more subscribers than making them enter a credit 
card online so there is an advantage you should consider may make up the 
difference of the cut Apple takes.

You are transferring the pain of payment from the user to you. You go here and 
sign up and enter your merchant account info, and then you don't need to think 
about it anymore, payments will end up in your account.

https://developer.apple.com/in-app-purchase/ 
<https://developer.apple.com/in-app-purchase/>

Something to think about. And no, you can't use Stripe with your in-app 
purchases with Apple unless it's just a merchant account you can supply to 
Apple. That would be convenient for sure.

Anyway, read about the in-app purchases at that link, and then read the docs on 
the ANE as you will find it's pretty simple. Like a half-day or so of effort.

Cheers,

Erik

On Oct 20, 2018, at 11:09 AM, Erik Thomas  wrote:

Hi Bill:

I'm assuming you expose your sign-up functionality for the Apple reviewer and 
that's how they know what you're doing. The reason Apple is giving you a hard 
time is they want their cut of your money and will do whatever they can to make 
you use in-app purchases for your subscription model. I'm sure this requirement 
is buried in your Apple developer account agreement small print somewhere, so 
it's not illegal, but is it ethical?

#2 doesn't necessarily get you past the Apple reviewer if they can click your 
sign-up link and go to Stripe. The difference between signing up in an embedded 
WebView hosted signup page and doing so through Safari isn't any difference in 
the eyes of Apple.

I think you're stuck with using in-app billing for Apple anyway. I use Distriqt 
ANEs and recommend this one--which will get you Android and iOS in-app 
purchases with a single API:

https://airnativeextensions.com/extension/com.distriqt.InAppBilling 
<https://airnativeextensions.com/extension/com.distriqt.InAppBilling>

You'll still have to implement a separate sign-up channel for the desktop AIR 
versions since the Distriqt ANE doesn't do AIR desktop. There may be an AIR 
desktop ANE out there somewhere but I suggest you use your existing Stripe for 
desktop, and use an ANE for iOS and Android. That is unless you use Mac App 
Store to distribute your AIR desktop app because you will likely run into this 
same issue for the Mac App. I also recommend hosting your Mac and Windows 
installers on your own website and NOT distribute through Microsoft store or 
Apple Store. And if you haven't done Microsoft store yet, plan on a LOT of work 
to make that happen. Not worth it, IMHO.

Erik

On Oct 19, 2018, at 4:27 PM, bilbosax mailto:waspenc...@comcast.net>> wrote:

I know that this is an odd place to ask this, but there are relatively few
active forums to ask about Adobe Air. Although it had passed app review
twice, I had an app rejected recently from Apple's App Store because it does
not use the in-app purchase API. My app is a real estate app that you can
log into, or if you don't have an account, you can create it in the app and
pay for a monthly subscription. Since it is a cross-platform app for
Android, Apple, and desktop, I wanted just one payment solution to make it
simple, so I chose Stripe. I open a webview in the app to pay for the
subscription. Apple claims that my content is locked until payment is made,
so I am required to use the in-app purchase API to unlock the content. Now
that I am so far into development, this could be a huge change that adds a
lot of time to my actual release. I have two options as I see it:

1) Implement in-app purchase API somehow into my code
2) Give the user the option to Sign Up or Log In. If they choose to sign up,
redirect them to my website in safari to sign up and use Stripe as I have
already laid out. Once they have signed up they can then move back to the
app and simply Log In.

I know absolutely nothing about in-app purchases. I always thought that they
used Apple Pay, which I would prefer not to do. Can the in-app purchase API
work with my Stripe Account and subscription products that I created there,
or would I be forced to transform my whole workflow? Of the two options I
listed above, which would you choose? Any ANE recommendations?

Thanks for any insights!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/ 
<http://apache-flex-users.246.n4.nabble.com/>





Re: In-app Purchases

2018-10-20 Thread Erik Thomas
Hi Bill:

I'm assuming you expose your sign-up functionality for the Apple reviewer and 
that's how they know what you're doing. The reason Apple is giving you a hard 
time is they want their cut of your money and will do whatever they can to make 
you use in-app purchases for your subscription model. I'm sure this requirement 
is buried in your Apple developer account agreement small print somewhere, so 
it's not illegal, but is it ethical?

#2 doesn't necessarily get you past the Apple reviewer if they can click your 
sign-up link and go to Stripe. The difference between signing up in an embedded 
WebView hosted signup page and doing so through Safari isn't any difference in 
the eyes of Apple.

I think you're stuck with using in-app billing for Apple anyway. I use Distriqt 
ANEs and recommend this one--which will get you Android and iOS in-app 
purchases with a single API:

https://airnativeextensions.com/extension/com.distriqt.InAppBilling 


You'll still have to implement a separate sign-up channel for the desktop AIR 
versions since the Distriqt ANE doesn't do AIR desktop. There may be an AIR 
desktop ANE out there somewhere but I suggest you use your existing Stripe for 
desktop, and use an ANE for iOS and Android. That is unless you use Mac App 
Store to distribute your AIR desktop app because you will likely run into this 
same issue for the Mac App. I also recommend hosting your Mac and Windows 
installers on your own website and NOT distribute through Microsoft store or 
Apple Store. And if you haven't done Microsoft store yet, plan on a LOT of work 
to make that happen. Not worth it, IMHO.

Erik

On Oct 19, 2018, at 4:27 PM, bilbosax  wrote:

I know that this is an odd place to ask this, but there are relatively few
active forums to ask about Adobe Air. Although it had passed app review
twice, I had an app rejected recently from Apple's App Store because it does
not use the in-app purchase API. My app is a real estate app that you can
log into, or if you don't have an account, you can create it in the app and
pay for a monthly subscription. Since it is a cross-platform app for
Android, Apple, and desktop, I wanted just one payment solution to make it
simple, so I chose Stripe. I open a webview in the app to pay for the
subscription. Apple claims that my content is locked until payment is made,
so I am required to use the in-app purchase API to unlock the content. Now
that I am so far into development, this could be a huge change that adds a
lot of time to my actual release. I have two options as I see it:

1) Implement in-app purchase API somehow into my code
2) Give the user the option to Sign Up or Log In. If they choose to sign up,
redirect them to my website in safari to sign up and use Stripe as I have
already laid out. Once they have signed up they can then move back to the
app and simply Log In.

I know absolutely nothing about in-app purchases. I always thought that they
used Apple Pay, which I would prefer not to do. Can the in-app purchase API
work with my Stripe Account and subscription products that I created there,
or would I be forced to transform my whole workflow? Of the two options I
listed above, which would you choose? Any ANE recommendations?

Thanks for any insights!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Detecting window resize complete on AIR native desktop

2018-10-16 Thread Erik Thomas
Good idea, I'll post on adobe forum and hope for a better suggested workaround. 
Thanks, Alex.

Cheers,

Erik



Re: Detecting window resize complete on AIR native desktop

2018-10-16 Thread Erik Thomas
Thanks, Alex, but spending time optimizing this kludge just isn't worth the 
effort with my current backlog. Just wish there was a better way, a correct 
way. 

I could log a feature request on Adobe, but it would never get enough votes. 
Just seems a no-brainer that the AIR runtime should fire a MOUSE_UP event to 
the stage when the user releases the mouse while dragging the chrome, or allow 
accessing the chrome from the app and adding event listeners. Seems simple 
enough. They do it already for resize, why not mouse up?

Thanks.

Erik

On Oct 16, 2018, at 10:07 AM, Alex Harui  wrote:

Erik,

Did you also ask on the Adobe forums?

I'm not sure that AIR will give you mouse events when the mouse is interacting 
with the "chrome" of a Window.  IOW, I don't think the mouse ever touched the 
pixels that represent the SWF content.

You could write a test to see if the resize event interval is dependent on how 
long it takes for your app to respond to a resize event.  Create a HelloWorld 
app that will redraw very quickly and see if you get resize events more often.

If AIR can deliver resize events at, say 50ms in a simple app, then you can 
consider making changes to your app to respond to resize more quickly.  You can 
use the performance profilers to see if there are bottlenecks responding to 
resize.  You can also consider deferring certain kinds of work via callLater.

HTH,
-Alex

On 10/16/18, 9:53 AM, "Erik Thomas" mailto:erikjtho...@icloud.com>> wrote:

   Yeah, I figured I'd have to use a timer kludge like in the SO thread. Just 
one more of those things about AIR that annoys me.

   I've implemented that pattern and it's working, though the resize events 
fire at roughly 200ms intervals during a drag. A 50ms timer interval suggested 
in SO of course couldn't work. I had to implement a 300ms timer interval to be 
reliably notified only after the resizing process ends with the user releasing 
the mouse capture. 

   But it should be possible to get the mouse up event after the resize. That 
should be considered a bug in AIR, IMO.

   The timer kludge results in delaying a REST API call for 300ms from the last 
resize event is received, making the app appear noticeably unresponsive. 

   Thanks for your response, Kyle. I guess I'll just have to live with it.

   Cheers

   Erik

   On Oct 15, 2018, at 3:33 PM, kamcknig  wrote:

   As far as I know there isn't a way, a stackoverflow user asked the same 

   
https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F11014968%2Fdetect-when-the-resize-event-has-finished&data=02%7C01%7Caharui%40adobe.com%7C24b8a1c31a414de69b1d08d63387ea45%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636753056182036471&sdata=w9Z9HLrbWsUyUDBHraKSKuqerX1O%2FLoYBqbpFLslMNE%3D&reserved=0
 
<https://na01.safelinks.protection.outlook.com/?url=https://stackoverflow.com/questions/11014968/detect-when-the-resize-event-has-finished&data=02|01|aha...@adobe.com|24b8a1c31a414de69b1d08d63387ea45|fa7b1b5a7b34438794aed2c178decee1|0|0|636753056182036471&sdata=w9Z9HLrbWsUyUDBHraKSKuqerX1O/LoYBqbpFLslMNE=&reserved=0>

   I can't think of any way to do so.

   Kyle



   --
   Sent from: 
https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapache-flex-users.246.n4.nabble.com%2F&data=02%7C01%7Caharui%40adobe.com%7C24b8a1c31a414de69b1d08d63387ea45%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636753056182036471&sdata=sD%2FloMMx%2BfXptvCzlcPFR%2B5imOqL%2BKR6o5WjeU7SWUk%3D&reserved=0
 
<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapache-flex-users.246.n4.nabble.com%2F&data=02%7C01%7Caharui%40adobe.com%7C24b8a1c31a414de69b1d08d63387ea45%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636753056182036471&sdata=sD%2FloMMx%2BfXptvCzlcPFR%2B5imOqL%2BKR6o5WjeU7SWUk%3D&reserved=0>


Re: Detecting window resize complete on AIR native desktop

2018-10-16 Thread Erik Thomas
Yeah, I figured I'd have to use a timer kludge like in the SO thread. Just one 
more of those things about AIR that annoys me.

I've implemented that pattern and it's working, though the resize events fire 
at roughly 200ms intervals during a drag. A 50ms timer interval suggested in SO 
of course couldn't work. I had to implement a 300ms timer interval to be 
reliably notified only after the resizing process ends with the user releasing 
the mouse capture. 

But it should be possible to get the mouse up event after the resize. That 
should be considered a bug in AIR, IMO.

The timer kludge results in delaying a REST API call for 300ms from the last 
resize event is received, making the app appear noticeably unresponsive. 

Thanks for your response, Kyle. I guess I'll just have to live with it.

Cheers

Erik

On Oct 15, 2018, at 3:33 PM, kamcknig  wrote:

As far as I know there isn't a way, a stackoverflow user asked the same 

https://stackoverflow.com/questions/11014968/detect-when-the-resize-event-has-finished

I can't think of any way to do so.

Kyle



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: QRCode with Mobile Flex (Android)

2018-09-28 Thread Erik Thomas
+1 for the Distriqt Scanner ANE  since 
it works beautifully. The Wiki docs and tutorials 
 are also easy to follow and 
up-to-date, and the support is very good, though they are located in Australia 
so you may not get an answer same day depending on your timezone but I've 
always received a response within 24 hours and we're 17 hours behind. We use 10 
of Distriqt's ANEs in several commercial apps in the wild on both Android and 
iOS.

Erik

On Sep 28, 2018, at 2:48 AM, Douglas McCarroll 
 wrote:

Hi Yishay,

I'm using the MyFlashLabs Barcode ANE successfully. You can find my code
here:

https://github.com/douglasmccarroll/brightworks/blob/master/src_bright_air/com/brightworks/util/Utils_NativeExtensions.as

Douglas

On Fri, Sep 28, 2018 at 2:13 AM Yishay Weiss  wrote:

> Hi,
> 
> Has anyone had luck with reading qrcode on a flex mobile app?
> 
> I've been struggling with the libraries [1,2] I've found online.
> 
> Has anyone been successful with either? Are there other libraries out
> there?
> 
> Thanks.
> 
> [1] https://github.com/myflashlab/barcode-ANE
> [2]
> https://www.kasperkamperman.com/blog/flash-code/flash-qrcode-reader-as3/
> 
> 
> 
> --
> Sent from: http://apache-flex-users.246.n4.nabble.com/
> 
> 



Re: Inject Authorization Header into WebView on Mobile

2018-09-24 Thread Erik Thomas
Oh, I realize there are a few errors in the code sample, I wrote it quickly and 
it's just a quick and dirty example of using HTTPService which makes setting 
request headers simple.

Obviously the result() function doesn't return a String. Just figure out how to 
use the result as input to your RichWebView instance.

So, no need folks to show me my coding errors. LOL. 

Cheers,

Erik

On Sep 24, 2018, at 9:02 AM, Erik Thomas  wrote:

Hey Bill:

I just verified on the myflashlabs.com <http://myflashlabs.com/> documents for 
RichWebView that you can load an HTML String directly into the WebView instance:

https://www.myflashlabs.com/product/rich-webview-ane-adobe-air-native-extension/
 
<https://www.myflashlabs.com/product/rich-webview-ane-adobe-air-native-extension/>

Therefore you do not need to host a public web page at all. We can simplify 
this a lot. 

1. Create a PHP endpoint (I call these REST APIs) accessible through SSL (if 
you want to be more secure--but you can do that later) with a function that 
handles the incoming HTTP request. I don't use PHP so can't provide any 
samples, but you should be able to find lots of help on the web.

2. In your mobile app, use HTTPService to hit the PHP endpoint (sample below), 
passing an auth token you got back on initial login as a header, and pass a 
page id as a query param, a header, or path variable, your choice (I add it to 
a header in the example). This is just one approach, there are more.

3. In the PHP function handler, authenticate the HTTP request's auth token, and 
use the page id to return the appropriate web page. Remember, web servers in 
the classic sense simply return HTML as a stream of bytes. For example, you 
could just return this in the HTTP response payload: Hello world and you 
can simply assign that to the RichWebView's instance.

If you use SSL, and you authenticate a valid auth token, then you are pretty 
secure and at no time do you expose the page to the public. However, know that 
there are many sophisticated ways hackers can still get at your info, like 
setting up a proxy with root authority certificate (man-in-the-middle) on 
un-secure WiFi at Starbucks. But unless your web page is a high value target, 
it's unlikely. Just beware.

You can dynamically generate the HTML or read it from disk (non-public 
location) or process it as a template, and then return it in the HTTP response. 
Then assign the HTML content to your RichWebView instance.

Here is an HTTPService code sample:
import mx.rpc.http.HTTPService;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

private var _httpService:HTTPService;
private var _authToken:String; // set after logging in with a different function

private function getMyPage(pageId:String):void {
   _httpService = new HTTPService();
   _httpService.url = "https://yourapp.com/getdoc";;
   _httpService.headers = {
   "Accept": "text/html",
   "Authentication": _authToken,
   "pageId": pageId
   }
   _httpService.resultFormat = "text";
   _httpService.addEventListener(FaultEvent.FAULT, fault);
   _httpService.addEventListener(ResultEvent.RESULT, result);
   _httpService.send();
}

private function result(event:ResultEvent):String {
   if (event.statusCode == 200 && event.result is String) {
   // assign this String to your RichWebView instance
   return event.result as String;
   } else {
   // error
   }
}

private function fault(event:FaultEvent):void {
   // error
}




Re: Inject Authorization Header into WebView on Mobile

2018-09-24 Thread Erik Thomas
Hey Bill:

I just verified on the myflashlabs.com  documents for 
RichWebView that you can load an HTML String directly into the WebView instance:

https://www.myflashlabs.com/product/rich-webview-ane-adobe-air-native-extension/
 


Therefore you do not need to host a public web page at all. We can simplify 
this a lot. 

1. Create a PHP endpoint (I call these REST APIs) accessible through SSL (if 
you want to be more secure--but you can do that later) with a function that 
handles the incoming HTTP request. I don't use PHP so can't provide any 
samples, but you should be able to find lots of help on the web.

2. In your mobile app, use HTTPService to hit the PHP endpoint (sample below), 
passing an auth token you got back on initial login as a header, and pass a 
page id as a query param, a header, or path variable, your choice (I add it to 
a header in the example). This is just one approach, there are more.

3. In the PHP function handler, authenticate the HTTP request's auth token, and 
use the page id to return the appropriate web page. Remember, web servers in 
the classic sense simply return HTML as a stream of bytes. For example, you 
could just return this in the HTTP response payload: Hello world and you 
can simply assign that to the RichWebView's instance.

If you use SSL, and you authenticate a valid auth token, then you are pretty 
secure and at no time do you expose the page to the public. However, know that 
there are many sophisticated ways hackers can still get at your info, like 
setting up a proxy with root authority certificate (man-in-the-middle) on 
un-secure WiFi at Starbucks. But unless your web page is a high value target, 
it's unlikely. Just beware.

You can dynamically generate the HTML or read it from disk (non-public 
location) or process it as a template, and then return it in the HTTP response. 
Then assign the HTML content to your RichWebView instance.

Here is an HTTPService code sample:
import mx.rpc.http.HTTPService;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

private var _httpService:HTTPService;
private var _authToken:String; // set after logging in with a different function

private function getMyPage(pageId:String):void {
_httpService = new HTTPService();
_httpService.url = "https://yourapp.com/getdoc";;
_httpService.headers = {
"Accept": "text/html",
"Authentication": _authToken,
"pageId": pageId
}
_httpService.resultFormat = "text";
_httpService.addEventListener(FaultEvent.FAULT, fault);
_httpService.addEventListener(ResultEvent.RESULT, result);
_httpService.send();
}

private function result(event:ResultEvent):String {
if (event.statusCode == 200 && event.result is String) {
// assign this String to your RichWebView instance
return event.result as String;
} else {
// error
}
}

private function fault(event:FaultEvent):void {
// error
}

 

Re: Inject Authorization Header into WebView on Mobile

2018-09-21 Thread Erik Thomas
Hi Bill:

The way we do this for a Stage based PDF viewer (ANE) is to provide an API 
endpoint on our back-end server that requires the Authorization header and a 
resourceId. It then returns a temporary URL to the resource. So it's two steps:

1. Call the API with auth header and resourceId. Response contains temporary 
URL to the resource.
2. Pass the temporary URL to the show() or load() function on the StageWebView 
service.

However, if the resource request itself requires Basic authentication and it's 
not in your control (some other server), then this won't work and I'd recommend 
you ask the ANE authors if they could support Basic auth for resource URIs. 

But if you host the resource yourself you can do whatever you want. For 
example, you can get even more secure and include a query parameter in the URL 
returned in the API call response that contains a hash of some kind that can be 
used to verify the request is from a valid source.

You can also expire the URL after some period of time to be even more secure, 
like in 10 seconds that URL no longer points to the resource. 

I echo Olaf's wish for good luck.

Erik



Re: Label

2018-09-19 Thread Erik Thomas
Another option is to center all objects in the parent container, but the parent 
container must also set width or percentWidth. When width is not specified, a 
container or Label will size to fit the content only, so there is no concept of 
centering.

var _sln:Label = new Label();
_sln.text = _uofsModel.tempLessonTestResults.aUofS[i];
_bgs.setStyle("horizontalAlign", "center"); 
_bgs.width = 800;
_bgs.addElement(_sln);

Re: Label

2018-09-19 Thread Erik Thomas
For text to be centered, the width of the Label must be set. You can set it to 
percent value or points with percentWidth or width properties.

var _sln:Label = new Label();
_sln.text = _uofsModel.tempLessonTestResults.aUofS[i];
_sln.setStyle("textAlign", "center");
_sin.percentWidth = 100;
_bgs.addElement(_sln);

Using 100% width will center it in the parent container's x axis.



Re: Desktop AIR Signing Woes

2018-08-21 Thread Erik Thomas
Thanks Bill:

The confusion on my part was thinking I could use a MacOS application 
code-signing certificate from the Apple Developer program to sign a Desktop AIR 
app for MacOS--but it appears you cannot! 

All instructions I've found from Adobe and the many stack overflow and other 
forum posts never mention this, they just say that you can code-sign with any 
code-signing cert from a certificate authority, and of course Apple is a CA, 
but their cert won't sign an AIR app for MacOS. Weird but apparently true.

We've since ordered a code-signing certificate especially for AIR desktop apps 
for Windows and MacOS from DigiCert ($200!) which is supposed to work, but I 
haven't received it yet. They are taking their time verifying our identity. 
Hopefully I'll have it this week and I will post the solution once I get it 
working.

Also, found a couple things others may find valuable if porting a mobile to 
Desktop AIR:

It is possible to reuse AS libraries that reference ANEs for mobile in the 
desktop project, there's a trick but it works even if the ANE doesn't work on 
desktop. This makes it easy to just reuse the same codebase for mobile and 
desktop.
If you use StyleableStageText in a mobile project, you cannot reuse that code 
on desktop unless you add mobilecomponents.swc as an external library 
dependency.

With these two points, I am sharing 98% of my mobile app's codebase with the 
desktop project just using shared libraries. Took a bit of effort to figure 
these things out but it's awesome to get desktop almost for free, except for 
these dumb code-signing issues.

Cheers,

Erik

On Aug 21, 2018, at 10:45 AM, bilbosax  wrote:

Erik, I don't know a lot about these things, but this is one I think I would
send over to the Adobe AIR forums.  They seem to have their hands more on
the mechanics of compiling and packaging than I think the guys over here at
Flex probably do.

Just a thought.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Notifications

2018-03-25 Thread Erik Thomas
This is where I suggest you start reading:

https://developer.apple.com/notifications/

Push notifications, as you've no doubt seen in other apps, are for summary 
information about an event, like a new property that meets their criteria as 
you said. I believe the rule of thumb is you have 37 characters in the content 
of the notification plus a title and on iOS you have a subtitle. Larger devices 
can display more, but 37 is the magic number for iPhone 5 and smaller android 
devices.

When the user's app is closed or in the background, a notification will play a 
sound, show a banner with a title and the short message, and you can update the 
banner on the app's icon to show there are unread notifications. You can send a 
listing id in the PN. When the user taps the banner, your app will launch and 
your app's PN listener will execute and you can do what you want with the 
listing id. Pull that data and navigate to the view.

Keep in mind people will turn off PNs for your app if you hit them too often. 
Best to throttle notifications if their search criteria will result in sending 
dozens of notifications a day. Limit to just a few per day to prevent them from 
turning them off for your app, or uninstalling your app and installing Trulia 
instead. ;-)

Erik



Re: Deep Linking with Flex to Mobile Apps

2017-05-18 Thread Erik Thomas
Do you know the one for calendar events?

> On May 15, 2017, at 11:10 AM, OmPrakash Muppirala  
> wrote:
> 
> http://www.adobe.com/devnet/flex/articles/employee-directory-android-flex.html#articlecontentAdobe_numberedheader_5
> has a few examples
> 
> case "tel": navigateToURL(new URLRequest("tel:"+action.details)); break;
> case "sms": navigateToURL(new URLRequest("sms:"+action.details)); break;
> case "mailto": navigateToURL(new URLRequest("mailto:"+action.details));
> break;
> 
> On Mon, May 15, 2017 at 10:44 AM, Erik J. Thomas  wrote:
> 
>> Ah, no wonder my searching didn't find what I was looking for. Thank you
>> very much, Clint!
>> 
>> Erik
>> 
>>> On May 15, 2017, at 9:01 AM, Clint M  wrote:
>>> 
>>> deep linking is the wrong term… I think you're looking for url schemes.
>>> 
>>> phone is navigateToURL("tel:+55");
>>> email is navigateToURL("mailto:a...@asdf.com";);
>>> 
>>> On Mon, May 15, 2017 at 8:51 AM, Erik J. Thomas  wrote:
>>> 
 Hey all:
 
 I need to be able to do various deep linking between mobile apps and my
 Flex app. I've learned to do this for twitter and linked in profiles
>> pretty
 simply:
 
 var u:URLRequest = new URLRequest(data.twitterProfileUrl);
 navigateToURL(u, "_blank");
 
 If the twitter app is installed on the phone (at least iOS), this will
 launch the app. If the app is not available, it will open the browser
>> and
 nav to the profile. Very cool stuff. Works for google maps too, when the
 user taps an address.
 
 But I need to do the following additional linking and don't know how to
 format the URLs to make it happen:
 
 User taps a phone number, dials the phone if the device is a phone.
 User taps an email address, and it launches their mail program to send
 mail. Just need the syntax for subject, content, additional addresses,
>> etc.
 User taps a date/time field, and it launches their mobile calendar app
>> and
 offers to create a new item.
 
 My guess is that this is all possible with Flex, but I'm not finding
>> info
 on syntax and usage through Google searches. I found this list of device
 specific deep linking, but expect Flex has a platform agnostic URL
>> format
 so we don't have to manage device/OS types in the flex app.
 
 Just a link to the docs for this type of deep linking would be great.
>> And
 in the Mobile native world deep linking is usually about linking mobile
 apps. In the Flex world the term "deep linking" is most often referring
>> to
 browser history management which is NOT what I need.
 
 Thanks!
 
 Erik
 
 
>> 
>> 



Re: TextInput bug with soft keyboard (mobile)

2017-05-14 Thread Erik Thomas
Hey Frederic:

Thanks for your response. I have worked around this problem in the one instance 
it occurs in my app. It's a kludge but works for now, I just set text to a 
blank space ' ' and then remove it when it gets focus and the input cursor 
shows up after the contents are scrolled into view to make way for the soft 
keyboard.

I have tried both the mobile textinput skin and the spark, and a custom skin 
making a copy of both the spark and mobile skins. Trouble is I uncovered other 
bugs including when using the mobile skin, clicking (tapping) into the input 
field, the cursor appears almost in the middle of the field and the prompt text 
never disappears when typing. I didn't have time to troubleshoot all that and 
fix it. My workaround is OK for now. With either custom skins (just copies of 
the ones TextInput uses in the spark and mobile libraries even with no changes 
at all), I got a viewPort error deep in the framework every time running the 
app. 

I upgraded to Flex SDK 4.16 from 4.15, using AIR 25 now, and that didn't make 
any difference. There is something else going on.

I'm using my own view management mechanism with an Application (single page) 
and as the user navigates, I hide one view and show another, having 5 views 
active with 4 hidden all the time and this seems to be affecting the Stage 
TextInput field. Now on several of my views the TextInput fields won't accept 
focus at all. The soft keyboard pops up and immediately disappears. This 
affects three of the 5 views. I am doing something fundamentally against the 
way Flex was designed, or just uncovered a bug.

Thanks.

Erik

> On May 11, 2017, at 9:42 AM, Fréderic Cox  wrote:
> 
> Which skin are you using for the TextInput? The default spark textinput skin? 
> The mobile textinput skin? Or ScrollingStageTextInput ?
> 
> On Thu, May 11, 2017 at 5:20 PM, Erik J. Thomas  > wrote:
> I spent the better part of a day trying to solve for an annoying user 
> experience with TextInput on mobile devices (Apple). 
> 
> If a TextInput or TextArea input field is located in the top 50% of the 
> display area, and a setFocus() call on the input field is made, the soft 
> keyboard displays and the input cursor is visible (all is well). But if the 
> input field is where it would be obscured by the soft keyboard (lower half of 
> the display), Flex moves the content up so the input field is visible (nice 
> feature), but the input cursor disappears.
> 
> I have tried many workarounds, all failing:
> 
> Using callLater to call a function that sets the input focus a second time.
> Listening for soft keyboard events and then setting input focus again.
> Setting kludge timer to wait after the soft keyboard is activated and set 
> focus to the control again after waiting a variety of different durations.
> 
> My latest idea is to try scrolling the content up myself so I know the input 
> field is visible BEFORE setting focus so the input cursor will always be 
> visible, but operations on the scroller don't give me the ability to place 
> the input field exactly above the soft keyboard. Before I go down the road of 
> firing an event from the ItemRenderer that the parent view with the scroller 
> can react to I wondered if there is a known solution that's less work.
> 
> Anyone found a good workaround for this obvious bug in Flex (or perhaps AIR)? 
> BTW, I ran into this bug the first time about 5 years ago and worked around 
> it by placing input fields in the top 50% of the display area, but in this 
> case, my content is scrolling so I cannot do that. I was surprised to see 
> this bug has never been fixed.
> 
> For more detail read on...
> 
> My design is a Facebook-ish social app (for one view) with scrolling content:
> 
> 
> 
> 
> When the user taps Comment and the input field is in the lower half of the 
> device's display area, Flex moves the content up enough for the input field 
> to be visible above the soft keyboard, but the input cursor never displays:
> 
> 
> 
> Thanks so much for your suggestions!
> 
> Erik
> 
> 
> 
> 
>