API逆引き

closed API,private Framework に関する情報も絶賛募集しています。(そうでないとこのwikiの意味がありません。)
適宜コメントを挿入していただけると助かります.


ネットワーク関連

HTMLの取得(NSURL、NSString)

#import <Foundation/Foundation.h>

main(int argv, char* argc[])
{
        NSString *src;
        NSURL * boardurl;
        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

        boardurl = [NSURL URLWithString:@"http://menu.2ch.net/bbstable.html"];
        src = [NSString stringWithContentsOfURL:boardurl encoding:NSShiftJISStringEncoding error:nil];

        NSLog(@"result: %@", src);

        [pool release];
}



文字処理関連

HTMLから1行ずつ取り出す(NSString、NSRange)

#import <Foundation/Foundation.h>

main(int argv, char* argc[])
{
        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
        NSString *src;
        NSURL * boardurl;
        NSString* parsedString;
        NSRange range, subrange;
        int length;

        boardurl = [NSURL URLWithString:@"http://menu.2ch.net/bbstable.html"];
        src = [NSString stringWithContentsOfURL:boardurl encoding:NSShiftJISStringEncoding error:nil];

        length = [src length];
        range = NSMakeRange(0, length);

        while (range.length > 0) {
                subrange = [src lineRangeForRange:
                NSMakeRange(range.location, 0)];
                parsedString = [src substringWithRange:subrange];

                NSLog(@"result: %@", parsedString );

                range.location = NSMaxRange(subrange);
                range.length -= subrange.length;
        }

        [pool release];
}



Notification関連

Darwinに送信されるNotificationをキャッチ。

  • 単体アプリ内でやりとりされるNotificationはこの方法ではキャッチできない。
  • この例のソースは設定画面での表示言語の変化をキャッチする。
  • キャッチしたいNotificationが複数の場合はCFNotificationCenterAddObserver()をその数だけ呼び出す。
  • ※Notification一覧は添付のcom_apple_notification_list.txt参照のこと。
  • 添付リストにはフレームワークから抽出したNotificationのみ記載。アプリがシステムに送るものは各自で抽出のこと。
    /*
     * gcc -w -o get_darwinnotify get_darwinnotify.m -I/opt/iphone20-headers/usr/lib/gcc/arm-apple-darwin9/4.0.1/include -I/opt/iphone20-headers/include -I/opt/iphone20-headers/usr/include -I/var/include -L/usr/lib -F/System/Library/Frameworks -F/System/Library/PrivateFrameworks -bind_at_load -lobjc -framework CoreFoundation -framework Foundation -framework UIKit -framework CoreTelephony -framework CFNetwork -framework AudioToolbox -lSystem -lm && ldid -S get_ctnotify
    */
    #import <Foundation/Foundation.h>
    #import <AudioToolbox/AudioServices.h>
    #include <stdio.h>
    #include <notify.h>
    #include <unistd.h>
    #include <stdarg.h>
    
    static void callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
    
    	if ([name isEqualToString: @"kCTSMSClass0StringReceivedNotification"]) {
    		NSLog(@"kita-!!\n");
    		AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    	}
    
    	return;
    }
    
    
    static void sigHandler(int sigraised)
    {
    	printf("\nInterrupted.\n");
    	_exit(0);
    }
    
    
    int main(int argc, char **argv)
    {
    	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
    	CFNotificationCenterAddObserver(
    		CFNotificationCenterGetDarwinNotifyCenter(),
    		NULL,
    		callback,
    		@"com.apple.language.changed",
    		NULL,
    		CFNotificationSuspensionBehaviorHold
    	);
    
    	signal(SIGINT, sigHandler);
    	CFRunLoopRun();
    
    	return 0;
    }
    


i.SBメールの受信時にバイブを鳴らす(CFNotification, CoreTelephony)

/*
 * gcc -w -o get_ctnotify get_ctnotify.m -I/opt/iphone20-headers/usr/lib/gcc/arm-apple-darwin9/4.0.1/include -I/opt/iphone20-headers/include -I/opt/iphone20-headers/usr/include -I/var/include -L/usr/lib -F/System/Library/Frameworks -F/System/Library/PrivateFrameworks -bind_at_load -lobjc -framework CoreFoundation -framework Foundation -framework UIKit -framework CoreTelephony -framework CFNetwork -framework AudioToolbox -lSystem -lm && ldid -S get_ctnotify
*/
#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioServices.h>
#include <stdio.h>
#include <notify.h>
#include <unistd.h>
#include <stdarg.h>

static void callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {

	if ([name isEqualToString: @"kCTSMSClass0StringReceivedNotification"]) {
		NSLog(@"kita-!!\n");
		AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
	}

	return;
}


static void sigHandler(int sigraised)
{
	printf("\nInterrupted.\n");
	_exit(0);
}


int main(int argc, char **argv)
{
	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

	CTTelephonyCenterAddObserver(
		CTTelephonyCenterGetDefault(), 
		NULL, 
		callback,
		NULL,
		NULL,
		CFNotificationSuspensionBehaviorHold
	);

	signal(SIGINT, sigHandler);
	CFRunLoopRun();

	return 0;
}

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年08月24日 16:42
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。