[ANE for IOS]iOS自定义URL方案解析

在ios中程序间互相调用可以通过url来解决。在oc里面直接在函数handleOpenURL 便可,但是在ane中就没那么简单了。下面详细介绍下air项目中url的设置和使用,使用支付宝快捷支付ane作为例子。网上有稀稀疏疏的几篇文章偶尔提及,但是并没有完全给出一个DEMO来.

在此之前请详细阅读官方文档:传送门

关于打开URL的ANE例子:传送门

IOS里OC的处理方式:传送门

在AIR中配置URL供其他程序调用


1.首先需要在-app.xml中加入如下配置:([IPHONE]标签中)

[code lang=”java”]
<iPhone>
<InfoAdditions><![CDATA[
<key>UIDeviceFamily</key>
<array>
<string>1</string>
<string>2</string>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>AlipayANE</string>
</array>
<key>CFBundleURLName</key>
<string>com.rect.app</string>
</dict>
</array>
]]></InfoAdditions>
<requestedDisplayResolution>high</requestedDisplayResolution>
</iPhone>
[/code]

在这类配置了一个Name为”com.rect.app”的Schemes.调用方式为”AlipayANE://”;

继续阅读“[ANE for IOS]iOS自定义URL方案解析”

[AIR for Android]彻底解决UC悬浮与AIR项目的兼容性

关于UC的ANE我已经改动很多次了。为了适应Starling的GPU渲染项目(-app.xml中的direct),从登录界面的横竖屏到支付界面的消失 再到悬浮的BUG 一路过来总是那么苛刻。前几天发版本,UC审核人员又把悬浮的问题拿出来说,忍无可忍,没办法只好再次对UC ANE进行修改。这次改动后,悬浮BUG会彻底解决。首先把在接UC SDK过程中遇到的问题先复述一遍:

UC 与AIR项目兼容性BUG

  1. 支付界面竖屏 在横屏的starling项目的时候点击支付会闪退。解决方式是把全部UC界面换成横屏:传送门
  2. 上面这种方式被官方人员彻底否决 于是又有了一种解决方式:传送门
  3. 点击悬浮打开随便一个SDK界面  按下home之后游戏context会丢失,屏幕黑屏(再次按下home再次打开恢复)。解决方式:是 把在flash做悬浮 并固定,把悬浮的回调函数切换到调用个人账户中心 同样需要中转activity;
  4. 阉割版本的flash悬浮图标UC官方无法接受 必须把悬浮恢复原样。这个问题正是本文要讨论的。并解决【3】所描述的BUG;

把悬浮中插入自定义activity的实现

关于UC悬浮与Starling项目的兼容性BUG重现:

限定环境:AIR+Starling+横屏

  • 点击悬浮 随意点进去一个SDK界面 例如 【礼包】;
  • 按下【home】物理键;
  • 再打开AIR应用程序  发现黑屏 游戏界面已消失;
  • 再次按下【home】;
  • 再次打开AIR应用程序 游戏界面恢复;

继续阅读“[AIR for Android]彻底解决UC悬浮与AIR项目的兼容性”

[PlatformANEs]更新支付宝ANE(for IOS for android)

一直就有朋友问我手上有没支付宝的ANE,假期末几天有点空余,于是就update了….

支付宝本身提供了内支付的SDK,只是相比于其他的SDK支付更加简明而要

没有悬浮等一大堆干扰游戏的玩意儿,接支付宝SDK真是一个明智的选择.

PS:写的ANE for IOS 并不多,目前不太确定是否有问题.若要用还是需要根据自身情况而改动.

(可任意转载传播 但请注明出处)

2013-10-5

  • 更新支付宝无线支付ANE
  • for IOS   支持IOS端(ios 6以上 )
  • for android 支持android端(android 2.2以上)
  • 支付宝(Alipay)SDK下载地址:传送门
  • 项目:platformANE
  • Github地址:传送门

[AIR接入Android 平台]特别篇-合并jar和调用.so文件的特别补充

这篇文章是对前面系列文章的补充。传送门

也是我最近遇到的几个小问题。称不上有什么技术难点。但是很值得推敲。

A.合并Jar。对于混淆比较严重的jar源码包来说,例如银联的。

会出现类似一下的源码文件。这种文件若解压出来 在一些系统(例如WIN系)的会删掉掉一个。

因为在Win系的系统里面文件名不分大小写。遇到这种包的合并若不小心打包ANE后就会报ClassNoFound错误。
继续阅读“[AIR接入Android 平台]特别篇-合并jar和调用.so文件的特别补充”

[接入android平台] 彻底解决按[home]切掉SDK界面的问题

关于这个BUG的描述和之前的解决方式:传送门

概述

之前的解决方式是用apktool反编译 修改XML,但是这种方式繁琐并且容易出错,

由于手游很多很多的小渠道。经常要出几百 甚至上千个APK。不可能去反编译那么多个包的。

而且ADT对apk的签名是用.p12文件 反编译修改会改变签名。

我之前就是由于签名错误导致玩家无法更新新版本的应用。

这BUG会引发:

1.例如在支付界面的时候 按home跳出桌面 再返回 则支付界面消失(看支付宝验证短信需要跳出桌面)

2.如果是GPU加速模式的话  会丢3D加速环境

终极解决方式

1.之前传送门所说的 用apktool反编译 修改XML的launchMode  但是这种方式 太繁琐 不适合批量出包的项目,我隔壁的项目组就每天要出500个包的。一个一个去反编译修改  这要到那一天。

2.使用我修改过的adt.jar替换 FBSDK下的 例如我的是替换:

D:\FB\Adobe Flash Builder 4.6\sdks\AIR3.5\lib\adt.jar

至于ADT.jar的修改教程。  这个技术已经不在这篇文章所在的范畴了。

下载地址

[AIR接入Android 平台]处理res资源之找不到资源ID

一点声明:我的水平有限 这里仅仅只能写出我认为可行的方案 和 代码

打包ANE会经常遇到找不到资源R.XXX ID的问题,或者是找到的资源ID不对 然后报NULL POINT错 直接程序崩溃。

AIR与android原生取资源方式的区别
ADOBE给出的取资源的方式是:

[code lang=”java”]
_context.getResourceId("id.AlipayTitleItemName");
[/code]
但是原生JAVA取资源的方式是:
[code lang=”java”]
findViewById(R.id.AlipayTitleItemName);
[/code]

ADOBE的取资源方式 是我们在ANE中使用到资源的时候的取法,
但是一般运营商提供的SDK都是混淆的jar 取资源的方式都是清一色的findViewById。
而我们不可能去修改SDK 的jar。除非你的逆向能力到一定水平。其实修改SDK的jar也不是不可能的。对于android逆向有兴趣的同学 可以去试试。其实android逆向也是一门非常好玩的技术。如果你有兴趣 我们可以一起探讨。
继续阅读“[AIR接入Android 平台]处理res资源之找不到资源ID”

[AIR for Android] 让UC SDK 一辈子竖屏

UC SDK的问题之前已经说明:

前面的解决方式

今天把版本发给UC 的时候 那边看到我把所有SDK的界面都给横屏了 表示不能通过。

也就是说。必须竖屏!!!
没办法 不竖屏硬是不给发布。

那怎么办呢??追根溯源。这个问题就是由于AndroidSDK在横竖屏切换时,activity被销毁

但是设置

[code lang=”java”]android:configChanges="orientation|keyboardHidden|screenSize"[/code]

属性并不能解决问题 这可能是和GPU渲染的特性有关。

也就是说 对于 主游戏启用GPU的activity 不能横竖屏切换。知道这一点那就好办了。

那我们传一个自己新建的activity给SDK就可以解决问题了。

之前解决银联插件的问题的方式也是如此
继续阅读“[AIR for Android] 让UC SDK 一辈子竖屏”

[AIR for Android] 让UC SDK 一辈子横屏

这里做一个记录。

UC SDK“ BUG”描述

目前我的项目是 必须要求 横屏的。

但是UC的SDK 除了登录界面可以设置横屏之外。

个人中心的 账户 论坛 攻略 帮助 界面

支付界面 全部清一色的竖屏。

跟UC官方对接人沟通良久,得到的答复是:

爱莫能助” ,“我也跟产品提了几次”,“我们那么多产品都是竖屏的都没问题,所以肯定是你们开发商的问题

得,虽然我早就知道他们会这样说 但是还是抱有一丝希望他们能改进。毕竟除了UC之外 其他全部android SDK几乎都提供横屏 竖屏的方式。

之所以必须使用横屏 前面的文章也说了。应该是 Starling+AIR 项目初始横屏的原因。在切换横竖屏的时候会强制退出游戏  不是FC 不是内存爆掉 不是OOM

总之肯定是一个AIR的坑。
继续阅读“[AIR for Android] 让UC SDK 一辈子横屏”

[AIR for Android] 91ANE 横竖屏android设备闪退BUG的解决方式

这里做一个记录。

91ANE BUG描述

目前我的项目是 必须要求 横屏的。

在昨天有玩家 和 平台方的反馈  91的登录 在切换横竖屏幕部分设备(例如天语某机器 )上出现闪退的情况

而平台方只要他们测试的有一台机器有问题 他们就会把你的版本打回去 拖延你升级时间 推广时间 非常恶心。

所以这个BUG虽然只针对极少极少的机器但是 也必须马上解决。

我的解决方式

经过我的检查 91ANE共提供三种显示方式的选择:

SCREEN_ORIENTATION_PORTRAIT 竖屏(值为:0)

SCREEN_ORIENTATION_LANDSCAPE 横屏(值为:1)

SCREEN_ORIENTATION_AUTO 自动(由重力感应自动选择)(值为:2)
继续阅读“[AIR for Android] 91ANE 横竖屏android设备闪退BUG的解决方式”

[AIR接入Android 平台]处理res资源之文字国际化

一点声明:我的水平有限 这里仅仅只能写出我认为可行的方案 和 代码

文字国际化 其实是android编码的规范之一。但是不同的运营商提供的SDK 这块处理的都不一样。

就目前我接触过的平台来说。当乐 UC 91 360 算做得很好。

但是其他小平台  特别是有一个运营商 他们客户端技术才一个人。

都很不注重android文字国际化的问题。打包进ane的资源 布局文件XML必须是规范的国际化处理的。

否则就会在打包APK的时候报错。
继续阅读“[AIR接入Android 平台]处理res资源之文字国际化”