- Netstream stürzt beim Trennen vorübergehend ab (3193417)
- Problem beim Stoppen des Liveaudiostreams unter AIR Android (3188340)
- drawWithQuality() rendert Filter auf Android-Geräten nicht korrekt (3224928)
- Clipboard.generalClipboard.setData funktioniert nicht unter iOS (3226045)
- Einige FLV-Videoinhalte werden in Flash Player unter Windows nicht abgespielt (3187569)
- In Flash Player-gestützten Apps wird in Firefox unter Windows nur rechtsseitiges Audio abgespielt (3289279)
- Maussperrfunktion ist nach dem Wechsel in den interaktiven Vollbildmodus deaktiviert (3174344)
- [iOS5] Textfelder mit eingebetteten Schriftarten erscheinen auf mobilen Geräten nicht korrekt (3161138)
- Bei einigen Live-Streaming-Inhalten friert der erste Frame ein (3207896)
- Anwendungssymbole für 50X50, 100X100, 1024X1024 werden jetzt für iOS-Anwendungen im Anwendungsdeskriptor unterstützt (3217144)
- Anwendungen, die native Erweiterungen verwenden, stürzen unter iOS manchmal ab, wenn bestimmte externe Bibliotheken verwendet werden, zum Beispiel Libxml2.dylib (3226974)
- Leichte Abweichungen sind zu beobachten, wenn ein Startbild mit der Auflösung 768 x 1004 oder 1024 x 748 in einer iPad-Vollbildanwendung verpackt wird. (3230762). Die neuen Richtlinien zur Verwendung von Startbildern finden Sie hier
- H264-Videos unter iOS stürzen beim Wechsel zwischen zwei NetStreams an einem StageVideo-Objekt ab (3206438)
- Problem mit CameraRoll.browseForImage() verursacht Transparenzverluste, die in weißer Farbe resultieren (3291312)
- ActionScript-Worker (Flash Player)
- Sandbox-Bridge-Unterstützung (Flash Player)
- Lizenzierungsunterstützung: Flash Player-Premium-Funktionen für Spiele (Flash Player)
- Eingeschränktes Profil („Constrained“) von Stage3D für verbesserte GPU-Reichweite (Flash Player und AIR)
- LZMA-Unterstützung für ByteArray (Flash Player und AIR)
- StageVideo-Verbesserungen für attachCamera/Camera (Flash Player und AIR)
- Komprimierte Textur mit Alpha-Unterstützung für Stage3D (Flash Player und AIR)
- DXT-Kodierung (Flash Player und AIR)
- Veraltete Carbon-APIs für AIR (AIR)
- Direkte Bereitstellung in AIR mit ADT (AIR)
- Push-Benachrichtigungen für iOS (AIR)
- Ambient-AudioPlaybackMode (AIR)
- Ausnahme-Unterstützung in nativen Erweiterungen für iOS (AIR)
- Neue Option in ADT zum Auflisten der angeschlossenen Geräte (AIR)
- ADT-Option zum Lösen von ANE-Symbolkonflikten unter iOS (AIR)
| Produkt | Veröffentlichte Version |
| Flash Player Desktop (Windows® /Mac) | 11.4.402.265 |
| AIR (Windows® , Mac, Mobil) | 3.4.0.2540 |
| AIR SDK | 3.4.0.2540 |
- transformVector() von Matrix3D, transformiert w-Komponente falsch (3190677)
- [iOS] Unter iOS 4.3 werden komprimierte Cubemaps mit Alpha nicht korrekt gerendert (3282166)
- navigateToURL mit hohen ASCII-Zeichen funktioniert nicht korrekt für AIR-Desktop-Anwendungen (3161093)
- [iOS] Bei einigen Inhalten schlägt die Installation einer .ipa-Datei mit AIR 3.4 gelegentlich fehl mit Installationsfehler: PackageExtractionFailed (3220974)
- Wenn beim Verpacken einer Anwendung für iOS ein –hideAneLibSymbols-Kennzeichner verwendet wird, sollten in der ANE-Datei platform.xml nur die Framework- und Bibliotheksverknüfpungsoptionen sowie Optionen wie -ios_version_min verwendet werden
- Berechtigungsdialog für Geolocation wird in iOS 6 Beta nicht angezeigt (3291688)
- AIR-Anwendungen, die mit AIR 3.4 SDK & iOS 6 Beta SDK verpackt wurden, unterstützen AutoOrients für die umgedrehte Ausrichtung bei iPod und iPhone nicht (3286288)
- Eine Anwendung, die mit AIR 3.4 SDK und iOS 6 Beta SDK verpackt wurde, unterstützt das aspectRatio-Tag bei iOS 5.1-Geräten nicht (3286320)
| Sicherheitsbulletin | Betroffene Produkte |
| APSB12-19 | Flash Player Desktop Windows® & Mac |
| Flash Player AndroidTM |
ActionScript-Worker
- Mit der Einführung von Workern in ActionScript und die Flash-Laufzeitumgebung können Flash-Entwickler jetzt bestimmte Aufgaben wie Operationen mit hoher Latenzzeit und lang andauernde Berechnungen an Hintergrund-Worker abgeben. Diese Hintergrund-Worker werden gleichzeitig ausgeführt, um Computerressourcen besser zu nutzen und ein Einfrieren der Benutzeroberfläche zu vermeiden.
- Hinweis: Um ActionScript-Worker optimal zu nutzen und um Worker debuggen zu können, ist die nächste Version von Flash Builder erforderlich. Die nächste Version von Flash Builder wird als öffentliche Beta-Version im August verfügbar sein.
- Hinweis: Die Unterstützung von gemeinsam genutzten Speicher (ByteArray.shareable) wird in einer zukünftigen Version von Flash Player verfügbar sein.
Sandbox-Bridge-Unterstützung
- Durch Sandbox-Bridging können bestimmte ActionScript-Objekte oder -Funktionen in der domänenübergreifenden Kommunikation von SWF zu SWF verfügbar gemacht werden. Diese Funktion ist bereits in AIR verfügbar und wird in dieser Version nach Flash Player portiert.
Lizenzierungsunterstützung: Flash Player-Premium-Funktionen für Spiele (Flash Player)
- Mit der Einführung von Premium-Funktionen für Spiele können jetzt Nicht-ActionScript-Arbeitsabläufe Flash Player als Ziel verwenden. Diese Version unterstützt die Lizenzkontrolle für die Premium-Funktionen der XC APIs (die kombinierte Verwendung der Domänenspeicher-API und der API für Stage3D-Hardwarebeschleunigung) in Flash Player. Diese APIs werden von einigen Drittanbietertools wie Unity und dem C/C++-Compiler aus dem Adobe-Projekt „Alchemy“ verwendet. Weitere Informationen finden Sie unter www.adobe.com/go/fpl_de.
Eingeschränktes Stage3D-Profil für verbesserte GPU-Reichweite
- Flash Player beschränkt die Verwendung der Hardwarebeschleunigung basierend auf dem Alter des verwendeten Grafikkartentreibers. In früheren Versionen wurde die Unterstützung für Treiber, die älter als vom 1. Januar 2008 sind, ausgeschlossen. In dieser Version wird dieses Grenzdatum auf den 1. Januar 2006 ausgedehnt. Inhalte, die wmode=direct (oder renderMode=direct für AIR) verwenden, sollten nach Möglichkeit hardwarebeschleunigt sein, wenn der Grafiktreiber neuer als vom 1.1.2006 ist. Dies gilt für Stage3D- und [StageVideo|StageVideo]-APIs. Zusätzlich haben wir ein neues Profil mit dem Namen „constrained“ (eingeschränkt) für Stage3D hinzugefügt, sodass Sie Ihre Inhalte auf den zuvor auf der Blacklist geführten Intel® GMA-Chipsätzen hardwarebeschleunigt ausführen können. Weiter unten finden Sie weitere Informationen zu diesem neuen Profil und seiner Verwendung.
LZMA-Unterstützung für ByteArray
- Neben der zlib-Komprimierung von ByteArray wird ein zusätzlicher Komprimierungstyp eingeführt, der auf LZMA basiert, um Daten innerhalb eines ByteArray mit ByteArray.compress() und ByteArray.uncompress() zu komprimieren.
Komprimierte Textur mit Alpha-Unterstützung für Stage3D (Flash Player und AIR)
- Transparente Bilder werden jetzt für komprimierte Texturen unterstützt (ATF-Dateiformat).
StageVideo attachCamera/Camera-Verbesserungen
- Diese Eigenschaft stellt eine neue Methode für StageVideo-Objekte bereit, die dem ActionScript-Code ermöglicht, den Videostream von der Kamera an ein StageVideo-Objekt zu leiten und so die GPU anstelle des Rasterns für das Rendern zu nutzen. Auf diese Weise kann der Player einen Videostream von der Kamera viel schneller verarbeiten, wenn GPU-Beschleunigung verfügbar ist.
DXT-Kodierung
- Diese Eigenschaft ermöglicht die Kodierung von unkomprimierten Texturen in das DXT-Format während der Laufzeit, sodass die Textur als komprimierte DXT-Textur an die GPU hochgeladen werden kann.
Verfügbar auf dem Desktop für Flash Player 11.4 und AIR 3.4
Veraltete Carbon-APIs für AIR
- Ab Mac OS X 10.8 werden Carbon-APIs nicht mehr von Apple unterstützt. Um keine Ungleichheit mit Mac OSX 10.8 herzustellen, wurden diese APIs und anderer veralteter Code daher in dieser Version aus AIR entfernt.
- Diese neue Eigenschaft ermöglicht es Entwicklern, eine AIR-Anwendung auf iOS-Geräten bereitzustellen, ohne dass iTunes oder XCode verwendet werden muss. Bitte beachten Sie, dass iTunes 10.5.0 oder höher auf dem Computer des Benutzers installiert sein muss, damit diese Funktion verwendet werden kann.
iOS-Push-Benachrichtigungen
- Diese Funktion verwendet APNS (Apple Push Notification Service) und einen Provider (Drittparteiserver, der mit APN kommuniziert), um Benachrichtigungen zu generieren. Das neue Paket flash.notifications wurde eingeführt. Die Zustellung von Apple-Push-Benachrichtigungen ist vollständig vom APNS abhängig, und APNS garantiert die Zustellung von Push-Benachrichtigungen nicht. Apple empfiehlt auch, jedes Mal Push-Benachrichtigungen zu abonnieren, wenn eine Anwendung gestartet wird. Jedes Mal, wenn die Client-App Push-Benachrichtigungen abonniert, stellt der APNS der Client-App eine Token-ID bereit. Diese Token-ID sollte an den Drittanbieterserver oder Provider gesendet werden, der die Remote-Benachrichtigungen sendet.
Ambient-AudioPlaybackMode
- In AIR 3.4 steht Benutzern neben VOICE (Sprache) und MEDIA ein weiterer AudioPlaybackMode zur Verfügung, nämlich AMBIENT (Umgebung). Dieser neue AudioPlaybackMode ermöglicht Benutzern, bei ihrer Anwendung die Berücksichtigung des Hardware-Stummschalters, den es bei iPhone und iPad gibt, zu erzwingen. Ein Beispiel für die Verwendung des Ambient-Wiedergabemodus ist eine Spiel-App, bei der der Benutzer den Spielsound stummschalten kann und im Hintergrund mit einer anderen App Musik hören kann. Im Ambient-Modus respektiert Audio den Hardware-Stummschalter nur bei iOS-Geräten. Bei AndroidTM-Geräten entspricht der Ambient-Modus dem Media-Modus.
Ausnahme-Unterstützung in nativen Erweiterungen für iOS
- Eine native Erweiterung für iOS kann jetzt sowohl C++- als auch Objective-C-Ausnahmen verwenden. Es ist Aufgabe der Erweiterung, alle im Code ausgegebenen Ausnahmen abzufangen. Die Laufzeitumgebung fängt die von Erweiterungen ausgegebenen Ausnahmen nicht ab.
ADT-Option zum Auflisten der angeschlossenen mobilen Geräte
- ADT wurde einen neue Option, „-devices“, hinzugefügt, um die angeschlossenen iOS/AndroidTM-Geräte aufzulisten. Benutzer können diese Option nutzen, anstatt adb für das Auflisten der AndroidTM-Geräte und idb für das Auflisten der iOS-Geräte zu verwenden. Bitte beachten Sie, dass iTunes 10.5.0 oder höher auf dem Computer des Benutzers installiert sein muss, damit diese Funktion verwendet werden kann.
ADT-Option zum Lösen von ANE-Symbolkonflikten unter iOS
- Da Anwendungsentwickler möglicherweise mehrere nativen Erweiterungen verwenden, die aus verschiedenen Ressourcen stammen, kann ein Symbolname, der in beiden ANEs vorkommt, zu einem Fehler beim Verpacken führen, der anzeigt, dass ein Symbol in den Objektdateien doppelt vorkommt, oder zur Laufzeit einen Absturz verursachen. Um dieses Problem zu umgehen, wurde eine neue ADT-Option, „-hideAneLibSymbols“, eingeführt, die beim Verpacken der Anwendung angegeben werden kann. Die Option kann die Werte „yes“ oder „no“ annehmen, wobei mit „yes“ die Bibliothekssymbole jeder ANE vor den anderen ANEs verborgen werden.
Erste Schritte mit Workern
Um mit der Arbeit mit Workern zu beginnen, sehen Sie sich die Beispiel in der Datei flashplayer11-4_p1_ex_concurrency.zip an.
Hinweis
Nachfolgend sind die Auswirkungen auf den Arbeitsspeicher („Memory Footprint“) pro Worker unter Mac OS und Windows® aufgeführt:
Anzahl der Worker |
Mac BookPro |
PC |
Lenovo T61 Laptop |
0 |
10 |
4.78 |
4.39 |
1 |
15.75 |
9.33 |
8.59 |
2 |
21.47 |
13.8 |
12.77 |
3 |
27.28 |
18.35 |
16.39 |
4 |
33 |
22.8 |
20.67 |
5 |
38.81 |
26.39 |
24.58 |
6 |
44.25 |
31.1 |
28.8 |
7 |
50 |
35.62 |
32.67 |
8 |
55.89 |
40.16 |
35.75 |
9 |
61.7 |
44.73 |
39.6 |
10 |
67.47 |
48.83 |
43.9 |
Wenn Code im Kontext eines nicht-ursprünglichen Workers ausgeführt wird (d. h. im Hintergrund), unterscheiden sich einige API-Verhaltensweisen der Flash-Laufzeitumgebung von denen des ActionScript-Codes, der im Hauptthread ausgeführt wird. Die folgenden APIs verhalten sich anders, wenn sie aus einem Hintergrund-Worker verwendet werden.
Nicht funktionierende APIs
Die folgenden APIs sind nicht aus einem Hintergrund-Worker heraus verfügbar. Jeder Versuch, eine Instanz dieser APIs zu konstruieren, führt zu einem IllegalOperationError mit der Meldung „Diese Funktion ist in diesem Kontext nicht verfügbar“, die errorID ist immer dieselbe, sodass Entwickler diesen Wert einordnen können.
- flash.desktop.Clipboard // Aufruf des Kontruktors gibt den Fehler aus, Aufruf von generalClipboard gibt null zurück
- flash.desktop.NativeDragManager // isSupported gibt „false“ zurück
- flash.desktop.Updater // isSupported gibt „false“ zurück
- flash.display.NativeMenu // isSupported gibt „false“ zurück
- flash.display.NativeWindow // isSupported gibt „false“ zurück
- flash.display.ToastWindow // kann nicht auf die Instanz zugreifen, da stage.window nie definiert ist
- flash.display.Window // kann nicht auf die Instanz zugreifen, da stage.window nie definiert ist
- flash.external.ExtensionContext // createExtensionContext() gibt immer null zurück oder gibt einen Fehler aus
- flash.external.ExternalInterface // available gibt „false“ zurück
- flash.html.* // HTMLLoader.isSupported gibt „false“ zurück
- flash.media.CameraRoll // supportsAddBitmapData und supportsBrowseForImage geben „false“ zurück
- flash.media.CameraUI // isSupported gibt „false“ zurück
- flash.media.StageWebView // isSupported gibt „false“ zurück
- flash.net.drm.* // DRMManager.isSupported gibt „false“ zurück
- flash.printing.* // PrintJob.isSupported gibt „false“ zurück
- flash.security.XMLSignatureValidator // isSupported gibt „false“ zurück
- flash.system.IME // isSupported gibt „false“ zurück
- flash.system.SystemUpdater // Aufruf des Konstruktors gibt einen Fehler aus
- flash.text.StageText // Aufruf des Konstruktors gibt einen Fehler aus
- flash.ui.ContextMenu // isSupported gibt „false“ zurück
- flash.ui.GameInput // isSupported gibt „false“ zurück
- flash.ui.Mouse // alle Methoden sind No-ops; das Einstellen der 'cursor'-Eigenschaft ist ein No-op
Veränderte Verhaltensweisen von APIs
Die folgenden APIs weisen ein verändertes Verhalten auf, wenn sie von einem Hintergrund-Worker aus ausgeführt werden. Einige Methodenaufrufe sind No-ops (Leerbefehle), während andere einen IllegalOperationError oder einen entsprechenden Fehler ausgegeben, der mit der dokumentierten API konsistent ist. Rückgabewerte sollten mit der Dokumentation so weit wie möglich konsistent sein. Wenn eine Methode beispielsweise unter normalen Umständen ein Array mit Elementen darin zurückgibt, gibt sie bei der Ausführung aus einem Hintergrund-Worker heraus ein leeres Array zurück.
- flash.accessibility.Accessibilty
- active // gibt immer „false“ zurück
- updateProperties(); // No-op
- flash.desktop.NativeApplication**-Eigenschaften
·
- flash.display.Stage
- allowsFullScreen // gibt immer „false“ zurück
- stage3Ds // gibt immer einen leeren Vektor zurück
- stageVideos // gibt immer einen leeren Vektor zurück
- supportsOrientationChange // gibt immer „false“ zurück
- wmodeGPU // gibt immer „false“ zurück
- flash.filesystem.File
- browseForDirectory(), browseForOpen(), browseForOpenMultiple(), browseForSave() // No-op
- flash.net.FileReference** browse(), download(), save() // No-op; gibt immer „false“ zurück
- flash.net.FileReferenceList** browse() // No-op; gibt immer „false“ zurück
- flash.system.System
- ime // gibt immer null zurück
- exit() // erzwingt das Beenden und Herunterfahren dieses Hintergrund-Workers
- setClipboard() // No-op
-
- Methoden
- activate(), clear(), copy(), cut(), paste(), selectAll() // No-op
- exit() // erzwingt das Beenden und Herunterfahren dieses Hintergrund-Workers
- Ereignisse
- Nur das Beenden-Ereignis wird unterstützt – dieses Ereignis wird abgesetzt, wenn der Worker herunterfährt (dies passiert entweder mit Aufrufen von Lifecycle-Methoden oder wenn der „Haupt“-Worker herunterfährt, d. h. die Laufzeitumgebung wird beendet; nicht vom Hintergrund-Worker abzubrechen)
-
- supportsDefaultApplication, supportsDockIcon, supportsMenu, supportsStartAtLogin, supportsSystemTrayIcon // geben alle „false“ zurück
- activeWindow // gibt null zurück
- autoExit // Setter ist ein No-op
- idleThreshold // Setter ist ein No-op
- openedWindows // gibt ein leeres Array zurück []
- systemIdleMode // Setter ist ein No-op
- Methoden
Erweiterte GPU-Reichweite - Eingeschränktes Stage3D-Profil
Der neue Parameter „profile“ wurde für Context3D eingeführt. Dieser Parameter ist in der Stage3D.requestContext3D()-Funktion verfügbar; Sie können ihm einen von zwei Werten geben: Context3DProfile.BASELINE („baseline“), womit das typische Context3D zurückgegeben wird, das aus früheren Versionen bekannt ist, oder Context3DProfile.BASELINE_CONSTRAINED („baselineConstrained“), womit eine neue Art Context3D zurückgegeben wird, das mit Hardwarebeschleunigung auf zuvor nicht unterstützten GPUs ausgeführt werden kann. Eingeschränkte (Constrained) Profile ermöglichen es Autoren, Stage3D-Inhalt zu erstellen, der ältere Systeme mit Grafikkarten wie Intel® GMA 900/950 unter Windows® als Ziel verwenden kann. Der Nachteil, der beim Abzielen auf weniger leistungsfähige Hardware mit dem eingeschränkten Profil in Kauf genommen werden muss, besteht darin, dass Stage3D-Fähigkeiten eingeschränkt sind, um zu gewährleisten, dass Inhalte unter Verwendung dieser Hardware gut ausgeführt werden können. Karten wie die GMA 900/950 unterstützen nur die Pixel/Vertex-Shader-Version 2.0, die die folgenden Einschränkungen für Stage3D im Profil „Constrained“ erzwingt:
- Begrenzt auf 64 ALU- und 32-Texturanweisungen pro Shader.
- Nur 4 Texturleseanweisungen pro Shader.
- Begrenzt auf kleinere Mengen von constants/varying/temps pro Shader.
- Keine Unterstützung für Prädikatregister. Dies betrifft sln/sge/seq/sne und muss durch mov/cmp-Verbundanweisungen ersetzt werden, die mit ps_2_0 verfügbar sind (dies erfolgt zu dem Preis, dass im Vergleich mit ps_2_x mehr Anweisungsplätze verwendet werden).
- Der Context3D-Hintergrundpuffer muss immer innerhalb der Grenzen der Bühne sein.
- Innerhalb einer Flash Player-Instanz ist jeweils nur eine Instanz von Context3D zulässig, die im eingeschränkten Profil („constrained“) ausgeführt wird.
- Wie bei mobilen Inhalten werden die klassischen Flash-Anzeigelistenelemente nicht aktualisiert, während eingeschränkte Stage3D-Inhalte sichtbar sind, es sei denn, Context3D.present() wird aufgerufen.
„Profile“ ist der zweite optionale Parameter der requestContext3D-Methode. Entwickler können das „baselineConstrained“-Profil anfordern, um Context3D im eingeschränkten Modus zu erhalten, wie in der folgenden API zu sehen: function requestContext3D ( context3DRenderMode : String = "auto", profile : String = "baseline" ) : void;
Beispiel:
stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, createdHandler);
stage.stage3Ds[0].requestContext3D(Context3DRenderMode.AUTO, Context3DProfile.BASELINE_CONSTRAINED);
Direkte AIR-Bereitstellung mit ADT
Installation:
Um eine IPA-Datei auf einem Gerät zu installieren, verwenden Sie folgenden Befehl:
adt -installApp -platform ios -device <GeräteID> -package <ipa-file>
Deinstallieren:
Um eine IPA-Datei von einem Gerät zu deinstallieren, verwenden Sie folgenden Befehl:
adt -uninstallApp -platform ios -device <GeräteID> -appid <app-id>
<GeräteID> des verbundenen Geräts wäre der „Handle“-Wert, der mit folgendem Befehl aufgeführt wird:
@SDKLocation/bin/adt –devices –platform ios
<app-id> wird in der Anwendungsdeskriptordatei (app.xml) innerhalb des <id> Tags angegeben. Wenn Sie Ihr Projekt mithilfe von Flash Builder erstellen, wäre dies standardmäßig der Name Ihrer App.
Wenn nur ein Gerät an den Desktopcomputer angeschlossen ist, lassen Sie das Argument „-device <GeräteID>“ aus. Die Anwendung wird dann auf dem verbundenen Gerät installiert bzw. deinstalliert.
adt -installApp -platform ios -package <ipa-Datei>
iOS-Push-Benachrichtigungen
1) Der App-Kennzeichner (id-Tag) in der app-xml sollte mit dem Anwendungskennzeichner des mobilen Provisioning-Zertifikats identisch sein, das mit Push-Benachrichtigungen aktiviert ist.
2) Schließen Sie die aps-environment-Berechtigung in Ihren Anwendungsdeskriptor ein:
<iPhone> <Entitlements> <![CDATA[ <key>get-task-allow</key> <true/> <key>aps-environment</key> <string>development</string> <key>keychain-access-groups</key> <array> <string>KEYCHAIN_ACCESS_GROUP</string> </array> ]]> </Entitlements> </iPhone>
Zum Senden der App an den App Store mit aktivierten Push-Benachrichtigungen muss die aps-environment auf „Produktion“ eingestellt werden. Der Entwickler muss das Provisioning-Profil mit aktivierten Push-Benachrichtigungen verwenden. Überprüfen Sie die Berechtigungen der signierten App mithilfe des folgenden Befehls.
codesign -d --entitlements - <NameIhrerApp>.app
3) Verwenden Sie die neu hinzugefügte flash.notification-Klasse in der Anwendung, um Unterstützung für Push-Benachrichtigungen zu aktivieren. Beispiel,
// eine leere Vektorliste wird zurückgegeben, wenn auf der Plattform keiner der Benachrichtigungsstile unterstützt wird. if (RemoteNotifier.supportedNotificationStyles != " " ) { var preferredNotificationStyles:Vector.<String> = neuer Vektor.<String>(); preferredNotificationStyles.push(NotificationStyle.ALERT); preferredNotificationStyles.push(NotificationStyle.SOUND); preferredNotificationStyles.push(NotificationStyle.BADGE); var subscribeOptions:RemoteNotifierSubscribeOptions = new RemoteNotifierSubscribeOptions(); subscribeOptions.notificationStyles = preferredNotificationStyles; var rn:RemoteNotifier = new RemoteNotifier(); rn.addEventListener(RemoteNotificationEvent.TOKEN,tokenEventHandler); rn.addEventListener(RemoteNotificationEvent.NOTIFICATION,notificationEventHandler); rn.addEventListener(StatusEvent.STATUS,statusHandler); // Der Aufruf der subscribe-Methode ohne irgendwelche subscribe-Optionen abonniert automatisch alle Benachrichtigungsstile, die auf dieser Plattform unterstützt werden rn.subscribe(subscribeOptions); } function tokenEventHandler(event:RemoteNotificationEvent):void { // AIR-Entwickler können die in event.data bei diesem Server empfangene tokenId über URL-Anforderung senden var urlRequest:URLRequest; var urlLoader:URLLoader = new URLLoader(); var urlString:String = "https://url.com/api/device_tokens/" + event.tokenId; urlRequest = new URLRequest(urlString); urlRequest.authenticate = true; urlRequest.method =URLRequestMethod.PUT; URLRequestDefaults.setLoginCredentialsForHost("url.com",<userId>,<password>); urlLoader.load(urlRequest); urlLoader.addEventListener(IOErrorEvent.IOERROR, onError); urlLoader.addEventListener(Event.COMPLETE, onComplete); urlLoader.addEventListener(HTTPStatusEvent.HTTPSTATUS,onStatus); } public function notificationEventHandler(e:RemoteNotificationEvent):void { //Code zur Verarbeitung der vom RemoteNotificationEvent-Ereignis empfangenen Daten des Typs Benachrichtigung for (var x:String in e.data) { trace("\n"+ x + ": " + e.data[x]); } } public function statusHandler(e:StatusEvent):void { //Code zur Verarbeitung des Ereignisses, wenn das Abonnieren fehlschlägt } private function onError(e:IOErrorEvent):void { //Code zur Verarbeitung des Fehlers, der beim Anfordern der URL durch den URL-Loader aufgetreten ist } private function onComplete(e:Event):void { //Code, um festzustellen, ob die vom ULR-Loader ausgeführte URL-Anforderung abgeschlossen ist } } private function onStatus(e:HTTPStatusEvent):void { //Code, um den http-Status der URL-Anforderung vom URL-Loader festzustellen }
Im Bundle der Clientanwendung können die übersetzten Benachrichtigungsstrings für jede unterstützte Sprache gespeichert werden. Der Provider gibt die loc-key- und loc-args-Eigenschaften im APS-Wörterbuch der Benachrichtigungsnutzdaten an. Wenn das Gerät die Benachrichtigung erhält, verwendet es die APS-Wörterbucheigenschaften, um den für die aktuelle Sprache lokalisierten String zu suchen und zu formatieren, der dann für den Benutzer angezeigt wird.
Lokalisierte Strings müssen sich in der Datei „Localizable.strings“ im entsprechenden Ordner „<Sprache>.lproj“ befinden. Jeder Eintrag in dieser Datei verfügt über einen Schlüssel und einen lokalisierten Stringwert. Der String kann Formatangaben für die Ersetzung variabler Werte aufweisen. Wenn eine Anwendung nach einem bestimmten String fragt, erhält sie die Ressource, die für die aktuell vom Benutzer ausgewählte Sprache lokalisiert wurde.
Um lokalsierte Remotebenachrichtigungen zu erhalten, muss eine AIR-Anwendung in der Datei „Localizable.strings“ im Ordner „<Sprache>-/lproj“ innderhalb des IPA lokalisierte Schlüssel-Wert-Paare aufweisen. Um Localizable.strings zum IPA hinzuzufügen, muss der Entwickler lediglich den jeweiligen Ordner „<Sprache>.lproj“ wie folgt im ADT-Befehl einfügen:
adt -package -target ipa-app-store -provisioning-profile <MobileProvisioningCertificate> -storetype pkcs12 -keystore <Certificate.p12> -storepass <PASSWORD> app.xml sample.swf en.lproj es.lproj fr.lproj
Beachten Sie, dass sich der lproj-Ordner im aktuellen Verzeichnis befinden muss, damit ADT die Dateien im entsprechenden lproj-Ordner zusammenführen kann. Wenn der lproj-Ordner als „a/b/c/en.lproj“ angegeben ist, fügt ADT dies als „a/b/c/en.lproj“ hinzu und die lokalisierten Schlüssel-Wert-Paare sind für die Anwendung nicht zugänglich.
ADT-Option zum Auflisten der angeschlossenen mobilen Geräte
Sie können den folgenden Befehl verwenden, um Informationen über die verbundenen iOS/AndroidTM-Geräte abzurufen:
adt -devices -platform (android | ios)
Mit diesem Befehl wird eine Ausgabe wie die folgende produziert:
Liste der angeschlossenen Geräte:
Handle Geräteklasse Geräte-UUID Gerätename
7 iPhone 783fc8af34a6022c924c34fe7025e7e39d9d123b iPhone von abc
Lizenzierungsunterstützung: Flash Player-Premium-Funktionen für Spiele (nur Flash Player)
Für die kombinierte Verwendung von Domänenarbeitsspeicher (von einigen Drittanbietertools und vom C7C++-Compiler des Projekts „Alchemy“ verwendet) mit Stage3D-Hardwarebeschleunigung ist eine Lizenz erforderlich. Wenn Sie beide Funktionen zusammen verwenden, wird im Inhalts-Debugger von Flash Player (Debug Player) zur Information ein Wasserzeichen angezeigt. Diese Lizenzierungsanforderung gilt nicht für Inhalte, die Stage3D-Hardwarebeschleunigung ohne Domänenarbeitsspeicher (oder Domänenarbeitsspeicher ohne Stage3D) verwenden, und gilt nicht für Inhalte, die mit Adobe AIR bereitgestellt werden.
Umgang mit Geräteverlust
Nicht lizenzierte Inhalte werden weiterhin ausgeführr, indem Stage3D automatisch zum Softwarerendern wechselt. Um sicherzustellen, dass der Inhalt den Verlust der Grafikkartenressource korrekt behandelt, verwenden Sie einen Listener für das Event.CONTEXT3D_CREATE-Ereigns am Stage3D-Objekt, um die Grafik Ihrer Inhalte neu zu initialisieren. Sie können ein Geräteverlustereignis simulieren, indem Sie context3D.dispose() aufrufen. (Jeglicher Stage3D-Inhalt sollte mit Geräteverlust umgehen können, der auch auftreten kann, wenn einComputer gesperrt wird oder der Bildschirmschoner aktiviert wird.)
ADT-Option zum Lösen von ANE-Symbolkonflikten unter iOS
Sie können den folgenden Befehl verwenden, um Anwendungen mit dieser Option zu verpacken:
adt -package –target ( ipa-test | ipa-debug | ipa-app-store | ipa-ad-hoc | ipa-test-interpreter | ipa-debug-interpreter | ipa-test-interpreter-simulator | ipa-debug-interpreter-simulator ) ( CONNECT_OPTIONS? | LISTEN_OPTIONS? ) ( -sampler )? –hideAneLibSymbols (yes|no) SIGNING_OPTIONS <output-package> ( <app-desc> PLATFORM-SDK-OPTION? FILE-AND-PATH-OPTIONS | <input-package> PLATFORM-SDK-OPTION? )
adt -package –target ipa-test –hideAneLibSymbols yes –provisioning-profile xxx.mobileprovision –storetype pkcs12 –keystore Certificates.p12 –storepass password Sample.ipa sample-app.xml sample.swf –extdir ANEFolder
Verwenden Sie den Wert „Yes“, um Symbolkonflikte zu vermeiden, und den Wert „No“, um dasselbe Verhalten wie vorher zu verwenden. Beachten Sie, dass diese Funktion in Flash Builder/Flash Professional noch nicht verfügbar ist.
var texture1:Texture = context3D.createTexture(256, 256, Context3DTextureFormat.COMPRESSED, false); texture1.uploadFromBitmapData(myPNGBitmap.bitmapData); // oder Sie können von einem byteArray hochladen wie von var texture2:Texture = context3D.createTexture(256, 256, Context3DTextureFormat.COMPRESSED_ALPHA, false); texture2.uploadFromByteArray(myPNGByteArray);
[Embed( source = "rsc/MyCompressed.atf", mimeType="application/octet-stream")] private var MyATF_DXT1:Class; [Embed( source = "rsc/MyCompressedAlpha.atf", mimeType="application/octet-stream")] private var MyATF_DXT5:Class; //----------------------------------------------------------------------------------- var fragmentShaderForCompressedTexture:String = "tex oc, v0, fs0 <2d, dxt1>"; var fragmentShaderForCompressedAlphaTexture:String = "tex oc, v0, fs1 <2d, dxt5>"; //----------------------------------------------------------------------------------- var texture1:Texture = context3D.createTexture(256, 256, Context3DTextureFormat.COMPRESSED, false); texture1.uploadCompressedTextureFromByteArray(new MyATF_DXT1() as ByteArray, 0); var texture2:Texture = context3D.createTexture(256, 256, Context3DTextureFormat.COMPRESSED_ALPHA, false); texture2.uploadCompressedTextureFromByteArray(new MyATF_DXT5() as ByteArray, 0);
Authoring für Flash Player 11.4
Um den neuen Flash Player zu verwenden, müssen Sie SWF-Version 17 als Ziel angeben, indem Sie ein zusätzliches Compiler-Argument an den Flex Compiler übergeben: - swf-version=17. Anweisungen finden Sie nachstehend. Wenn Sie das Adobe Flex SDK verwenden:
- Laden Sie die neue Datei „playerglobal.swc“ für Flash Player 11.4 herunter.
- Laden Sie das Flex 4.5.1 SDK (4.5.1.21328) aus der Flex 4.5 SDK-Tabelle herunter.
- Installieren Sie den Build in Ihrer Entwicklungsumgebung.
- Erstellen Sie in Flash Builder ein neues ActionScript-Projekt: Datei -> Neu -> ActionScript-Projekt.
- Öffnen Sie das Bedienfeld „Eigenschaften“ des Projekts (klicken Sie mit der rechten Maustaste und wählen Sie „Eigenschaften“). Wählen Sie in der Liste auf der linken Seite „ActionScript-Compiler“ aus.
- Verwenden Sie die Option „Flex SDKs konfigurieren“ oben rechts, um auf Flex Build 21328 zu zeigen. Klicken Sie auf „OK“.
- Konfigurieren Sie Ihr Projekt mit SWF Version 17 als Ziel.
- Öffnen Sie das Bedienfeld „Eigenschaften“ des Projekts (klicken Sie mit der rechten Maustaste und wählen Sie „Eigenschaften“). Wählen Sie in der Liste auf der linken Seite „ActionScript-Compiler“ aus.
- Fügen Sie der Eingabe „Zusätzlichen Compiler-Argumente“ Folgendes hinzu: - swf-version=17. Dadurch verwendet die ausgegebene SWF-Datei SWF Version 17 als Ziel. Wenn Sie auf der Befehlszeile und nicht in Flash Builder kompilieren, müssen Sie dasselbe Compiler-Argument hinzufügen.
- Stellen Sie sicher, dass in Ihrem Browser der neue Flash Player Build 11.4 installiert ist.
Authoring für AIR 3.4 Update auf den AIR 3.4-Namespace
Sie müssen Ihre Anwendungsdeskriptordatei auf den 3.4-Namespace aktualisieren, um auf die neuen APIs und Verhaltensweisen von AIR 3.4 Zugriff zu haben. Wenn Ihre Anwendung die neuen APIs und Verhaltensweisen von AIR 3.4 nicht benötigt, brauchen Sie den Namespace nicht zu aktualisieren. Wir empfehlen jedoch allen Benutzern, mit der Verwendung des AIR 3.4-Namespace zu beginnen, selbst wenn die neuen Funktionen von Version 3.4 noch nicht benötigt werden. Um den Namespace zu aktualisieren, ändern Sie das xmlns-Attribut im Anwendungsdeskriptor zu: <application xmlns="http://ns.adobe.com/air/application/3.4">
Sie haben einen Programmfehler gefunden? Senden Sie Berichte über Fehler bitte an die Flash Player- und Adobe AIR- Bug-Datenbank.
Flash Player und AIR können Ihre Grafikhardware nutzen, um H.264-Video zu dekodieren und abzuspielen. Es kann Grafikprobleme geben, die nur mit der jeweiligen Kombination aus Grafikhardware und Grafiktreiber reproduziert werden können. Wenn Sie einen grafikbezogenen Fehler melden, ist es unerlässlich, dass Sie uns Ihre Grafikhardware und den Grafiktreiber sowie das verwendete Betriebssystem und den Browser (falls Sie Flash Player verwenden) mitteilen, damit wir das Problem reproduzieren und untersuchen können. Denken Sie bitte daran, diese Informationen anzugeben wie auf der folgenden Webseite beschrieben: Anweisungen für das Melden von Videowiedergabe-Problemen. Hinweis: Aufgrund der vielen E-Mails, die wir erhalten, können wir nicht jede Anfrage beantworten.
Vielen Dank, dass Sie den Adobe® Flash Player® und AIR® verwenden und sich die Zeit nehmen, uns Ihre Meinung und Anregungen mitzuteilen!
Die neuesten Systemanforderungen für Flash Player und AIR finden Sie hier
