标签: appcelerator-titanium

您正在使用X509TrustManager的不安全实现

我在Google Play上有一个应用程序,今天我收到了Google的一封邮件说:

Google Play警告:您正在使用X509TrustManager的不安全实施

它说明了SSL证书问题以及解决问题的方法.

因为好奇,我问这个问题,

  1. 实际上这个警告到底是什么?
  2. 我没有在我的应用程序中使用任何与网络相关的活动(这是一个本地数据库驱动的应用程序),为什么我的应用程序出现了这个警告?

更多细节:

我的应用程序是使用Appcelerator Titanium构建的,google说这个实现是在ti.modules.titanium.network.NonValidatingTrustManager;.我确信我的代码中从未使用过这样的类.

android appcelerator android-security appcelerator-titanium trustmanager

12
推荐指数
2
解决办法
5280
查看次数

在AppseleratorStudio上构建iOS的问题[错误]:无效的"--device-id"值""

AppseleratorStudio(Titanium),内容:4.6.0.201605201934
MacBook Pro
iPad mini,OS 8.1.

看到类似的问题,但没有给出很多答案,大多数问题都与Android有关.如有必要,愿意提供更多信息.

2016-08-22T08:48:24.385Z | DEBUG  | getTiDefaultPath /Users/at/Library/Application Support/Titanium
    2016-08-22T08:48:24.386Z | DEBUG  | active sdk install path /Users/at/Library/Application Support/Titanium
    2016-08-22T08:48:26.476Z | DEBUG  | to download {"modules":[{"oses":["linux","win32","osx"],"platforms":["iphone","android"],"required":true,"partner_id":"A0B129A418829127EC551EB8ADB0D1CC","partner_name":"Appcelerator","name":"Hyperloop","description":"Gain complete access to native APIs in your Titanium mobile applications.","id":"hyperloop","guid":"99a136cd-4e51-40da-bcdb-d514f5895fb5","version":"1.2.6","url":"http://appcelerator-modules.s3.amazonaws.com/hyperloop-1.2.6.zip","min_mobilesdk_version":"5.4.0"}],"components":[]}
    [ERROR] :  Invalid "--device-id" value ""
    Available iOS Devices:
      814afcb29c793aea10b182b53f3f629b73ed1a39  iPad mini
      itunes                                    iTunes Sync
    For help, run: titanium.js help build
Run Code Online (Sandbox Code Playgroud)


Upd1.在构建命令中添加了设备ID,结果如下:

[INFO]  Invoking xcodebuild
[ERROR]  BUILD FAILED 
[ERROR] The following build commands failed:
[ERROR]         CodeSign build/Products/Debug-iphoneos/Anna-inzicht.app
[ERROR] …
Run Code Online (Sandbox Code Playgroud)

ios appcelerator-titanium

12
推荐指数
2
解决办法
3740
查看次数

在iTunes Store构建后发布iOS10/Xcode 8.0"缺少推送通知权限"错误

在为iTunes商店构建并提交存档的同时,我从apple收到此错误:

亲爱的开发者,

我们发现您最近交付的"XXXXXXXXX"存在一个或多个问题.您的投放成功,但您可能希望在下次投放时更正以下问题:

缺少推送通知权利 - 您的应用程序包含Apple推送通知服务的API,但应用程序签名中缺少aps-environment权利.要解决此问题,请确保在Provisioning Portal中为推送通知启用了App ID.然后,使用包含aps-environment权利的分发配置文件为您的应用签名.这将创建正确的签名,您可以重新提交您的应用程序.有关详细信息,请参阅"本地和推送通知编程指南"中的"供应和开发".如果您的应用不使用Apple推送通知服务,则无需执行任何操作.您可以从将来的提交中删除API以停止此警告.如果您使用第三方框架,则可能需要与开发人员联系以获取有关删除API的信息.

纠正问题后,您可以使用Xcode或Application Loader将新二进制文件上传到iTunes Connect.

问候,

App Store团队

我们尝试按照论坛中的建议重新创建配置文件,但我们仍然会收到相同的电子邮件.

在"功能"选项卡下打开内置的.xcodeproj时,推送通知设置似乎已关闭.

titanium appcelerator appcelerator-titanium

11
推荐指数
1
解决办法
6982
查看次数

JS如何检查空字符串和空格

帮帮我吧

if(value == ""){
// do anything
}
Run Code Online (Sandbox Code Playgroud)

但我需要检查空格""(2,3,......空间是否包含)是否与空字符串相同

PS.对不起,我的英文

javascript appcelerator-titanium

8
推荐指数
1
解决办法
3817
查看次数

Appcelerator:BOMStream BOMStreamWithFileAndSys(int,off_t,size_t,int,char*,BomSys*)

这是最近更新的Appcelerator出现在我的控制台中的WARN

[WARN] : 2016-04-05 14:51:01.391 App Name[5489:210793] BOMStream BOMStreamWithFileAndSys(int, off_t, size_t, int, char *, BomSys *): read: Is a directory
Run Code Online (Sandbox Code Playgroud)

我没有找到任何与此WARN相关的信息.现在似乎没有引起任何问题,但我不知道是什么原因引起的.


UPDATE

我找到了导致此警告的原因

代码示例

var win = Ti.UI.createWindow({
    backgroundColor : "white"
});


var view = Ti.UI.createView({
    width : 100,
    height : 100,
    backgroundImage : ""
});

var a = true;
setInterval(function(e){
    a = !a;
    view.backgroundImage = a ? "DefaultIcon.png" : "";
    Ti.API.info("*"+view.backgroundImage+"*");
},500);

win.add(view);
win.open();
Run Code Online (Sandbox Code Playgroud)

设置时backgroundImage = "";.我添加了Ti.API.info因为没有它,WARN没有出现

ios appcelerator-titanium

7
推荐指数
1
解决办法
3518
查看次数

使用ScrollableView在iOS上无法使用滑动后退手势

我正在使用带有SDK 5.4.0GA的Appcelerator Studio 4.7.

我想使用滑动后退手势返回到上一个视图控制器,但是ScrollableView即使我在屏幕的左边缘开始我的手势,我的触摸也会移动视图.如果没有结束,滑动后退手势可以正常工作ScrollableView.

当我使用Titanium Studio 3.4时,一切都很好.目前无法使用它,因为它不受支持,您甚至无法登录.

这个问题是因为Appcelerator Studio,而不是因为SDK版本.我尝试使用具有相同SDK版本的Titanium Studio和Appcelerator Studio,并且只有Appcelerator Studio出现此问题.这就是我一年前坚持使用Titanium Studio的原因,但现在却不可能.

以下是没有解决方案的相关主题:https://archive.appcelerator.com/topic/581/swipe-right-from-the-edge-to-go-back-to-the-previous-window-doesn-t-工作了合IOS-使用-SDK-3-5-1-GA-和-4-0-0-GA/4

编辑.如何在2分钟内重现它:

1)文件 - >新建 - >移动应用项目 - >默认合金项目

2)添加名为scrollable的新控制器

scrollable.xml:

<Alloy>
    <Window class="container">
        <ScrollableView>
            <ScrollView>
                <View height="5000" backgroundColor="#DBD6D6">
                    <Label top="20">View1</Label>
                </View>
            </ScrollView>
            <ScrollView>
                <View height="5000" backgroundColor="#FED2FB">
                    <Label top="20">View2</Label>
                </View>
            </ScrollView>
            <ScrollView>
                <View height="5000" backgroundColor="#DCEFD7">
                    <Label top="20">View3</Label>
                </View>
            </ScrollView>
        </ScrollableView>
    </Window>
</Alloy>
Run Code Online (Sandbox Code Playgroud)

index.js:

function doClick(e) {
    var scrollableController = Alloy.createController('scrollable',{
    });

    var view = scrollableController.getView();
    $.index.openWindow(view);
}

$.index.open();
Run Code Online (Sandbox Code Playgroud)

INDEX.XML: …

titanium appcelerator ios appcelerator-titanium appcelerator-alloy

7
推荐指数
1
解决办法
417
查看次数

如何在Cordova插件中设置事件侦听器

我想问一下如何在Cordova插件中设置自己的事件监听器.

我有这个Share dialog用于我的Android,我想让我的Javascript设置一个监听器onShareDialogDismissonShareDialogLaunched

在Javascript中可能会发生的事情看起来像这样.

// Set a listener for dialog dismiss
document.addEventListener('onShareDialogDismiss', listenerCallback, false);

// Set a listener for dialog launch
document.addEventListener('onShareDialogLaunch', launchCallback, false);
Run Code Online (Sandbox Code Playgroud)

我有来自Titanium的这段代码,但它正在使用TiViewProxy类,可能会知道你如何fireEvent()在纯Android实现中做一个替代方案

谢谢!

titanium cordova appcelerator-titanium

6
推荐指数
1
解决办法
2204
查看次数

Appcelerator Titanium和React native之间的主要区别

这两个框架都是(混合)移动应用程序框架,它们尝试使用iOS和Android等不同平台提供的JavaScript API访问本机UI组件.他们不使用任何HTML和CSS进行UI设计,例如Ionic do,它们不是包装框架,而是实际上是一种交叉编译框架.这就是我发现的.但我没有得到这两个框架之间的实际差异.为什么我更喜欢其中之一?他们做的工作完全相同吗?

最好的问候,汤姆

react-native appcelerator-titanium

6
推荐指数
1
解决办法
3124
查看次数

Appcelerator Hyperloop与普通Titanium模块

我开始玩Appcelerator Hyperloop了.虽然从第0天开始从JS访问本机API似乎很棒,但它确实引发了一些关于平台架构和性能的问题.

目前(AFAIK)Titanium应用程序具有主UI线程(运行本机UI控制器)和JS线程(运行JS逻辑).从JS到Native的每次调用都通过"Bridge"(这是应用程序中的扩展操作)传递.

此外,Titanium API并未尽可能多地涵盖所有本机API和摘要.但是,如果引入新API,Appcelerator可能需要一段时间才能将这些API实施到平台中.

我最喜欢Titanium的一个方面就是能够扩展它(使用iOS的Objective-c和Android的java) - 允许使用Titanium未涵盖的原生API,并在需要时开发真正的本机性能控件为JS做任何太"沉重"的事情.并且,如上所述,它为每个平台开发了100%原生.

既然Appcelerator引入了Hyperloop我已经完成了一个简单的测试应用程序,并发现Hyperloop没有被翻译成本机代码而只是普通的JS代码:

var UILabel = require('hyperloop/uikit/uilabel');
var label = new UILabel();
label.text = "HELLO WORLD!";
$.index.add(label); 
Run Code Online (Sandbox Code Playgroud)

另一件事是你必须在主线程上运行.

因此,就Hyperloop架构而言,我们基本上会想到一些事情:

  1. 我们还有一座桥吗?如果Hyperloop是JS,称为"特殊"Hyperloop需要,那么我们仍然有一个桥梁,现在不仅是一个桥梁,而且还需要做某种反射(这也是一个扩展的操作)?
  2. 到目前为止,JS运行它自己的线程 - 所以现在在单个主线程中运行似乎是更多UI阻塞操作的潜在来源.
  3. 老式模块是真正原生的(不包括桥接调用) - 那么启用Hyperloop的应用程序与那些相比如何呢?

没有太多关于Hyperloop的文档或文章解释了内部工作 - 所以如果有人有任何答案一直在尝试使用它可能会非常有帮助.

titanium appcelerator appcelerator-titanium appcelerator-hyperloop hyperloop

6
推荐指数
1
解决办法
1481
查看次数

Hyperloop和Google移动广告SDK

我试图在我的appcelerator项目中使用Google-Mobile-Ads-SDK,因为ti.admob(https://github.com/appcelerator-modules/ti.admob)似乎不支持奖励广告.所以我在顶部项目目录中创建了一个Podfile:

install! 'cocoapods',
         :integrate_targets => false

platform :ios, '7.0'

target 'my app' do
  use_frameworks!
  pod 'Google-Mobile-Ads-SDK', '7.15'
end
Run Code Online (Sandbox Code Playgroud)

(我无法使用最新版本的pod,Xcode保留了一些类型声明问题 - 这个编译好了.)

然后我使用了这个库,如下所示:

var GADRequest = require('GoogleMobileAds/GADRequest');
var GADRewardBasedVideoAd = require('GoogleMobileAds/GADRewardBasedVideoAd');
var instance = GADRewardBasedVideoAd.sharedInstance();
if (!instance.isReady()) {
  var request = new GADRequest();
  instance.loadRequest(request, Alloy.CFG.rewardedadid);
}
Run Code Online (Sandbox Code Playgroud)

并且代码失败并出现错误:

TypeError: undefined is not a function
(evaluating 'instance.loadRequest(request, Alloy.CFG.rewardedadid)')
Run Code Online (Sandbox Code Playgroud)

查看相应的生成的.js文件./build/hyperloop/ios/js/googlemobileads/gadrewardbasedvideoad.js,我注意到GADRewardBasedVideoAd.h除了for之外的所有内容都会生成实例方法和属性的函数签名loadRequest().标题条目loadRequest()是:

- (void)loadRequest:(GADRequest *)request withAdUnitID:(NSString *)adUnitID;
Run Code Online (Sandbox Code Playgroud)

与此唯一明显的区别是它使用了一个命名参数.这种方法有什么特别之处吗?我做错了什么或者Hyperloop还没有支持这样的功能吗?

titanium appcelerator appcelerator-titanium appcelerator-hyperloop hyperloop

6
推荐指数
1
解决办法
193
查看次数