在我的iPhone应用程序中,我有一个我在Interface Builder中创建的UIButton.我可以在我的代码中成功启用和禁用它...
sendButton.enabled = YES;
Run Code Online (Sandbox Code Playgroud)
要么
sendButton.enabled = NO;
Run Code Online (Sandbox Code Playgroud)
但是,按钮的视觉外观总是一样的!它没有褪色或灰色.如果我尝试单击它,则会按预期启用或禁用它.我错过了什么吗?它不应该看起来褪色或灰色?
谢谢
问题:在我的Android应用程序的最新更新中,应用程序名称和徽标已更改.但是,当用户更新应用程序时,在重新启动手机之前,名称和图标不会更改.
问题:我有什么办法可以立即执行更改吗?或者我应该以某种方式通知用户需要重新启动?或者我可以以某种方式强制重启?还有其他想法吗?
我的问题:我正在通过Android和iOS上的XMPP进行文件传输到Spark客户端(Spark 2.6.3).我在android上成功完成了这个(由于很好的库),但还没有在iOS上取得成功.但是,在这两个设备上我都注意到传输因字节流而失败......
<error code="404" type="CANCEL"><item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" xml:lang="en">Could not establish socket with any provided host</text></error>
Run Code Online (Sandbox Code Playgroud)
在Android上,传输通过诉诸ibb完成...
<iq id="DK1IO-19" to="myUsername@beta.myCompany.co.uk/Spark 2.6.3" type="set"><open xmlns="http://jabber.org/protocol/ibb" block-size="4096" sid="jsi_4740809287923906297" stanza="iq"/></iq>
Run Code Online (Sandbox Code Playgroud)
此外,在Android上,当我从Spark发送文件到我的Android应用程序时,它似乎通过bytesreams正常工作.
因此在iOS上我必须自己编写ibb连接,但为什么字节流首先会失败呢?
完整日志(Android应用程序):
05-15 13:42:04.023: I/System.out(523): 01:42:04 PM RCV (1093423288): <iq id="DK1IO-9" to="myUsername@beta.myCompany.co.uk/123" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="result"><si xmlns="http://jabber.org/protocol/si"><feature xmlns="http://jabber.org/protocol/feature-neg"><x xmlns="jabber:x:data" type="submit"><field var="stream-method"><value>http://jabber.org/protocol/bytestreams</value><value>http://jabber.org/protocol/ibb</value></field></x></feature></si></iq>
05-15 13:42:04.040: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-10" to="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="get"><query xmlns="http://jabber.org/protocol/disco#info"></query></iq>
05-15 13:42:04.060: I/System.out(523): 01:42:04 PM RCV (1093423288): <iq id="DK1IO-10" to="myUsername@beta.myCompany.co.uk/123" type="result" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="client" name="Smack" type="pc"/><feature var="http://jabber.org/protocol/xhtml-im"/><feature …Run Code Online (Sandbox Code Playgroud) 我完全不确定为什么我的配件视图不起作用.我只是希望一些文本出现在UITableViewCell(以及左侧)的右侧,但只显示左侧的文本.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"];
if (cell==nil){
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SwitchCell"] autorelease];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 0, 60, 30)];
cell.textLabel.text = @"left text";
label.text = @"right text";
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.accessoryView = label;
[label release];
}
return cell;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢.
问题:无法通过XMPP和OpenFire Server接收发送到我的Android应用程序的文件.我可以成功发送文件.我使用的asmack jar是asmack-jse-buddycloud-2010.12.11.jar
代码:
connConfig = new ConnectionConfiguration("beta.myCompany.co.uk", 5222);
connConfig.setSASLAuthenticationEnabled(true);
try {
connect("username", "password");
} catch (Exception e) {
e.printStackTrace();
}
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection);
if(sdm == null)
sdm = new ServiceDiscoveryManager(connection);
fileTransferManager = new FileTransferManager(connection);
FileTransferNegotiator.setServiceEnabled(connection, true);
fileTransferManager.addFileTransferListener(new FileTransferListener() {
@Override
public void fileTransferRequest(FileTransferRequest request) {
IncomingFileTransfer transfer = request.accept();
try {
FileOutputStream fos = openFileOutput(request.getFileName(), Context.MODE_PRIVATE);
InputStream stream = transfer.recieveFile();//THIS FAILS!
fos.write(IOUtils.toByteArray(stream));
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
错误(如果文件是通过Spark发送的): …
我正在尝试使用XMPPFramework和OpenFire通过iOS上的XMPP进行文件传输.我的代码基础来自以下教程.我有一个成功的TurnSocket(XEP-0065:SOCKS5 Bytestreams)连接,但我无法工作如何使用它来发送数据.我有两个注意事项,我都坚持这两个:1.调用[socket writeData]和2.使用'XEP-0096:SI文件传输'.
可能的解决方案1 - 调用[socket writeData] 在我的App委托中,我有一个didSucceed方法.我可以像这样调用[socket writeData] ...
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
NSLog(@"TURN Connection succeeded!");
[socket writeData:myData withTimeout:60.0f tag:0];
[turnSockets removeObject:sender];
}
Run Code Online (Sandbox Code Playgroud)
6月14日更新:这是正确的吗?如果是这样,其他用户如何读取数据?我试过实施
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
Run Code Online (Sandbox Code Playgroud)
但它永远不会被召唤.我如何确保它被调用?
可能的解决方案2 - XEP-0096:SI文件传输 我是否需要使用XEP-0096:SI文件传输?如果是这样,我如何在我需要形成的XEP-0096 XML中使用我的成功连接?在XEP-0096文档意味着有一个"哈希"属性,但我不知道该从何而来.
例如
<iq type='set' id='offer1' to='receiver@jabber.org/resource'>
<si xmlns='http://jabber.org/protocol/si'
id='a0'
mime-type='text/plain'
profile='http://jabber.org/protocol/si/profile/file-transfer'>
<file xmlns='http://jabber.org/protocol/si/profile/file-transfer'
name='test.txt'
size='1022'
hash='552da749930852c69ae5d2141d3766b1'
date='1969-07-21T02:56:15Z'>
<desc>This is a test. If this were a real file...</desc>
</file>
<feature xmlns='http://jabber.org/protocol/feature-neg'>
<x xmlns='jabber:x:data' type='form'>
<field var='stream-method' type='list-single'> …Run Code Online (Sandbox Code Playgroud) 我用以下代码检测键盘何时显示.但是,当我使用pushViewController推送到另一个屏幕并在该屏幕中打开键盘时,将调用keyboardWillShow!这真的是对的吗?
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
// register for keyboard notifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
Run Code Online (Sandbox Code Playgroud) cocoa-touch uikeyboard pushviewcontroller nsnotificationcenter ios
问题:我正在尝试使用iOS XMPPFramework和OpenFire服务器进行TURN连接(XEP-0065).我希望能够发送和接收文件.但是,我收到503服务不可用的错误.
注意:我的代码基础来自以下教程:http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/
XML错误:
我通过TURNSocket.m进行了调试.它进入processRequestResponse并具有以下XML.(如果我没弄错的话,这是从OpenFire发送给我的,而不是反过来的?)......
<iq xmlns="jabber:client"
type="error"
id="03CC977E-2645-4E87-AE78-536D985CA2B5"
from="friendsUsername@beta.myCompany.co.uk"
to="myUsername@beta.myCompany.co.uk/12f10b69">
<query xmlns="http://jabber.org/protocol/bytestreams"
sid="03CC977E-2645-4E87-AE78-536D985CA2B5"
mode="tcp">
<streamhost jid="proxy.beta.myCompany.co.uk"
host="127.0.1.1"
port="7777"/>
</query>
<error code="503"
type="cancel">
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
Run Code Online (Sandbox Code Playgroud)
为什么会出错?
更新:XEP-0065说明如下.即使这个错误看起来与我的有点不同,它是否相关?如果是这样,问题是什么?
如果代理无法充当StreamHost,则代理必须向请求者返回错误,应该是请求者
<not-allowed/>.Run Code Online (Sandbox Code Playgroud)<iq from='requester@example.com/foo' id='uj2c15z9' to='streamer.example.com' type='error'> <error type='cancel'> <not-allowed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
更新:目前我正在研究在各种发送和检索的XML位中是否包含或排除JID资源是问题所在.或者,我在下面的xml中甚至没有'from'.文档意味着我需要这个.这是问题吗?我没有看到代码中的当前方式来制作'来自'...
<iq type="get"
to="beta.myCompany.co.uk"
id="215784CF-81A8-403E-89BF-455C926BEAE5">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>
Run Code Online (Sandbox Code Playgroud)
更新19/04/12上午11:00:为了回应Matt J的回复,我发布了更多的XML.我不确定Matt是否要求发送和检索内容的完整XML日志,但为了以防万一,现在就是这样.请注意,这些日志并非全部来自同一个运行(因为当我调试它以获取XML日志时,它会导致超时,所以我必须重新开始)
发送:
<iq type="get" to="beta.myCompany.co.uk"
id="082A1987-384F-43CD-9E7B-A2C0E31F2CA8">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>
Run Code Online (Sandbox Code Playgroud)
回应:
<iq xmlns="jabber:client"
type="result"
id="18EED477-B0E4-492D-89CF-CA692FCF13AD"
from="beta.myCompany.co.uk" …Run Code Online (Sandbox Code Playgroud) 我正在创建一个Java单元测试来测试我最近更改的一些代码.但是,我测试的方法实例化一个使用ResourceBundle的类...
ResourceBundle.getBundle("businessVariables").getString("product.name"));
Run Code Online (Sandbox Code Playgroud)
资源文件位于Web包中 Mycompany_web/src/main/webapp/WEB-INF/classes/businessVariables.properties
我的测试生活在我的xml包中 Mycompany_xml/src/test/java/uk/co/mycompany/xmlapi/RequestProcessorTestNew.java
在正常运行时,资源包可以访问,但不能在我的单元测试运行时访问.它抛出了这个错误......
Testcase: testCreateInitialStatusResponse(uk.co.mycompany.xmlapi.RequestProcessorTestNew): Caused an ERROR
null
java.lang.reflect.InvocationTargetException
at uk.co.mycompany.xmlapi.RequestProcessorTestNew.testCreateInitialStatusResponse(RequestProcessorTestNew.java:62)
Caused by: java.lang.ExceptionInInitializerError
at uk.co.mycompany.xmlapi.RequestProcessorImpl.createInitialStatusResponse(RequestProcessorImpl.java:812)
Caused by: java.util.MissingResourceException: Can't find bundle for base name businessVariables, locale en_US
Run Code Online (Sandbox Code Playgroud)
我该怎么办?我可以启用测试以某种方式查看资源包吗?我可以在某处以某种方式创建一个模拟资源文件,代码将能够看到吗?
问题:如何正确使用java.util.locale检查用户的语言环境?
简介:我使用遗留代码在Locale中使用预定义的静态来检查用户是否在例如法国......
if(Locale.FRANCE.equals(locale) || Locale.FRENCH.equals(locale)) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我想添加一些代码来检查用户是否在澳大利亚.但是,Locale只有一组有限的预定义静态,而AUSTRALIA不是其中之一.我似乎能够做到以下......
if(new Locale("AU").equals(locale)) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
但是,这与现有代码不一致.这样做的正确方法是什么?如果我给出的第一个例子是正确的,为什么预定义的静态列表如此有限?
cocoa-touch ×4
xmpp ×4
android ×3
ios ×3
openfire ×3
java ×2
proxy ×2
socks ×2
asmack ×1
asyncsocket ×1
easymock ×1
iphone ×1
junit ×1
locale ×1
uibutton ×1
uikeyboard ×1
uitableview ×1
unit-testing ×1