Openxface

VisitHome

第三方使用xFace Library指南


iOS 平台

xFace提供了xFaceLib.framework(static)以及相应的资源文件,以支持第三方使用xFace Static Library,如图所示:

【图 xFaceLib folder】


本文档以“ThirdParty“工程为例说明第三方如何使用xFace Static Library.


一. 调整ThirdParty工程

1. 添加Framesworks

待添加到ThirdParty工程中的Frameworks包括两类,其一为xFaceLib.framework,其二为xFaceLib.framework依赖的系统frameworks.

添加Framesworks后的ThirdParty工程如下图所示:

【图 ThirdParty Frameworks】

2. 添加xFaceResources

xFaceResources包括xFace启动时使用的launchImages,配置文件(platformConfig.plist),xface.js以及其他资源文件,参见下图:

【图 add xFace resources】

3. 添加www

www目录用于放置xFace web app的源码

【图 add www folder】

注意

添加xFaceResources与www后,请确认新增资源出现在 TARGETS->ThirdParty->Build Phases->Copy Bundle Resources中,参见下图:

【图 Copy Bundle Resources】

4. 修改工程配置

添加“-all_load -ObjC”到工程配置 TARGETS->ThirdParty->Build Settings->Other Linker Flags,参见下图:

【图 Other Linker Flags】

二. 调整ThirdParty源码

修改AppDelegate的源码,以启动xFace

1. AppDelegate.h

【图 AppDelegate.h】

2. AppDelegate.m

【图 AppDelegate.m】

其他说明

#### 1. XRuntime 要求XRuntime作为AppDelegate的property,以确保下述代码(引自xFaceLib.framework)可以正确执行

id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate;
 
XRuntime *runtime = [appDelegate performSelector:@selector(runtime)];

2. LaunchImage

通过ThirdParty-Info.plist可以指定ThirdParty与xFace是否使用相同的launchImage,具体说明如下:

ThirdParty与xFace使用相同的launchImage

请在ThirdParty-Info.plist中配置 UILaunchImageFile, 如下所示:

<key>UILaunchImageFile</key>
<string>third_party_splash</string>

配置此项后,xFace将使用与ThirdParty相同的launchImage(xface_logo-568h@2x.png等资源不必添加到ThirdParty工程中)

ThirdParty与xFace使用不同的launchImage

请删除ThirdParty-Info.plist中配置 UILaunchImageFile,即ThirdParty不能自定义launchImage的名称

简言之,如果ThirdParty-Info.plist中配置了UILaunchImageFile,则xFace使用与ThirdParty相同的launchImage;如果没有配置,xFace则使用以xface_logo命名的launchImage

3. Push Notification

如果需要使用xFace的Push Notification扩展,请在ThirdParty的AppDelegate中添加如下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    self.runtime = [[XRuntime alloc] init];
    [self.window setRootViewController:self.runtime.appController];
    [self.window makeKeyAndVisible];

    if (launchOptions != nil){
        NSDictionary* remoteInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        if (remoteInfo) {
            application.applicationIconBadgeNumber = 0;
            [self.runtime performSelector:@selector(pushNotification:) withObject:remoteInfo afterDelay:5];
        }
    }

    return YES;
}

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 
{
    [self.runtime didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
    application.applicationIconBadgeNumber = 0;
    [self.runtime performSelector:@selector(pushNotification:) withObject:userInfo afterDelay:3];
}

4. Custom URL Scheme

如果ThirdParty启动xFace时,欲向xFace传递启动参数,请在XRuntime初始化后添加如下代码:

[self.runtime handleOpenURL:[url absoluteString]];

要求url符合RFC 1738规范

xFace启动参数含义请参考 启动参数说明

Scroll to top