我在Google Play上有一个应用程序,今天我收到了Google的一封邮件说:
Google Play警告:您正在使用X509TrustManager的不安全实施
它说明了SSL证书问题以及解决问题的方法.
因为好奇,我问这个问题,
更多细节:
我的应用程序是使用Appcelerator Titanium构建的,google说这个实现是在ti.modules.titanium.network.NonValidatingTrustManager;.我确信我的代码中从未使用过这样的类.
android appcelerator android-security appcelerator-titanium trustmanager
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) 在为iTunes商店构建并提交存档的同时,我从apple收到此错误:
亲爱的开发者,
我们发现您最近交付的"XXXXXXXXX"存在一个或多个问题.您的投放成功,但您可能希望在下次投放时更正以下问题:
缺少推送通知权利 - 您的应用程序包含Apple推送通知服务的API,但应用程序签名中缺少aps-environment权利.要解决此问题,请确保在Provisioning Portal中为推送通知启用了App ID.然后,使用包含aps-environment权利的分发配置文件为您的应用签名.这将创建正确的签名,您可以重新提交您的应用程序.有关详细信息,请参阅"本地和推送通知编程指南"中的"供应和开发".如果您的应用不使用Apple推送通知服务,则无需执行任何操作.您可以从将来的提交中删除API以停止此警告.如果您使用第三方框架,则可能需要与开发人员联系以获取有关删除API的信息.
纠正问题后,您可以使用Xcode或Application Loader将新二进制文件上传到iTunes Connect.
问候,
App Store团队
我们尝试按照论坛中的建议重新创建配置文件,但我们仍然会收到相同的电子邮件.
在"功能"选项卡下打开内置的.xcodeproj时,推送通知设置似乎已关闭.
帮帮我吧
if(value == ""){
// do anything
}
Run Code Online (Sandbox Code Playgroud)
但我需要检查空格""(2,3,......空间是否包含)是否与空字符串相同
PS.对不起,我的英文
这是最近更新的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没有出现
我正在使用带有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
我想问一下如何在Cordova插件中设置自己的事件监听器.
我有这个Share dialog用于我的Android,我想让我的Javascript设置一个监听器onShareDialogDismiss或onShareDialogLaunched
在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实现中做一个替代方案
谢谢!
这两个框架都是(混合)移动应用程序框架,它们尝试使用iOS和Android等不同平台提供的JavaScript API访问本机UI组件.他们不使用任何HTML和CSS进行UI设计,例如Ionic do,它们不是包装框架,而是实际上是一种交叉编译框架.这就是我发现的.但我没有得到这两个框架之间的实际差异.为什么我更喜欢其中之一?他们做的工作完全相同吗?
最好的问候,汤姆
我开始玩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架构而言,我们基本上会想到一些事情:
没有太多关于Hyperloop的文档或文章解释了内部工作 - 所以如果有人有任何答案一直在尝试使用它可能会非常有帮助.
titanium appcelerator appcelerator-titanium appcelerator-hyperloop hyperloop
我试图在我的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
appcelerator ×5
titanium ×5
ios ×3
hyperloop ×2
android ×1
cordova ×1
javascript ×1
react-native ×1
trustmanager ×1