Skype Mac API - использовать AppleScript или 5-летний API? - PullRequest
0 голосов
/ 06 июня 2010

У меня есть приложение x86_64, которое я хотел бы при желании читать сообщения о состоянии Skype. Тем не менее, 5-летний фреймворк Skype Mac является 32-битным, и если есть способ компилировать его в 64-битном приложении, я не нашел его.

Мой вопрос, в принципе, как мне поступить так? Мне действительно нужно только получить и установить строку USERSTATUS AWAY / ONLINE.

При использовании AppleScript каждый раз появляется диалоговое окно «Разрешить это Skype». Это крайне неэффективно и совершенно раздражает.

Рекомендации

Я подумываю о написании 32-битной оболочки CLI, но это кажется излишним.

Ответы [ 5 ]

2 голосов
/ 02 июля 2010

Я использовал Notification Watcher, чтобы узнать, что API Skype просто работает с NSDistributedNotifications.Повторение этих уведомлений работало как прелесть для 64-битного приложения.

0 голосов
/ 11 июня 2011

Это ответ в ответ на запрос из твиттера. Я использовал этот код после того, как задал этот вопрос. Мне не нужно было заглядывать в Skype API, поскольку он работает просто отлично, но я думаю, что он был обновлен с тех пор, как я в последний раз пытался его использовать. Так или иначе ...

Вот список NSDistributedNotifications, которые я использую при общении с Skype:

SKSkypeAPINotification

SKSkypeAttachResponse

SKSkypeBecameAvailable

SKAvailabilityUpdate

SKSkypeWillQuit

Как и любой другой вид NSDistributedNotification, вы просто регистрируете и обрабатываете результаты:

[[NSDistributedNotificationCenter defaultCenter]
     addObserver:self selector:@selector(setStatusAfterQuit:) 
     name:@"SKSkypeWillQuit"
     object:nil 
     suspensionBehavior:NSNotificationSuspensionBehaviorDeliverImmediately];

Это iVars, которые я продолжаю синхронизировать со Skype:

NSString *applicationName;
NSString *mostRecentStatus;
NSString *mostRecentStatusMessage;
NSString *mostRecentUsername;
int APIClientID;
BOOL isConnected;
BOOL needToSetMessage;

NSString *nextMessage;
NSString *nextStatus;

Вот пример подключения к скайпу:

-(void) skypeConnect{
    if (!isConnected){
        [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"SKSkypeAPIAvailabilityRequest"                                                                     
                                                                       object:nil
                                                                     userInfo:nil        
                                                           deliverImmediately:YES];



        [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"SKSkypeAPIAttachRequest"
                                                                    object:applicationName
                                                                  userInfo:nil
                                                        deliverImmediately:YES];
    }
}

Вот пример получения сообщения о статусе (после регистрации в Skype):

    -(void) processNotification:(NSNotification *) note{
        if ([[note name] isEqualToString:@"SKSkypeAttachResponse"]){

            if([[[note userInfo] objectForKey:@"SKYPE_API_ATTACH_RESPONSE"] intValue] == 0){
                NSLog(@"Failed to connect to Skype.");
                isConnected = NO;
            }else {
                NSLog(@"Connected to Skype.");

                APIClientID = [[[note userInfo] objectForKey:@"SKYPE_API_ATTACH_RESPONSE"] intValue];
                isConnected = YES;

                [self sendCommand:@"GET PROFILE MOOD_TEXT"];


                if (needToSetMessage){
                    [self sendCommand:[NSString stringWithFormat:@"SET USERSTATUS %@",nextStatus]]; 
                    [self sendCommand:[NSString stringWithFormat:@"SET PROFILE MOOD_TEXT %@",nextMessage]];
                    needToSetMessage = NO;
                    nextMessage = @"";
                    nextStatus = @"";
                }

            }

        }
    }
0 голосов
/ 07 апреля 2011

Я обнаружил, что если вы откроете "Skype.app", просмотрев содержимое пакета -> Frameworks, вы найдете 64-битный и 32-битный skype.framework

0 голосов
/ 02 июля 2010

Если я правильно помню, диалоговое окно разрешений не открывается после того, как вы разрешите разрешение.

У меня есть сценарии Skype для Apple. У меня есть графический интерфейс, чтобы щелкнуть их.Если они подходят.

tell application "Skype" to launch
delay 15
(* this part if the security API window comes up*)
tell application "System Events"
    tell application process "Skype"
        if exists (radio button "Allow this application to use Skype" of radio group 1 of window "Skype API Security") then
            click
            delay 0.5
            click button "OK" of window "Skype API Security"
        end if
    end tell
end tell
delay 5
0 голосов
/ 06 июня 2010
...