我调用push v3接口报1011,我的调用验证就是appKey:masterSecret转成base64,报401

ios
标签: #<Tag:0x00007fb833fa7218>

(Qiyan Ios) #1
Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: unauthorized (401)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x610000425840> { URL: https://api.jpush.cn/v3/push } { status code: 401, headers {
    "Content-Type" = "application/json";
    Date = "Tue, 15 Nov 2016 01:12:05 GMT";
    Server = nginx;
} }, NSErrorFailingURLKey=https://api.jpush.cn/v3/push, com.alamofire.serialization.response.error.data=<7b226572 726f7222 3a207b22 6d657373 61676522 3a202241 75746865 6e206661 696c6564 222c2022 636f6465 223a2031 3030347d 7d0a>, NSLocalizedDescription=Request failed: unauthorized (401)}

#2

请仔细检查你的验证信息

https://docs.jiguang.cn/jpush/server/push/server_overview/#_1


(Qiyan Ios) #3
失败==Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x610000033300> { URL: https://api.jpush.cn/v3/push } { status code: 400, headers {
    "Content-Type" = "application/json";
    Date = "Tue, 15 Nov 2016 03:00:24 GMT";
    Server = nginx;
    "x-jpush-msgid" = "";
    "x-rate-limit-limit" = 600;
    "x-rate-limit-remaining" = 599;
    "x-rate-limit-reset" = 60;



   audience =     {
        alias = 82;
    };
    notification =     {
        alert = "\U60a8\U6709\U4e00\U6761\U65b0\U70b9\U8d5e";
        badge = 1;
        sound = "";
    };
    options =     {
        "apns_production" = False;
    };
    platform =     (
        ios,
        android
    );
}

我设置别名推送出现400,不设置别名广播的就是好的,我已经在登录前设置了别名,望能指导,


#4

请看客户端日志,是否有设置成功的标志 callback为0

或者服务端查询,是否绑定成功
https://docs.jiguang.cn/jpush/server/push/rest_api_v3_device/


(Qiyan Ios) #5

这个我找到问题了,没有推送声音怎么回事啊,我没设,说iOS7是默认,我设置后也是没声音,望解答下,不要给我文档链接了,麻烦分析下实际情况帮我解答下,


#6

如何正确设置自定义声音和声音无故消失的排查

这种事情自然是你根据总结好的文档先来进行排查,你的一句话并不能给我提供详细的实际情况,你要我不给你总结好的文档,拿我也只能一步步的问你哪个地方设置了没,更浪费时间。

如果你根据文档里面所说的情况设置还有问题,就把你设置好的信息通通提供一下,这样才能给你直接找到问题所在。


(Qiyan Ios) #7
{
    audience =     {
        alias =         (
            82
        );
    };
    notification =     {
        ios =         {
            alert = "\U60a8\U6709\U4e00\U6761\U65b0\U70b9\U8d5e";
            badge = "+1";
            sound = "sound.caf";
        };
    };
    options =     {
        "apns_production" = False;
    };
    platform =     (
        ios,
        android
    );
}

刚才的问题解决了,我现在让badge+1这样设有问题没,现在的问题不自动加一,用的最新 v3接口


#8

badge说明: iOS点击通知进入应用以后角标怎么清空
jpush服务端说明:
1、推送iOS通知的时候可以直接指定badge的具体值,iOS客户端后台收到后icon会直接显示该值;
2、除了传具体值,还可以传"+1",下发前会在你上次收到的badge值的基础上自动+1,再下发,如果想重置+1的起始值可以在客户端调用jpush官方接口设置。

客户端要和服务端配合
要实现+1,应该先上报一个+1的初始值。


(Qiyan Ios) #9

{
“_j_msgid” = 6731263053;
aps = {
alert = “\U60a8\U6709\U4e00\U6761\U65b0\U70b9\U8d5e”;
badge = 1;
sound = “sound.caf”;
};
dreamId = 40;
}

iOS 10怎么解析 Dream ID这个字断,他是extras


#10


(Qiyan Ios) #11

iOS 10的取值怎么取,这样去不出来


(Qiyan Ios) #12
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler
{
   NSDictionary * userInfo = notification.request.content.userInfo;
    
    UNNotificationRequest *request = notification.request; // 收到推送的请求
    UNNotificationContent *content = request.content; // 收到推送的消息内容
    
    NSNumber *badge = content.badge;  // 推送消息的角标
    NSString *body = content.body;    // 推送消息体
    UNNotificationSound *sound = content.sound;  // 推送消息的声音
    NSString *subtitle = content.subtitle;  // 推送消息的副标题
    NSString *title = content.title;  // 推送消息的标题    
    NSString* cc=userInfo[@"dreamId"];

#13

你确定用那个取extra的方法取不出来?

iOS的通知消息需要你点击了通知栏之后才能取到内容的。


(Hedgehog Embrace。) #14

请问 您是怎么解决1011 的问题? 下面是我用afnetworking post请求的参数,和返回的错误信息。麻烦看一下,给点意见。 是不是要设置个Authorization? 怎么设置? alias在web端推送过,是成功的。

parameters:["notification": ["ios": ["extras": ["newsid": ""], "alert": "Hi, JPush!"], "android": ["alert": "Hi, JPush!"]], "options": ["apns_production": false], "platform": ["ios"], "audience": ["alias": "546"]]

Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x1700344e0> { URL: https://api.jpush.cn/v3/push } { status code: 400, headers {
    "Content-Type" = "application/json";
    Date = "Tue, 07 Mar 2017 07:22:23 GMT";
    Server = nginx;
    "x-jpush-msgid" = "";
    "x-rate-limit-limit" = 600;
    "x-rate-limit-remaining" = 599;
    "x-rate-limit-reset" = 60;
} }, NSErrorFailingURLKey=https://api.jpush.cn/v3/push, com.alamofire.serialization.response.error.data=<7b226572 726f7222 3a207b22 6d657373 61676522 3a20224d 69737369 6e672070 6172616d 65746572 222c2022 636f6465 223a2031 3030327d 7d>, NSLocalizedDescription=Request failed: bad request (400)}

#15

这个看一下文档


(Hedgehog Embrace。) #16

文档都看过了http头 都按说的加了,不知道是不是base64加密格式每种都试过。一样的结果

        manager.requestSerializer.setValue("application/json", forHTTPHeaderField: "Content-Type")
      
        let plainString = "\(AuthorizationEnum.JPush_AppKey):\(AuthorizationEnum.Jpush_Master_Secret)"
        let plainData = plainString.data(using: String.Encoding.utf8)
        let base64String = plainData?.base64EncodedString(options: .endLineWithLineFeed)
        manager.requestSerializer.setValue("Basic " + base64String!, forHTTPHeaderField: "Authorization")

#17

你参考一下这个:

建议使用官方的服务端SDK
地址


(Hedgehog Embrace。) #18

我这是iOS,是否有没有相关例子呢?按理是跟上面的一个样设置的。


#19

iOS?什么意思,这个接口是服务端调用的,你要在客户端调用?


(Hedgehog Embrace。) #20

对 有没有可以在客户端调用的接口? 可以向极光服务器发推送请求。