Наконец-то я смог получить дополнительную информацию об Android, но не об iOS.
1) В проекте PCL я добавил интерфейс:
public interface ILinkedIn
{
Task<Model.LinkedInProfile> GetLinkedInProfile();
}
2) В проект Android я добавил следующую реализацию сервиса Dependency
public async Task<Model.LinkedInProfile> GetLinkedInProfile()
{
var profile = new Model.LinkedInProfile();
int numTries = 500;
var service = new LinkedIn(MainActivity.Instance, "blablabla", "blablabla");
new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
try
{
service.Login();
profile.Description = service.Description;
profile.ImageUrl = service.PictureURL;
var req = new AdvancedRequestSpecification("/people/~:(positions,public-profile-url)?format=json");
var res = service.AdvancedRequest(req);
profile.Exta = Newtonsoft.Json.JsonConvert.DeserializeObject<Model.ExtraProfile>(res.BodyAsString);
service.Logout();
}
catch
{
numTries = 0;
}
})).Start();
while (numTries-- > 0 && profile.Exta == null)
await Task.Delay(250);
return profile;
}
3) В проекте iOS я добавил аналогичную реализацию сервиса Dependency
public async Task<Model.LinkedInProfile> GetLinkedInProfile()
{
var profile = new Model.LinkedInProfile();
int numTries = 500;
CRLinkedIn service = new CRLinkedIn("blablabla", "blablabla");
new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
try
{
service.Login();
profile.Description = service.GetProfileDescription();
profile.ImageUrl = service.GetPictureURL();
CRAdvancedRequestSpecification req = new CRAdvancedRequestSpecification("/people/~:(positions,public-profile-url)?format=json");
/* Edited to Add the next 3 lines as the cloudrail suggested fix for iOS */
req.Method = @"GET";
req.Headers = new Foundation.NSMutableDictionary();
req.SetBodyAsString("");
/* Finished Editing */
var res = service.AdvancedRequestWithSpecification(req);
profile.Exta = Newtonsoft.Json.JsonConvert.DeserializeObject<Model.ExtraProfile>(res.BodyAsString);
service.Logout();
}
catch
{
numTries = 0;
}
})).Start();
while (numTries-- > 0 && profile.Exta == null)
await Task.Delay(250);
return profile;
}
4) На Android он отлично работает, но на iOS выдает исключение:
Примечание: см. Исправление облачного рельса выше
var res = service.AdvancedRequestWithSpecification(req);
Высказывание:
Возникло исключение Objective C Имя: CRUnknownException Причина: ServiceCode Ошибка в функции AdvancedRequestSupporter: advancedRequest в 10, [*** - [NSMutableDictionary setObject: forKey:]: метод, отправленный в неинициализированный изменяемый объект словаря]
Собственная трассировка стека:
- 0 CoreFoundation 0x000000018532ada4
- 252 1 libobjc.A.dylib 0x00000001844e45ec objc_exception_throw + 56 2 CoreFoundation
0x000000018532a9f0 + 0 3 CloudrailSI
0x0000000108a5a778 - [CRLinkedIn checkForError:] + 316 4
CloudrailSI 0x0000000108a5a2bc - [CRLinkedIn
advancedRequestWithSpecification:] + 620 5 LocalJobMarket.iOS
0x00000001047e56d4
wrapper_managed_to_native_ApiDefinition_Messaging_IntPtr_objc_msgSend_IntPtr_intptr_intptr_intptr
- 228 6 LocalJobMarket.iOS 0x0000000104773a68 CloudRailSI_CRLinkedIn_AdvancedRequestWithSpecification_CloudRailSI_CRAdvancedRequestSpecification
- 344 7 LocalJobMarket.iOS 0x0000000102f51630 LocalJobMarket_iOS_LinkedIn_iOS__c__DisplayClass0_0__GetLinkedInProfileb__0
- 320 8 LocalJobMarket.iOS 0x00000001030d09cc System_Threading_ThreadHelper_ThreadStart_Context_object + 188 9
LocalJobMarket.iOS 0x00000001030ce744
System_Threading_ExecutionContext_RunInternal_System_Threading_ExecutionContext_System_Threading_ContextCallback_object_bool
- 404 10 LocalJobMarket.iOS 0x00000001030ce59c System_Threading_ExecutionContext_Run_System_Threading_ExecutionContext_System_Threading_ContextCallback_object_bool
- 44 11 LocalJobMarket.iOS 0x00000001030ce51c System_Threading_ExecutionContext_Run_System_Threading_ExecutionContext_System_Threading_ContextCallback_object
- 76 12 LocalJobMarket.iOS 0x00000001030d0b34 System_Threading_ThreadHelper_ThreadStart + 52 13
LocalJobMarket.iOS 0x0000000103226ae8
wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr
- 248 14 LocalJobMarket.iOS 0x00000001050a967c mono_jit_runtime_invoke + 904 15 LocalJobMarket.iOS
0x0000000105126b34 mono_runtime_invoke_checked + 148 16
LocalJobMarket.iOS 0x000000010515e258 start_wrapper
- 676 17 libsystem_pthread.dylib 0x0000000184f51220 + 272 18 libsystem_pthread.dylib
0x0000000184f51110 + 0 19 libsystem_pthread.dylib
0x0000000184f4fb10 thread_start + 4
Любая помощь будет полезна для решения проблемы с iOS.
Спасибо, поддержка cloudrail