Zacząłem korzystać z usługi aplikacji Azure w tym miesiącu, przed usługą App korzystałem z usług Azure Mobile, a token urządzenia rejestracyjnego z tagami jest dość prosty, ale w usłudze aplikacji zdałem sobie sprawę, że został usunięty z powodu problemów związanych z bezpieczeństwem, więc muszę to zrobić za pomocą niestandardowego interfejsu API.Rozwiązywanie problemów z usługą Azure App Service Rejestracja powiadomienia push przy użyciu znaczników w iOS
Używam niestandardowego uwierzytelniania (nie jest to usługa uwierzytelniania błękitnego (z powodu mojego klienta tego nie chce)) z moją bazą danych, więc muszę ustawić identyfikator użytkownika jako znacznik do wysyłania powiadomień do określonego użytkownika. w obliczu problemu, że nawet jeśli urządzenie żeton rejestracja jest OK (mogę wysłać impuls do wszystkich bez tagów) znaczniki nie pracuje, ja po tych blogach
Moje niestandardowe API (updateNotification.js)
var api = {
get: (request,response,next) => {
var push = request.azureMobile.push;
var installationId = request.query.id;
push.getInstallation(installationId, function(error, installation, res){
if (error){
console.log('An error occurred when retrieving installation : ' + error);
response.status(error.statusCode).send(error.detail);
}
else{
// Return an array of current tags.
response.json(installation.tags);
}
});
},
post: (request, response, next) => {
var push = request.azureMobile.push;
var installationId = request.query.id;
var tags = request.query.userID;
var updateOperation = [{
"op": "add",
"path": "/tags",
"value": tags.toString()
}];
push.patchInstallation(installationId, updateOperation, function(error, res){
if(error){
console.log(error)
response.status(error.statusCode).send(error.detail);
}
else{
console.log("Success");
console.log("Tags : " + tags);
response.status(200).send(tags);
}
});
}
};
module.exports = api;
W mojej klasie AppDelegate.swift robiłem to
func application(application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
let keychain = KeychainSwift()
let id : NSString = keychain.get("userID")! as String
let client = MSClient(applicationURLString: "https://XXXX.XXXX.XXX")
var deviceTokenString = "\(deviceToken)"
deviceTokenString = deviceTokenString.stringByReplacingOccurrencesOfString("<", withString: "")
deviceTokenString = deviceTokenString.stringByReplacingOccurrencesOfString(">", withString: "")
deviceTokenString = deviceTokenString.stringByReplacingOccurrencesOfString(" ", withString: "-")
client.push?.registerDeviceToken(deviceToken, completion: { (error) in
if let err = error {
print("ERROR ", err)
}else{
client.invokeAPI("updateNotification", body: nil, HTTPMethod: "Post", parameters: ["id" : deviceTokenString , "userID" : id], headers: nil) { (result, response, error) in
if response?.statusCode != 200 {
NSLog("ERROR %@", error!)
} else {
print("Tags Successfully Implemented")
}
}
}
})
}
Wszystko wydaje się w porządku teraz, w moim konsoli widzę mojego identyfikatora, moje urządzenie tokenu i identyfikator użytkownika jest tutaj tak (jestem wkładaniu X w środku: D Niestety do tego)
deviceToken = 22afedf6-a08f1ce9-xxxxxxxxx-XXXXXXXX-XXXXXXXX-XXXXXXX-db431577-2dfbbee1 identyfikator użytkownika = 88d06c97-XXXXXXXX XXXX-042215c46575
Jednak gdy próbowałem tej metody GET widzieć tagi identyfikator urządzenia,
client.invokeAPI("updateNotification", body: nil, HTTPMethod: "GET", parameters: ["id" : deviceTokenString], headers: nil) { (result, response, error) in
if response?.statusCode != 200 {
NSLog("ERROR %@", error!)
} else {
print(result)
}
}
ja dostaję ten błąd:
Błąd Domain = kod com.Microsoft.MicrosoftAzureMobile.ErrorDomain = -1302 " Instalacja nie found.TrackingId: 57239dd3-XXXX-XXXX-XXXX-0bd9579c660e_G1, timestamp: 18.07.2016 20:22:05”
Jak mogę rozwiązać ten komunikat o błędzie?
Could postępujesz zgodnie z [wytycznymi diagnostyki] (https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-push-notification-fixer/), a jeśli to nie pomoże, czy mógłbyś wydać repro wkleić tutaj pełny identyfikator śledzenia? (Nie ma w tym nic wrażliwego, to tylko losowy ciąg.) –
@NikitaG. tutaj jest mój identyfikator śledzenia c5c802bd-c94f-46f7-b87d-bddbe0e277d4_G6 – KBB