本客服平台由提供产品服务

iOS通知推送

诸葛君发表于:2016年03月30日 18:32:56更新于:2016年07月08日 12:45:04

现在,您可以在我们的网站上使用其余推送平台的推送功能,目前支持友盟、个推、小米的推送服务。 在使用诸葛集成第三方推送之前,您需要按照其他推送平台的文档,集成好推送功能,然后需要根据不同的平台,设置不同的第三方推送。然后,按照以下步骤,设置第三方推送。

安装SDK

最简单的安装方式是使用CocoaPods

安装CocoaPod: gem install cocoapods项目目录下创建Podfile文件,并加入一行代码: pod 'Zhugeio'项目目录下执行pod install,CocoaPods会自动安装Zhuge SDK,并生成工作区文件*.xcworkspace,打开该工作区即可。

你也可以直接下载来安装

下载SDK: 把Zhuge目录拖拽到项目中 安装所有依赖:UIKitFoundationSystemConfigurationCoreTelephonyAccelerateCoreGraphicsQuartzCore

兼容性和ARC

诸葛SDK仅支持iOS 6.0以上系统,您需要使用Xcode 5和iOS 7.0及以上开发环境进行编译,如果您的版本较低,强烈建议升级。

诸葛SDK默认采用ARC,如果您的项目没有采用ARC,您需要在编译(Build Phases -> Compile Sources)时,为每个Zhuge文件标识为-fobj-arc

初始化

在集成诸葛SDK时,您首先需要用AppKey启动。Appkey是在官网上创建项目时生成。

    #import "Zhuge/Zhuge.h"
    - (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions: (NSDictionary *)launchOptions {
        [[Zhuge sharedInstance] startWithAppKey:@"Your App Key" 
                                launchOptions:launchOptions];
    }

如果您需要修改SDK的默认设置,如打开日志打印、设置版本渠道等时,一定要在startWithAppKey前执行。参考代码:

    Zhuge *zhuge = [Zhuge sharedInstance];
    // 打开SDK日志打印
    [zhuge.config setLogEnabled:YES]; // 默认关闭

    // 自定义渠道
    [zhuge.config setChannel:@"My App Store"]; // 默认是@"App Store"

    // 开启行为追踪
    [zhuge startWithAppKey:@"Your App Key" launchOptions:launchOptions];

设置第三方推送

使用第三方推送,请在合适的地方调用以下接口:

    [zhuge setThirdPartyPushUserId:@"第三方推送的用户ID" 
                        forChannel:ZG_PUSH_CHANNEL];

友盟

在- (void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken 中,调用如下代码:

    NSString *userID = [[[[deviceToken description] 
        stringByReplacingOccurrencesOfString: @"<" withString: @""]
        stringByReplacingOccurrencesOfString: @">" withString: @""]
        stringByReplacingOccurrencesOfString: @" " withString: @""];
    [[Zhuge sharedInstance] setThirdPartyPushUserId:userID 
                            forChannel:ZG_PUSH_CHANNEL_UMENG];

百度

在- (void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken{}中,调用[BPush registerDeviceToken:deviceToken]之后,调用如下代码:

    NSString *userID = [BPush getChannelId];
    [[Zhuge sharedInstance] setThirdPartyPushUserId:userID 
                            forChannel:ZG_PUSH_CHANNEL_BAIDU];

个推

示例:

    #pragma mark - GexinSdkDelegate
    - (void)GexinSdkDidRegisterClient:(NSString *)clientId
    {
        [[Zhuge sharedInstance] 
                setThirdPartyPushUserId:[_gexinPusher clientId] 
                forChannel:ZG_PUSH_CHANNEL_GETUI];
    }

信鸽

在- (void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken{}中,调用如下代码:

    NSString * deviceTokenStr = [XGPush registerDevice:deviceToken 
                successCallback:successBlock errorCallback:errorBlock];
    [[Zhuge sharedInstance] setThirdPartyPushUserId:deviceTokenStr 
                            forChannel:ZG_PUSH_CHANNEL_XINGE];

极光

在- (void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken{}中,调用[APService registerDeviceToken:deviceToken]之后,调用如下:

    NSString *registrationID =  [APService registrationID];
    [[Zhuge sharedInstance] setThirdPartyPushUserId:registrationID 
                            forChannel:ZG_PUSH_CHANNEL_JPUSH];

小米

可以参考如下代码进行设置:

    #pragma mark MiPushSDKDelegate
    - (void)miPushRequestSuccWithSelector:(NSString *)selector 
                                       data:(NSDictionary *)data
    {
        if ([data valueForKey:@"regid"]) {
            NSString *userID = [data valueForKey:@"regid"];
            [[Zhuge sharedInstance] setThirdPartyPushUserId:userID 
                                    forChannel:ZG_PUSH_CHANNEL_XIAOMI];
        }
    }

处理消息

在AppDelegate.m中,按如下处理:

    - (void)application:(UIApplication *)application 
            didReceiveRemoteNotification:(NSDictionary *)userInfo 
            fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))
            completionHandler{
        [[Zhuge sharedInstance] handleRemoteNotification:userInfo];
    }

    - (void)application:(UIApplication *)application 
            didReceiveRemoteNotification:(NSDictionary *)userInfo
    {
        [[Zhuge sharedInstance] handleRemoteNotification:userInfo];
    }
    您需要登录后才可以回复