Программно отправлять iMessage с использованием частных структур - PullRequest
6 голосов
/ 19 января 2012

Кто-нибудь знает, можно ли напрямую отправить iMessage с помощью приватной платформы?

Я пытался использовать CTMessageCenter из CoreTelephony, но он будет отправлять SMS, даже если мой телефон может отправлять iMessages.

Ответы [ 2 ]

2 голосов
/ 14 июня 2012

Я не проверял это, но посмотрите код, размещенный здесь .Если вы посмотрите на httpResponseForMethod:URI:, вы увидите, куда он отправляет сообщение (похоже, это жесткий код для поддержки iOS 5 или iOS 4 ):

CKSMSService *smsService = [CKSMSService sharedSMSService];

//id ct = CTTelephonyCenterGetDefault();
CKConversationList *conversationList = nil;

NSString *value =[[UIDevice currentDevice] systemVersion];          
if([value hasPrefix:@"5"])
{
    //CKMadridService *madridService = [CKMadridService sharedMadridService];
    //NSString *foo = [madridService _temporaryFileURLforGUID:@"A5F70DCD-F145-4D02-B308-B7EA6C248BB2"];

    NSLog(@"Sending SMS");
    conversationList = [CKConversationList sharedConversationList];
    CKSMSEntity *ckEntity = [smsService copyEntityForAddressString:Phone];
    CKConversation *conversation = [conversationList conversationForRecipients:[NSArray arrayWithObject:ckEntity] create:TRUE service:smsService];
    NSString *groupID = [conversation groupID];           
    CKSMSMessage *ckMsg = [smsService _newSMSMessageWithText:msg forConversation:conversation];
    [smsService sendMessage:ckMsg];
    [ckMsg release];     
} else {
    //4.0
    id ct = CTTelephonyCenterGetDefault();
    void* address = CKSMSAddressCreateWithString(pid); 

    int group = [grp intValue];         

    if (group <= 0) {
        group = CKSMSRecordCreateGroupWithMembers([NSArray arrayWithObject:address]);       
    }

    void *msg_to_send = _CKSMSRecordCreateWithGroupAndAssociation(NULL, address, msg, group, 0);    
    CKSMSRecordSend(ct, msg_to_send);

}

Код использует обычныйSMS, но вы можете увидеть следующий закомментированный код:

//CKMadridService *madridService = [CKMadridService sharedMadridService];

Услуга "Мадрид", вероятно, то, что может отправлять iMessages. См. Частный заголовок здесь .

И частные API SMS, и iMessage находятся в ChatKit.framework .

0 голосов
/ 19 января 2012

Через iPhone без джейлбрейка нет абсолютно никакого доступа к iMessage CoreTelephony API

...