友盟消息推送

博主也是第一次使用友盟消息推送,其中的配置我也不需要多讲,在这里附上iOS客户端友盟消息推送的集成文档,并讲讲个人使用心得

iOS友盟消息推送集成文档

这里既有集成文档的讲解步骤,还有证书配置的指南,只需要按照步骤集成即可。

1、配置服务器地址

友盟消息推送后台:适配iOS9,在info.plist文件中按截图配置

以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求。目前可用如下两种方式保持用HTTP进行网络连接:

A、在info.plist中加入安全域名白名单(右键info.plist用source code打开)

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>msg.umengcloud.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

注:msg.umengcloud.com是友盟服务器的地址。

B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

公司API接口后台消息推送:

在博主标记之处天上请求后台的URL地址即可

2、创建应用,在这里,上传证书时一定要按照文档上的步骤来执行,一般在iOS客户端的开发环境下进行消息推送测试,如果能够获取 Device Token 了,而是用友盟消息后台发送消息失败那就只有证书原因了。

3、推送使用(具体参考友盟官方文档)

请先在友盟的消息推送管理后台中创建App,获得AppKey和AppSecret

  • 导入SDK

    • 下载 UMessage_Sdk_All_x.x.x.zip并解压缩
    • 导入插件

    所需SDK文件夹:UMessage_Sdk_x.x.x

    请在你的工程目录结构中,右键选择Add->Existing Files…,选择这个文件夹。或者将这个文件夹拖入XCode工程目录结构中,在弹出的界面中勾选Copy
    items into destination group‘s folder(if needed)
    , 并确保Add To Targets勾选相应的target。

  • 配置(可选)
    • SDK采用ARC管理内存,非ARC项目也是默认支持,如遇问题,请联系我们
    • 如果您使用了-all_load,可能需要添加libz的库:

      TARGETS-->Build
      Phases
      -->Link Binary With Libraries--> + -->libz.dylib

    说明

    SDK支持iOS 4.3+

  • 添加代码

    打开*AppDelegate.m,依次按照以下步骤集成:

    • didFinishLaunchingWithOptions中的设置:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    //set AppKey and AppSecret
    [UMessage startWithAppkey:@"your appkey" launchOptions:launchOptions];

    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_    if(UMSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))    {        //register remoteNotification types (iOS 8.0及其以上版本)        UIMutableUserNotificationAction *action1 = [[UIMutableUserNotificationAction alloc] init];        action1.identifier = @"action1_identifier";        [email protected]"Accept";        action1.activationMode = UIUserNotificationActivationModeForeground;//当点击的时候启动程序

UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init];  //第二按钮        action2.identifier = @"action2_identifier";        [email protected]"Reject";        action2.activationMode = UIUserNotificationActivationModeBackground;//当点击的时候不启动程序,在后台处理        action2.authenticationRequired = YES;//需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;        action2.destructive = YES;

UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];        categorys.identifier = @"category1";//这组动作的唯一标示        [categorys setActions:@[action1,action2] forContext:(UIUserNotificationActionContextDefault)];

UIUserNotificationSettings *userSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert                                                                                     categories:[NSSet setWithObject:categorys]];        [UMessage registerRemoteNotificationAndUserNotificationSettings:userSettings];

} else{        //register remoteNotification types (iOS 8.0以下)        [UMessage registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge         |UIRemoteNotificationTypeSound         |UIRemoteNotificationTypeAlert];    }#else

//register remoteNotification types (iOS 8.0以下)    [UMessage registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge     |UIRemoteNotificationTypeSound     |UIRemoteNotificationTypeAlert];

#endif    //for log    [UMessage setLogEnabled:YES];

return YES;}

  • didRegisterForRemoteNotificationsWithDeviceToken中设置
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    [UMessage registerDeviceToken:deviceToken];
}

  • didReceiveRemoteNotification中设置
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UMessage didReceiveRemoteNotification:userInfo];
}

说明

如需关闭推送,请使用[UMessage unregisterForRemoteNotifications]

#pragma mark - APP接收到远程推送

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary
*)userInfo

{

XNLog(@"收到新消息");

//[UMessage didReceiveRemoteNotification:userInfo];

//发送推送

[[NSNotificationCenterdefaultCenter]postNotificationName:noti_refreshMsgByDidReceiveRemoteNotiobject:niluserInfo:nil];

}

// 在 iOS8系统中,还需要添加这个方法。通过新的 API注册推送服务

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings
*)notificationSettings

{

[application
registerForRemoteNotifications];

}

//获取deviceToken

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData
*)deviceToken

{

[UMessageregisterDeviceToken:deviceToken];

}

// 当 DeviceToken获取失败时,系统会回调此方法

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError
*)error

{

NSLog(@"DeviceToken获取失败,原因:%@",error);

}

4、添加测试设备,进入友盟消息后台,友盟消息后台

通过获取deviceToken

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

[UMessage registerDeviceToken:deviceToken];

}

5、发送测试消息

在开发环境之下,发送给所有人就是给添加过Device Token的测试设备进行发送消息;单播就是给特定的Device Token 发送消息

6、手机配置设置

通知—需要推送的APP— (按照自己的喜好设置,之前博主是因为开启了  “在锁定屏幕上显示“ ,所以发送消息之后一直接收不到,在锁屏上才能看到,去设置关闭之后,就能收到,要特别注意啊!)

在手机上查看,还可设置角标,点击通知就可进入发送通知消息的APP中

博主在这里附上两篇文章参考

http://bbs.umeng.com/thread-6191-1-1.html

http://bbs.umeng.com/thread-9355-1-1.html

时间: 2024-12-28 01:06:35

友盟消息推送的相关文章

.NET手记-友盟消息推送服务器端加密算法的实现

最近为App开发消息推送功能,这里我们采用了友盟的消息推送服务,但其后台简陋,可定制化程度低,所以决定接入服务器端API,在自己的服务器上部署一套推送服务. 其中涉及到很多问题,首先要解决的就是与友盟服务器的加密验证问题. 官方示例 友盟官方的加密算法使用Python实现的,核心是MD5算法,如下: import hashlib import json def md5(s): print s m = hashlib.md5(s) return m.hexdigest() appkey = '你的

友盟消息推送新版 SDK 为什么要支持多包名推送?

友盟消息推送 Android SDK 升级至 v 1.4.1 版本了!那问题来了,v 1.4.1 版本有什么新功能呢? “支持多包名推送”!新版 SDK 下载地址 开发者都知道,对于各种 Android 应用,特别是 Android 游戏而言,针对不同的渠道定制版本.使用不同的包名是运营中常见的一环,但是这样会导致后续使用消息推送时工作量过大,每个包都要单独推送,费时费力,还难以做到精准推送,效率低下……在不改变使用多包名的现状下,该如何提升消息推送效率? 友盟消息推送团队新推出的“多包名推送”

友盟消息推送安卓文档、 python端sdk、demo代码

一,友盟消息推送python服务端sdk地址和文档地址 1.sdk地址:http://dev.umeng.com/system/resources/W1siZiIsIjIwMTYvMDgvMTkvMTdfNDFfMzhfNzg2X3B1c2hfc2VydmVyX3B5c2RrLnppcCJdXQ/push-server-pysdk.zip 2.文档:http://dev.umeng.com/push/android/api-doc 二.python官方sdk代码中的错误(没错!官方代码有错.)

thinkphp整合系列之友盟消息推送

上篇文章 thinkphp集成系列之phpmailer批量发送邮件讲过的: 邮件有着零成本.内容丰富的优点: 但是一个非常硬的硬伤:这家伙的及时性太差了: 尤其是随着90.00后的崛起:从上网开始体验的就是QQ.微信的即时通讯: 唯一有的邮箱也还是自动开通的QQ邮箱:然而还是一连串的未读: 那么有木有一种零成本.但是及时性比较好的方案呢? 有的:那就是消息推送:当然:前提是用户已经安装了app: 今个先就友盟的推送来讲解下:http://push.umeng.com/ 依然是以开源项目示例:ht

【转载自友盟消息推送iOS文档】在appDelegate中注册推送

1.2   基本功能集成指南 提示 请先在友盟的消息推送管理后台中创建App,获得AppKey和AppSecret 导入SDK 下载 UMessage_Sdk_All_x.x.x.zip并解压缩 导入插件 所需SDK文件夹:UMessage_Sdk_x.x.x 请在你的工程目录结构中,右键选择Add->Existing Files…,选择这个文件夹.或者将这个文件夹拖入XCode工程目录结构中,在弹出的界面中勾选Copy items into destination group's folder

友盟消息推送(一)

最近项目打算做推送功能,最后选择了友盟推送,集成友盟sdk,非常的方便. 第一步: 首先登陆友盟官网,注册友盟账号 然后选择消息推送模块,(因为该项目只做推送功能) 第二部: 添加应用:分ios和安卓两个应用,选择ios客户端,完善信息 完善后的信息截图如下:这一步是获取AppKey和        应用名保持和你做的项目一致. 点击提交并获取AppKey. 每个项目的AppKye是唯一的,在集成sdk时将AppKey集成到项目中,如图 接下就设置消息的推送证书,可以参考友盟的证书设置指南非常的

友盟消息推送初试

注册与下载sdk略过,直接贴代码 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.monta.paopao" android:versionCode="1" android:versionName=

友盟消息推送UPush

第一步:把下载的SDK里面的PushSDK当做Module导入自己的项目 第二步:在自己项目的build.gradle里面一定要配置applicationId defaultConfig { applicationId "应用的包名" minSdkVersion 8 targetSdkVersion 22 } 第三步:在主module的build.gradle文件的dependencies下添加compile project(':PushSDK'). ompile project(':

友盟消息推送和更新XML配置

1 <receiver 2 android:name="com.umeng.message.NotificationProxyBroadcastReceiver" 3 android:exported="false" > 4 </receiver> 5 6 <receiver 7 android:name="com.umeng.message.RegistrationReceiver" > 8 <inte