javascript - 无法从 Web(JavaScript) QuickBlox 发送推送通知
<p><p>我正在尝试使用 QuickBlox 推送通知 API 从 Web 后端 (JavaScript) 向 iOS 设备发送推送通知。我在 iOS 应用上创建了订阅,并尝试从 JavaScript 向订阅用户发送推送通知。</p>
<p>要订阅的iOS App代码如下:</p>
<pre><code>- (void)loginAndConnectToChatQBUserWithLoginName:(NSString *)loginName password:(NSString *)password{
isConnecting = YES;
QBUUser *user = [ init];
user.login = loginName;
user.password = password;
__weak typeof(self) weakSelf = self;
//Authenticate user
[QBRequest logInWithUserLogin:user.login password:user.password successBlock:^(QBResponse * _Nonnull response, QBUUser * _Nullable user) {
NSLog(@"Logged in");
;
.currentUser = user;
user.password = password;
[QBChat.instance connectWithUser:user completion:^(NSError * _Nullable error) {
if (QBChat.instance.isConnected) {
NSLog(@"chat is connected");
}
else{
NSLog(@"chat not connected");
}
isConnecting = NO;
}];
} errorBlock:^(QBResponse * _Nonnull response) {
// Handle error here
NSLog(@"Unable to connect");
isConnecting = NO;
}];
}
- (void)registerForRemoteNotifications{
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
if ([ respondsToSelector:@selector(registerUserNotificationSettings:)]) {
[ registerUserNotificationSettings:];
[ registerForRemoteNotifications];
}
else{
[ registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
}
#else
[ registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
#endif
}
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
NSString *deviceIdentifier = [[ identifierForVendor] UUIDString];
QBMSubscription *subscription = ;
subscription.notificationChannel = QBMNotificationChannelAPNS;
subscription.deviceUDID = deviceIdentifier;
subscription.deviceToken = deviceToken;
[QBRequest createSubscription:subscription successBlock:^(QBResponse *response, NSArray *objects) {
//Subscription Successfull
NSLog(@"Subscription Successfull.");
} errorBlock:^(QBResponse *response) {
//Subscription Failure
}];
}
</code></pre>
<p>创建订阅成功响应如下:</p>
<pre><code>, status: 201
</code></pre>
<p>从 JavaScript 发送推送通知的代码如下:</p>
<pre><code>var pushCustomParams = {
message: 'Message received from Bob',
ios_badge: 1,
ios_sound: 'mysound.wav', //Sound File name
user_id: '234', //Caller User ID
}
var params = {
notification_type: 'push',
user: {ids: }, // recipients.
environment: 'development', // environment, can be 'production' as well.
message: QB.pushnotifications.base64Encode(JSON.stringify(pushCustomParams))
};
QB.pushnotifications.events.create(params, function(err, response) {
if (err) {
console.log(err);
} else {
// success
}
});
</code></pre>
<p>在创建事件时我一直收到错误:</p>
<pre><code> create Object { notification_type:"push", user:Object,environment:"development",message:"ey....."}
Request: POST Object {data:"{"url":"https://api.quickblox.com/e.."}
ajax error 401 Unauthorized {"errors" : ["Token is required"]}
Object {code:401, status:"error", message:"Unauthorized", detail:"{errors"["Token is required"]}"}
</code></pre>
<p>请建议我在代码中做错了什么。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>为了发送推送,您必须充当用户</p>
<p>为此,您必须与用户创建 session </p>
<p>所以你的代码应该是这样的:</p>
<pre><code>var params = {login: 'garry', password: 'garry5santos'};
QB.createSession(params, function(err, result) {
if(!err){
// send a push code
}
});
</code></pre></p>
<p style="font-size: 20px;">关于javascript - 无法从 Web(JavaScript) QuickBlox 发送推送通知,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/36308353/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/36308353/
</a>
</p>
页:
[1]