我想构建一个移动/平板电脑应用程序,其核心功能是用相机拍照,查看图片和接收通知.此外,我想针对iPhone,iPad和Android平台.
Titanium appcelerator因其跨平台的吸引力而引起了我的兴趣.但是我很担心因为我在SO和其他网站上阅读了不同的评论.让我担心的是:
对我来说,噩梦般的场景是投入钛金属时间,以便稍后发现它是一个主要的PITA并放弃它并且"本土化"
请分享您的想法和经验.
我是JavaScript编程的新手,我对继承有点噩梦.我正在为Appcelerator Titanium编写一些代码,我有一个名为Slide2D的基类,我希望继承它.
所以我在Slide2D的原型中放了一些函数.这些通常不会被覆盖,但会从Slide2D派生的类中调用.这些函数也将从程序的其他部分调用.还有各种用于在Titanium中管理动画的事件处理程序.
如果我在一些调用代码中制作了几个幻灯片(使用新的)
var s = new Slide2D('slide1', 'background1.png', etc......
var t = new Slide2D('slide2', 'background2.png', etc......
Run Code Online (Sandbox Code Playgroud)
我的所有原型方法都指向最后创建的Slide2D,无论我是使用s还是t.因此即使我使用的是s变量,也会始终显示'slide2'.
这让我很生气 - 任何帮助都会非常感激.
对不起代码的长度,但这里是:
function Slide2D(name, backgroundImage, transform, inAnimation, outAnimation)
{
Titanium.API.info('Slide2D - Constructor - ' + name);
var _self = this;
var _name = name;
var _backgroundImage = backgroundImage;
var _startingTransform = transform;
var _slideView = Titanium.UI.createView({
backgroundImage: _backgroundImage,
transform: transform
});
var _animateInAnimation = Titanium.UI.createAnimation();
_animateInAnimation.transform = Titanium.UI.create2DMatrix().translate(0,0);
_animateInAnimation.duration = 750;
var _animateOutAnimation = Titanium.UI.createAnimation();
_animateOutAnimation.transform = Titanium.UI.create2DMatrix().translate(-1024,0);
_animateOutAnimation.duration …Run Code Online (Sandbox Code Playgroud) javascript prototype class appcelerator prototypal-inheritance
我使用本教程iOS推送通知教程在iOS中实现云推送通知.我按照上面的文档做了一切.注册时不会发生错误.
在云控制台中,我可以看到1个iOS客户端客户端订阅了推送通知.一切似乎都很好,但我无法接收推送通知.(甚至我已经重新启动了我的iPhone)
我已经从云控制台发送了推送通知,但我无法在iPhone中收到推送通知.任何人都可以帮我解决这个问题吗?
提前致谢
感谢您花时间和兴趣阅读本文并希望帮助我.
我需要IOS的唯一用户标识符,我对唯一用户标识符的含义是Apple提供的唯一字符串,对于用户而非设备是唯一的,这意味着它将跨设备保持不变.我想到了Apple ID或类似的东西,但这是不可能的,因为Apple没有提供它(至少不是我所知道的),但我想要类似的东西.
它不能是UDID,因为(除了被弃用之外)它不是跨设备持久的.我希望这样做是为了验证用户,而无需用户登录或注册.有可能这样做,因为有些应用程序会这样做.我没有登录或使用其他设备进行任何操作,但它验证了我.我以为是苹果ID,但是不可能.
我检查了这个答案:iOS唯一用户标识符.它似乎可能是解决方案,但我不太明白它,因为我没有看到每个新用户如何独特(能够区分多个用户和同一个用户,但是不同的设备).
我非常感谢读这篇文章并试图提供帮助的人.谢谢
PD:我使用Titanium的Appcelerator,而不是Apple的IOS SDK或类似的东西.但这并不重要,我只想让这个过程能够与Titanium的Appcelerator一起完成
PS:注意:
谢谢你的回答,速度如此之快!我已经阅读了很多次,我只是不明白.你能帮我理解一下吗?
我理解的方式就是这个.
1.-创建一个UUID(随每个安装而改变)2. - 使用默认服务将其存储到钥匙串(据我所知,保存在钥匙串上的值是设备的本地值)(我认为我把它放在一起)应用程序的id-com.bla.bla-),以及默认帐户,我认为我将它留作"用户".
这将全部是本地的,因此每次安装都会执行此操作,每次安装都使用不同的UUID(每个用户都不需要).3.将UUID保存到NSUserDefaults.4.-将UUID保存到Cloud的公共数据存储中.(Cloud的数据存储中的UUID,Keychain和NSUserDefaults应该是相同的)
因此,如果运行5个安装,Cloud的公共数据存储应该是这样的
An Array of 5 values:
[
XXXX-EEEEE-FFFFF,
SFSDFFWE-WERW-SDFS,
XXXX-XXXXX-XXXXX,
ZZZZZ-ZZZZ-ZZZZX,
XZXZZX-ZXZXZXS-ADADS
]
Run Code Online (Sandbox Code Playgroud)
5.-每次运行应用程序时都会执行所有这些操作,首先检查公共云存储中是否存储了值.这是我困惑的地方,不同的设备将如何知道哪个UUID是你的?我的意思是,有5种不同的UUIDS可供选择.也许它不应该保存在公共数据存储上,而是保存在私有数据存储上,但为此你还需要识别每个用户.这是我感到困惑的地方.
如果没有设置UUID,请执行最后4个步骤.
所以,我在第五步感到困惑,大多数人都理解这个解决方案,没有任何解释,所以我必须对某些工作的方式无知,也许是云服务?我认为问题在于,我可能不了解iCloud是如何工作的,以及它如何存储它的价值.我只是不知道运行应用程序的X的第5个(随机数,可能是第2个或第2000个)设备,将知道UUID XXX ...是用户X的UUID,而不是用户的UUID Z.
再次感谢你回答这么快,我想也许我要等几天,而不是几分钟.请原谅我的无知,我在这件事上有点像菜鸟,但我想学习.几天来一直困在这个问题上
我似乎无法更新Titanium Appcelerator Alloy中的对象,
我基本上希望能够将一个表行添加到一个表中,该表位于我当前所处的不同控制器/视图中......希望下面将更好地描述这个:s
basket.xml
<Alloy>
<Window id="basketWindow" class="container">
<TableView id="basketTable" />
<Button id="addItemButton" onClick="addItem">Add Item</Button>
</Window>
</Alloy>
Run Code Online (Sandbox Code Playgroud)
basket.js
function addItem()
{
var itemList = Alloy.createController('item_list');
itemList.getView().open();
}
Run Code Online (Sandbox Code Playgroud)
item_list.xml
<Alloy>
<Window id="itemListWindow" class="container">
<TableView id="itemListTable">
<TableViewRow id="item1" className="item" onClick="addItemToBasket">
Test Item
</TableViewRow>
</TableView>
</Window>
</Alloy>
Run Code Online (Sandbox Code Playgroud)
item_list.js
function addItemToBasket()
{
var row = Ti.UI.createTableViewRow({title: 'Test Item'});
// Here i would ideally want to put something like $.basketTable.append(row);
// But nothing happens, im guessing it cant find $.basketTable as its in a …Run Code Online (Sandbox Code Playgroud) 我有一个SOAP API,它返回一个文件,该文件分为几个base64字符串编码的块
我无法将其保存到文件系统而不会破坏它
正确保存的方法是什么?
我试过很多方面
var f = Ti.FileSystem.getFile(Ti.FileSystem.tempDirectory, 'test.pdf');
Run Code Online (Sandbox Code Playgroud)
...
var blobStream = Ti.Stream.createStream({ source: fileString, mode: Ti.Stream.MODE_READ });
var newBuffer = Ti.createBuffer({ length: fileString.length });
f.write(fileString);
Run Code Online (Sandbox Code Playgroud)
要么
var data = Ti.Utils.base64decode(fileString);
var blobStream = Ti.Stream.createStream({ source: data, mode: Ti.Stream.MODE_READ });
var newBuffer = Ti.createBuffer({ length: data.length });
var bytes = blobStream.read(newBuffer);
f.write(fileString);
Run Code Online (Sandbox Code Playgroud)
要么
var data = Ti.Utils.base64decode(fileString);
var blobStream = Ti.Stream.createStream({ source: data, mode: Ti.Stream.MODE_READ });
var newBuffer = Ti.createBuffer({ length: data.length });
var …Run Code Online (Sandbox Code Playgroud) 这让我发疯,我花了大约10个小时现在删除并重新生成我的Appcelerator Titanium iPad应用程序的Apple密钥和配置文件.我在1年前全部工作和编译,然后我的Mac崩溃了,我不得不重新格式化并重新开始.
我无法理解这个错误:"代码签名错误:找不到与您的构建设置('Okland Construction 2014')中指定的配置文件匹配的代码签名标识(即证书和私钥对)."
在Apple开发人员中心,我创建了必要的分发配置文件,并将其安装在我的钥匙串中,但我总是收到此错误.
我只是不知道遗失或错误的是什么.
我已阅读此内容并按照说明操作,但无济于事:
我希望有人能在我失去理智之前提供帮助.10个小时,100次尝试,重启,删除,再生.
这是在此处发布的相同错误:https://community.appcelerator.com/topic/3021/installing-on-ubuntu-14-04
我安装了:
oracle-jdk6
nodejs and nodejs-legacy
运用
appcelerator x64
在Ubuntu 14.04上(附件中的规格)
还跑了:
sudo apt-get install libjpeg62 libwebkitgtk-1.0-0
echo 'export MOZILLA_FIVE_HOME=/usr/lib/mozilla' >> ~/.bashrc
并试过:
sudo apt-get install ia32-libs 但这不起作用,而是我使用了这个:
sudo -i
cd /etc/apt/sources.list.d
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
我在这里找到:如何在Ubuntu 14.04 LTS(Trusty Tahr)中安装ia32-libs
谢谢
我从远程服务器下载视频并将其保存在应用程序数据目录中.完成后,我将其URL传递给视频播放器(我窗口上的UI元素).然后我的应用程序崩溃了.
这只发生在Marshmallow(Android 6.0版)上.我已经在Lollypop(4-5设备)上进行了测试,但它在那里工作得很好.
我尝试了不同的解决方案,但仍无法解决此问题.它真的杀了我.如果您有任何想法,请帮忙.我会很感激.
这是我的日志(来自评论):
[错误]:TiVideoView8:java.io.IOException:setDataSource失败.[ERROR]:TiVideoView8:在android.media.MediaPlayer.setDataSource(MediaPlayer.java:1095)[出错]:TiVideoView8:在android.media.MediaPlayer.setDataSource(MediaPlayer.java:1041)[出错]:TiVideoView8:在机器人.media.MediaPlayer.setDataSource(MediaPlayer.java:987)[ERROR]:TiVideoView8:在android.media.MediaPlayer.setDataSource(MediaPlayer.java:968)
android appcelerator video-player android-6.0-marshmallow appcelerator-titanium
我想建立一个需要的CocoaPods吊舱(原生的iOS模块https://cocoapods.org/pods/NearbyMessages).
我使用Titanium命令行界面创建了一个新模块:
ti create --type=module --platforms=ios ...
Run Code Online (Sandbox Code Playgroud)
我跟着从的CocoaPods(指令https://guides.cocoapods.org/using/using-cocoapods.html)创建Podfile:
platform :ios, '9.0'
target 'MyModule' do
pod 'NearbyMessages'
end
Run Code Online (Sandbox Code Playgroud)
我将Podfile放入iOS模块目录的"iphone"目录中:
MyModule
- LICENCE
- README
- assets
- documentation
- example
- iphone
- Podfile
- ...
- timodule.xml
- titanium.xcconfig
Run Code Online (Sandbox Code Playgroud)
我使用以下命令安装了pod:
pod install
Run Code Online (Sandbox Code Playgroud)
我用新创建的*.xcworkspace文件打开了XCode,并将以下行添加到titanium.xcconfig文件的末尾:
#include "Pods/Target Support Files/Pods-MyModule/Pods-MyModule.debug.xcconfig"
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这会导致一些错误,例如:
我尝试了包含Pods配置文件的不同变体,但没有一个成功.
任何人都可以告诉我一个正确的XCode设置应该如何在本机iOS模块中使用NearbyMessages pod?
在此先感谢您的问候!
appcelerator ×10
titanium ×7
android ×2
ios ×2
iphone ×2
javascript ×2
buffer ×1
class ×1
cloud ×1
filestream ×1
identifier ×1
mobile ×1
prototype ×1
ubuntu ×1
unique ×1
uuid ×1
video-player ×1
xcode ×1