バグ #1698

久保 健太6年以上前に更新

フォローした側→cWT2XRmvYp
フォローされた側→5JmRyhYtIH

・プッシュ送信時のJSON
・Android
{"action":"jp.ihearts.coslab.followed","aps":{"alert":"赤坂優太さんにフォローされました"},"target":"cWT2XRmvYp"}

・iOS
{"target":"5JmRyhYtIH","aps":{"alert":"赤坂優太さんがフォローしました"},"action":"jp.ihearts.coslab.followed"}

Android・iOSは「target」に設定されているユーザーのプロフィールを開くように実装している。
Androidから打たれるプッシュ通知の「target」にはフォローした側のObjectIdが入っているが、
iOSから打たれるプッシュ通知の「target」にはフォローされた側のObjectIdが入っている

・Android
<pre>
public static void sendFollowRequestParsePush(Activity activity, final CustomUser targetUser){
if(ParseUser.getCurrentUser()==null){
return;
}
CustomUser user=(CustomUser)ParseUser.getCurrentUser();

JSONObject data = null;
String msg = user.getHandleName() + activity.getString(R.string.text_push_accept_follow);

try {
data = new JSONObject("{\"action\": \"jp.ihearts.coslab.followed\", \"aps\" : {\"alert\" : \"" + msg + "\"}, \"target\": \"" + user.getObjectId() + "\" }");
} catch (JSONException e) {
e.printStackTrace();
}

if(data!=null) {
ParseAccessor.sendClientPush(targetUser.getObjectId(), msg, data.toString(), new FunctionCallback<List<ParseObject>>() {
@Override
public void done(List<ParseObject> object, ParseException e) {
if (e != null) {
e.printStackTrace();
}
}
});
}

public static void sendClientPush(String target, String message, String data, FunctionCallback<List<ParseObject>> callback) {
HashMap<String, Object> params = new HashMap<>();
params.put("target", target);
params.put("message", message);
params.put("data", data);

Log.d("send", "sendClientPush");

ParseCloud.callFunctionInBackground("sendClientPush", params, callback);

}
</pre>

・iOS
<pre>
func sendPushFollow(receiverObjId: String) {
var param = [String: String]()
param["action"] = "jp.ihearts.coslab.followed"
param["target"] = receiverObjId

let pushMsg = String(format: NSLocalizedString("USERFOLLOW_FOLLOWED", comment: ""), IHUser.currentUserName())
let aDriver = IHParseDriver.instance()
aDriver.sendPushNotification(param, text: pushMsg)
}

private func sendPushNotification(_ param: [String: String], text: String, callFuncName: String = "sendClientPush") {
var param = param

var dic = [String : AnyObject]()
var dic2 = [String : String]()
dic2["alert"] = text
dic["aps"] = dic2 as AnyObject
for (key,val) in param {
dic[key ] = val as AnyObject
}

do {
// Dict -> JSON
let jsonData = try JSONSerialization.data(withJSONObject: dic, options: []) //(*)options??
param["data"] = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue)! as String
} catch {
print("Error!: \(error)")
}


PFCloud.callFunction(inBackground: callFuncName, withParameters: param as [AnyHashable: Any]) {
result, error in

if error != nil {

} else {

}
}
}
</pre>

戻る