我一直在使用最新的Crashlytics(Fabric集成).但是最近我因为缺少依赖性而遇到了以下崩溃错误,尽管我没有改变Crashlytics配置.
任何的想法?
02-08 22:18:00.935 18887-18887/? E/Fabric? .
02-08 22:18:00.935 18887-18887/? E/Fabric? . | |
02-08 22:18:00.935 18887-18887/? E/Fabric? . | |
02-08 22:18:00.935 18887-18887/? E/Fabric? . | |
02-08 22:18:00.935 18887-18887/? E/Fabric? . \ | | /
02-08 22:18:00.935 18887-18887/? E/Fabric? . \ /
02-08 22:18:00.935 18887-18887/? E/Fabric? . \ /
02-08 22:18:00.935 18887-18887/? E/Fabric? . \/
02-08 22:18:00.935 18887-18887/? E/Fabric? .
02-08 22:18:00.935 18887-18887/? E/Fabric? This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an …Run Code Online (Sandbox Code Playgroud) 我在XCode 6中测试我的应用程序,并在iOS8中发现AVAudioSession的问题.
我打电话的时候
[[AVAudioSession sharedInstance] setActive:NO error:nil];
我收到以下错误消息:
AVAudioSession.mm:623: - [AVAudioSession setActive:withOptions:error:]:停用已运行I/O的音频会话.在停用音频会话之前,应停止或暂停所有I/O.
在AVAudioSession.h中,它说
请注意,如果会话在运行或暂停I/O(例如音频队列,播放器,录像机,转换器,远程I/O等)时设置为非活动状态,则此方法将在iOS 8上或之后链接的应用中引发异常. .
但我不知道如何检查是否有运行的I/O以及如何在需要重置音频会话时将其全部丢弃.
我已经在控制台日志中注意到这个错误了一段时间.虽然它不会影响我的应用程序的执行,但我发现它真的很烦人.因此,我开始追踪这个错误的来源.当我调用availableInputs时,结果证明了这一点
NSArray *inputs = [[AVAudioSession sharedInstance] availableInputs];
Run Code Online (Sandbox Code Playgroud)
它会给我日志消息:
ERROR: [0x3d61318c] AVAudioSessionPortImpl.mm:50: ValidateRequiredFields: Unknown selected data source for Port iPhone Microphone (type: MicrophoneBuiltIn)
Run Code Online (Sandbox Code Playgroud)
我试图打印输入..
Printing description of inputs:
<__NSArrayI 0x188c4610>(
<AVAudioSessionPortDescription: 0x188c4580, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = (null)>,
<AVAudioSessionPortDescription: 0x18835d90, type = BluetoothHFP; name = Valore-BTi22; UID = 00:23:01:10:38:77-tsco; selectedDataSource = (null)>
Run Code Online (Sandbox Code Playgroud)
所以selectedDataSource是(null).我不知道该怎么办才能使它不为空?iPhone麦克风是一个内置输入......我想它已经由Apple设定了?
我知道这听起来很懒散.但我真的不知道这种情况是如何发生的,我也无法在Google上找到有关它的更多信息.
背景:
它是IPC的应用程序:我有一个在不同进程中运行的服务.有时,服务被杀了......但它并没有真正"正式死亡",相反,我得到了一个ActivityManager名为" 虚假死亡 " 的术语.发生这种情况时,服务的行为就像一个僵尸.它还活着,但它并没有真正发挥作用.
04-12 10:03:37.935 728 830 I ActivityManager:强制完成活动ActivityRecord {11eee41f u0 com.android.staging/com.android.activities.MainActivity t8210} 04-12 10:03:37.937 728 830 I ActivityManager:强制停止service ServiceRecord {291a4c9b u0 com.android.staging/com.android.services.CallService} 04-12 10:03:37.969 728 2563 W ActivityManager:ProcessRecord的虚假死亡{27ecf545 11057:com.android.staging/u0a268},curProc对于11057:null
我可以想到的第一个来电通知解决方案是Apple的推送通知服务.但是,它不能保证..它可能会丢失的可能性相对较高..而在VoIP应用程序中,来电通知非常重要,以至于我不能经常错过它...
因此,我按照提示启用了后台模式以保持应用程序处于活动状态并收听任何来电邀请.通过权利,我应该在应用获得来电邀请时显示本地通知.当应用程序处于后台/非活动状态时,这非常有效.但是,当用户手动杀死应用程序时,没有代码会被执行,因此应用程序将不会在这种情况下获得任何来电邀请...而且由于这种特殊情况,我仍然需要依赖远程推送通知.
我想要实现的是......首先等待远程通知,如果它到达,则不再显示本地通知.如果丢失,则显示本地通知,以便始终通知用户.
问题是......我无法判断是否已收到远程通知.
我想知道处理VoIP应用的来电通知的最佳做法是什么?
我正在使用Facebook Graph API来获取用户的所有照片,graphPath: me/albums并在Timeline Photos专辑中找到一些奇怪的东西.
照片存在于Facebook上的时间轴相册中,但不会从API调用graphPath/{timeline_photos_album_id}/photos中返回,或者返回的照片数量较少.
问题是什么?
日志:
呼叫专辑graphPath: me/albums:
.....
{
"can_upload" = 0;
count = 3; !!!!!!!!!!!
"created_time" = "2013-06-18T10:43:27+0000";
description = cool;
from = {
id = 100006100533891;
name = "Mike Mike";
};
id = 1387760311437307;
link = "https://www.facebook.com/album.php?
fbid=1387760311437307&id=100006100533891&aid=1073741829";
name = "Timeline Photos";
privacy = everyone;
type = wall;
"updated_time" = "2013-06-18T10:47:53+0000”;
},
.....
Run Code Online (Sandbox Code Playgroud)
致电专辑照片graphPath/{timeline_photos_album_id}/photos:
{
data = (
);
}
Run Code Online (Sandbox Code Playgroud) 查看 gRPC Java doc - ManagedChannelBuilder,有两个选项可以管理连接。似乎 idleTimeout() 是默认/首选配置。但是当我尝试搜索比较时,大多数帖子都在谈论 keepAlive 选项。
我很好奇什么是常见做法以及这两种选择的优缺点是什么?
在进入空闲模式之前设置没有正在进行的 RPC 的持续时间。在空闲模式下,通道关闭所有连接、NameResolver 和 LoadBalancer。新的 RPC 将使通道退出空闲模式。通道以空闲模式启动。默认为 30 分钟。
这是一个建议选项。不要依赖与此选项相关的任何特定行为。
设置当连接上没有未完成的 RPC 时是否执行 keepalive。默认为假。
在启用此选项之前,客户端必须获得服务所有者的许可。未使用连接上的 Keepalive 很容易意外地消耗大量带宽和 CPU。通常应使用 idleTimeout() 代替此选项。
在我的应用程序中,如果iPhone连接到蓝牙耳机,则使用蓝牙播放声音.否则使用默认扬声器.
这是我的代码
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil];
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVoiceChat error:nil];
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用类别setCategory:AVAudioSessionCategoryPlayAndRecord时.路由到蓝牙设备停止工作..我不知道为什么.因为右边,蓝牙选项应该只适用于Record或PlayAndRecord类别......
/*仅对AVAudioSessionCategoryRecord和AVAudioSessionCategoryPlayAndRecord*/有效
另外:我是否可以只使用蓝牙输出(输入仍然使用手机默认的麦克风)?
UPDATE
我先调用setMode,然后调用setCategory来改变顺序.它首次运行应用程序(一个调用).当我尝试再次执行相同的操作时,currentRoute仍然给我输出=蓝牙但实际输出返回默认的手机前置扬声器.
我花了好几个小时试图修复应用程序崩溃,我认为值得一个问题:
例外情况:
java.lang.IllegalStateException: View android.widget.LinearLayout{41a97eb8 V.E..... ......ID 0,0-540,105 #7f0b020d app:id/toast_layout_root} has already been added to the window manager.
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:223)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.widget.Toast$TN.handleShow(Toast.java:402)
at android.widget.Toast$TN$1.run(Toast.java:310)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5136)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)
代码:
我有一个跟随本指南的自定义吐司
我定义了自定义toast as ToastMessageBar.java,构造函数如下所示:
public ToastMessageBar(Activity activity) {
LayoutInflater inflater = activity.getLayoutInflater;
mToastLayout = inflater.inflate(R.layout.toast_layout,
(ViewGroup) activity.findViewById(R.id.toast_layout_root));
mMessageView = (TextView) mToastLayout.findViewById(R.id.toast_message);
mSubtitleView = (TextView) mToastLayout.findViewById(R.id.toast_subtitle);
}
Run Code Online (Sandbox Code Playgroud)
我显示祝酒词的方式如下:
private void showMessage(MessageType type, String …Run Code Online (Sandbox Code Playgroud) 我在使用VoIP应用程序,拨打号码时,我使用:
status = pjsua_call_make_call(acc_id, &pj_uri, 0, NULL, &msg_data, call_id);
if (status != PJ_SUCCESS) {
pjsua_perror(THIS__FILE, "Error making call, going to restart handler", status);
[SipHandlerListener restart:YES];
} else {
// continue with actions
}
}
Run Code Online (Sandbox Code Playgroud)
很长一段时间,我的非成功状态的解码错误消息是"默认状态消息",直到刚才我追踪状态值它给了我450851.然后我搜索了错误代码,发现:
Unable to open sound device: Core audio error [status=450851]
Run Code Online (Sandbox Code Playgroud)
我看到很多人在其他地方发布此日志消息,但究竟是什么错误,任何人都有这个错误的修复程序?
请注意,我在其他情况下没有声音问题,例如接听来电铃声,接听电话等.
我是Django和IOS的新手.我被困在这个多部分数据传递中,需要你的建议!
目前,我正在开发图像上传功能.从客户端,我想将图像文件与附加信息(例如access_token)一起发送.在服务器端,我尝试通过request.raw_post_data获取json数据,并通过reuqest.FILES获取图像
事实证明,我只能获得JSON数据或Image,而不是两者.更糟糕的是,客户端只返回500错误而没有其他信息......
这是客户端代码
NSURL *url = [NSURL URLWithString:urlPath];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
// The parameter to send
NSDictionary * params = dictionaryToSent;
// the image need to upload
NSData *imageData = UIImageJPEGRepresentation(image, 1);
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"" parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData
appendPartWithFileData:imageData
name:@"image"
fileName:@"uniqueFileName"
mimeType:@"image/jpeg"];
}];
AFJSONRequestOperation* jsonOperation=[[AFJSONRequestOperation alloc]initWithRequest:request];
[jsonOperation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) {
NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[jsonOperation setCompletionBlockWithSuccess: ^(AFHTTPRequestOperation *operation, id JSON) { …Run Code Online (Sandbox Code Playgroud) 我按照README中的说明配置了Github Pull Request Builder
它似乎只通过cron工作 - 它每小时运行一次.但是,直接评论"请测试此请求"或推送到存储库不会触发构建.我在我的存储库中有一个'bot'jenkins-user作为管理员.我还在Webhooks&Services下启用了github-webhook和/ jenkins/ghprbhook
我想知道PR Builder如何对"请测试这个"评论做出反应..有没有办法可以监控它?
ios ×5
android ×3
iphone ×2
api ×1
bluetooth ×1
core-audio ×1
crashlytics ×1
django ×1
django-forms ×1
facebook ×1
file-upload ×1
github ×1
grpc ×1
grpc-java ×1
ios7 ×1
ios8 ×1
jenkins ×1
keep-alive ×1
objective-c ×1
pjsip ×1
post ×1
pull-request ×1
voip ×1
xcode6 ×1